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);
}
}