Exemple #1
0
  private void finishableStateUpdated(TaskWrapper taskWrapper, boolean newFinishableState) {
    synchronized (lock) {
      if (taskWrapper.isInWaitQueue()) {
        // Re-order the wait queue
        LOG.debug(
            "Re-ordering the wait queue since {} finishable state moved to {}",
            taskWrapper.getRequestId(),
            newFinishableState);
        if (waitQueue.remove(taskWrapper)) {
          // Put element back only if it existed.
          waitQueue.offer(taskWrapper);
        } else {
          LOG.warn(
              "Failed to remove {} from waitQueue",
              taskWrapper.getTaskRunnerCallable().getRequestId());
        }
      }

      if (newFinishableState == true && taskWrapper.isInPreemptionQueue()) {
        LOG.debug(
            "Removing {} from preemption queue because it's state changed to {}",
            taskWrapper.getRequestId(),
            newFinishableState);
        preemptionQueue.remove(taskWrapper.getTaskRunnerCallable());
      } else if (newFinishableState == false
          && !taskWrapper.isInPreemptionQueue()
          && !taskWrapper.isInWaitQueue()) {
        LOG.debug(
            "Adding {} to preemption queue since finishable state changed to {}",
            taskWrapper.getRequestId(),
            newFinishableState);
        preemptionQueue.offer(taskWrapper);
      }
      lock.notify();
    }
  }
Exemple #2
0
 @Override
 public Set<String> getExecutorsStatus() {
   Set<String> result = new HashSet<>();
   StringBuilder value = new StringBuilder();
   for (Map.Entry<String, TaskWrapper> e : knownTasks.entrySet()) {
     value.setLength(0);
     value.append(e.getKey());
     TaskWrapper task = e.getValue();
     boolean isFirst = true;
     TaskRunnerCallable c = task.getTaskRunnerCallable();
     if (c != null && c.getRequest() != null && c.getRequest().getFragmentSpec() != null) {
       FragmentSpecProto fs = c.getRequest().getFragmentSpec();
       value
           .append(isFirst ? " (" : ", ")
           .append(fs.getDagName())
           .append("/")
           .append(fs.getVertexName());
       isFirst = false;
     }
     value.append(isFirst ? " (" : ", ");
     if (task.isInWaitQueue()) {
       value.append("in queue");
     } else if (c != null) {
       long startTime = c.getStartTime();
       if (startTime != 0) {
         value.append("started at ").append(sdf.get().format(new Date(startTime)));
       } else {
         value.append("not started");
       }
     } else {
       value.append("has no callable");
     }
     if (task.isInPreemptionQueue()) {
       value.append(", ").append("preemptable");
     }
     value.append(")");
     result.add(value.toString());
   }
   return result;
 }