コード例 #1
0
 @Override
 public PreparedStatement getCreateStatement(Connection connection, Job job) throws SQLException {
   if (job == null || !(job instanceof PutFileRequest)) {
     throw new IllegalArgumentException("fr is not PutFileRequest");
   }
   PutFileRequest request = (PutFileRequest) job;
   TRetentionPolicy retentionPolicy = request.getRetentionPolicy();
   TAccessLatency accessLatency = request.getAccessLatency();
   return getPreparedStatement(
       connection,
       INSERT_SQL,
       request.getId(),
       request.getNextJobId(),
       request.getCreationTime(),
       request.getLifetime(),
       request.getState().getStateId(),
       request.getErrorMessage(),
       request.getSchedulerId(),
       request.getSchedulerTimeStamp(),
       0, // num of retries
       request.getLastStateTransitionTime(),
       request.getRequestId(),
       request.getStatusCodeString(),
       request.getSurlString(),
       request.getTurlString(),
       request.getFileId(),
       null, // parentFileId (unused)
       request.getSpaceReservationId(),
       request.getSize(),
       (retentionPolicy != null ? retentionPolicy.getValue() : null),
       (accessLatency != null ? accessLatency.getValue() : null));
 }
コード例 #2
0
 private PreparedStatement getStatement(Connection connection, String query, Job job)
     throws SQLException {
   PutFileRequest request = (PutFileRequest) job;
   TRetentionPolicy retentionPolicy = request.getRetentionPolicy();
   TAccessLatency accessLatency = request.getAccessLatency();
   return getPreparedStatement(
       connection,
       query,
       request.getNextJobId(),
       request.getCreationTime(),
       request.getLifetime(),
       request.getState().getStateId(),
       request.getErrorMessage(),
       request.getSchedulerId(),
       request.getSchedulerTimeStamp(),
       0, // num of retries
       request.getLastStateTransitionTime(),
       request.getRequestId(),
       request.getStatusCodeString(),
       request.getSurlString(),
       request.getTurlString(),
       request.getFileId(),
       null, // parentFileId (unused)
       request.getSpaceReservationId(),
       request.getSize(),
       (retentionPolicy != null ? retentionPolicy.getValue() : null),
       (accessLatency != null ? accessLatency.getValue() : null),
       request.getId());
 }
コード例 #3
0
ファイル: LsFileRequest.java プロジェクト: paulmillar/dcache
  @Override
  public synchronized void run() throws NonFatalJobFailure, FatalJobFailure {
    try {
      LsRequest parent = getContainerRequest();
      long t0 = 0;
      if (logger.isDebugEnabled()) {
        t0 = System.currentTimeMillis();
      }

      PutFileRequest request =
          Iterables.getFirst(SRM.getSRM().getActiveFileRequests(PutFileRequest.class, surl), null);
      if (request != null) {
        // [SRM 2.2, 4.4.3]
        //
        // SRM_FILE_BUSY
        //
        //     client requests for a file which there is an active
        //     srmPrepareToPut (no srmPutDone is yet called) request for.
        try {
          FileMetaData fmd = getStorage().getFileMetaData(getUser(), surl, request.getFileId());
          metaDataPathDetail =
              convertFileMetaDataToTMetaDataPathDetail(surl, fmd, parent.getLongFormat());
        } catch (SRMInvalidPathException e) {
          metaDataPathDetail = new TMetaDataPathDetail();
          metaDataPathDetail.setType(TFileType.FILE);
        }
        metaDataPathDetail.setPath(getPath(surl));
        metaDataPathDetail.setStatus(
            new TReturnStatus(
                TStatusCode.SRM_FILE_BUSY, "The requested SURL is locked by an upload."));
      } else {
        metaDataPathDetail =
            getMetaDataPathDetail(
                surl,
                0,
                parent.getOffset(),
                parent.getCount(),
                parent.getNumOfLevels(),
                parent.getLongFormat());
      }
      if (logger.isDebugEnabled()) {
        logger.debug("LsFileRequest.run(), TOOK " + (System.currentTimeMillis() - t0));
      }
      try {
        getContainerRequest().resetRetryDeltaTime();
      } catch (SRMInvalidRequestException ire) {
        logger.error(ire.toString());
      }
      setState(State.DONE, State.DONE.toString());
    } catch (SRMException | DataAccessException | URISyntaxException | IllegalStateTransition e) {
      wlock();
      try {
        TReturnStatus status;
        String msg = e.getMessage();
        if (e instanceof SRMInternalErrorException) {
          status = new TReturnStatus(TStatusCode.SRM_FAILURE, msg);
        } else if (e instanceof SRMTooManyResultsException) {
          status = new TReturnStatus(TStatusCode.SRM_TOO_MANY_RESULTS, msg);
        } else if (e instanceof SRMAuthorizationException) {
          status = new TReturnStatus(TStatusCode.SRM_AUTHORIZATION_FAILURE, msg);
        } else if (e instanceof SRMInvalidPathException) {
          status = new TReturnStatus(TStatusCode.SRM_INVALID_PATH, msg);
        } else if (e instanceof DataAccessException) {
          status = new TReturnStatus(TStatusCode.SRM_INTERNAL_ERROR, msg);
        } else {
          if (e instanceof RuntimeException) {
            logger.error(e.toString(), e);
          }
          status = new TReturnStatus(TStatusCode.SRM_FAILURE, msg);
        }
        metaDataPathDetail = new TMetaDataPathDetail();
        metaDataPathDetail.setPath(getPath(surl));
        metaDataPathDetail.setStatus(status);
        setStatusCode(status.getStatusCode());
        setState(State.FAILED, msg);
      } catch (IllegalStateTransition ist) {
        logger.error("Illegal State Transition : " + ist.getMessage());
      } finally {
        wunlock();
      }
    }
  }