Exemplo n.º 1
0
  public void turlArrived(
      String surl, String turl, String remoteRequestId, String remoteFileId, Long size) {
    synchronized (remoteSurlToFileReqIds) {
      Collection<Long> fileRequestIds = remoteSurlToFileReqIds.get(surl);
      if (fileRequestIds == null || fileRequestIds.isEmpty()) {
        LOG.error("turlArrived for unknown SURL = " + surl + " !!!!!!!");
        return;
      }
      for (long id : fileRequestIds) {
        CopyFileRequest cfr = getFileRequest(id);
        if (getQosPlugin() != null && cfr.getQOSTicket() != null) {
          getQosPlugin().sayStatus(cfr.getQOSTicket());
        }

        if (isSourceSrm() && !isSourceLocal()) {
          cfr.setSourceTurl(URI.create(turl));
        } else {
          cfr.setDestinationTurl(URI.create(turl));
        }
        if (size != null) {
          cfr.setSize(size);
        }
        cfr.setRemoteRequestId(remoteRequestId);
        cfr.setRemoteFileId(remoteFileId);
        cfr.saveJob();

        try {
          String theSchedulerId = getSchedulerId();
          State state = cfr.getState();
          if (theSchedulerId != null && !state.isFinal()) {
            cfr.scheduleWith(Scheduler.getScheduler(theSchedulerId));
          }
        } catch (IllegalStateException
            | IllegalArgumentException
            | IllegalStateTransition
            | InterruptedException e) {
          LOG.error("failed to schedule CopyFileRequest {}: {}", cfr, e.toString());
          try {
            cfr.setState(State.FAILED, "Failed to schedule request: " + e.getMessage());
          } catch (IllegalStateTransition ist) {
            LOG.error("Illegal State Transition : {}" + ist.getMessage());
          }
        }
        remoteSurlToFileReqIds.remove(surl, id);
      }
    }
  }