public void killTask()

in myriad-executor/src/main/java/org/apache/myriad/executor/MyriadExecutor.java [72:107]


  public void killTask(ExecutorDriver driver, TaskID taskId) {
    String taskIdString = taskId.toString();
    LOGGER.debug("killTask received for taskId: " + taskIdString);
    TaskStatus status;

    if (!taskIdString.contains(MyriadExecutorAuxService.YARN_CONTAINER_TASK_ID_PREFIX)) {
      // Inform mesos of killing all tasks corresponding to yarn containers that are
      // currently running 
      synchronized (containerIds) {
        for (String containerId : containerIds) {
          Protos.TaskID containerTaskId = Protos.TaskID.newBuilder().setValue(
              MyriadExecutorAuxService.YARN_CONTAINER_TASK_ID_PREFIX + containerId).build();
          status = TaskStatus.newBuilder().setTaskId(containerTaskId).setState(TaskState.TASK_KILLED).build();
          driver.sendStatusUpdate(status);
        }
      }

      // Now kill the node manager task
      status = TaskStatus.newBuilder().setTaskId(taskId).setState(TaskState.TASK_KILLED).build();
      driver.sendStatusUpdate(status);
      LOGGER.info("NodeManager shutdown after receiving KILL_TASK for taskId {}", taskIdString);
      Runtime.getRuntime().exit(0);

    } else {
      status = TaskStatus.newBuilder().setTaskId(taskId).setState(TaskState.TASK_KILLED).build();
      driver.sendStatusUpdate(status);
      synchronized (containerIds) {
        //Likely the container isn't in here, but just in case remove it.
        if (containerIds.remove(taskIdString.substring(MyriadExecutorAuxService.YARN_CONTAINER_FULL_PREFIX.length(),
            taskIdString.length()))) {
          LOGGER.debug("Removed taskId {} from containerIds", taskIdString);
        }
      }
      LOGGER.debug("Killing " + taskId);
    }
  }