Search in sources :

Example 1 with TaskID

use of org.apache.mesos.Protos.TaskID in project incubator-myriad by apache.

the class MyriadExecutor method killTask.

@Override
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)) {
        // 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);
    }
}
Also used : Protos(org.apache.mesos.Protos) TaskID(org.apache.mesos.Protos.TaskID) TaskStatus(org.apache.mesos.Protos.TaskStatus)

Example 2 with TaskID

use of org.apache.mesos.Protos.TaskID in project incubator-myriad by apache.

the class StoreContext method getTasks.

/**
 * De-serialize the internal ByteBuffers back into a Task map.
 *
 * @return
 */
public Map<Protos.TaskID, NodeTask> getTasks() {
    Map<Protos.TaskID, NodeTask> map = null;
    if (taskIds != null) {
        map = new HashMap<Protos.TaskID, NodeTask>(taskIds.size());
        int idx = 0;
        for (ByteBuffer bb : taskIds) {
            final Protos.TaskID taskId = ByteBufferSupport.toTaskId(bb);
            final NodeTask task = ByteBufferSupport.toNodeTask(taskNodes.get(idx++));
            if (task.getTaskPrefix() == null && taskId != null) {
                String taskPrefix = taskIdPattern.split(taskId.getValue())[0];
                task.setTaskPrefix(taskPrefix);
            }
            map.put(taskId, task);
        }
    } else {
        map = new HashMap<Protos.TaskID, NodeTask>(0);
    }
    return map;
}
Also used : TaskID(org.apache.mesos.Protos.TaskID) Protos(org.apache.mesos.Protos) TaskID(org.apache.mesos.Protos.TaskID) NodeTask(org.apache.myriad.state.NodeTask) ByteBuffer(java.nio.ByteBuffer)

Example 3 with TaskID

use of org.apache.mesos.Protos.TaskID in project incubator-myriad by apache.

the class SchedulerStateTest method testMakeTestPending.

@Test
public void testMakeTestPending() throws Exception {
    SchedulerState sState = initialize();
    TaskID idOne = TaskID.newBuilder().setValue("Task1").build();
    TaskID idTwo = TaskID.newBuilder().setValue("Task2").build();
    sState.makeTaskPending(idOne);
    sState.makeTaskPending(idTwo);
    assertEquals(2, sState.getPendingTaskIds().size());
    assertTrue(sState.getPendingTaskIds().contains(idOne));
    assertTrue(sState.getPendingTaskIds().contains(idTwo));
}
Also used : TaskID(org.apache.mesos.Protos.TaskID) Test(org.junit.Test) BaseConfigurableTest(org.apache.myriad.BaseConfigurableTest)

Example 4 with TaskID

use of org.apache.mesos.Protos.TaskID in project incubator-myriad by apache.

the class SchedulerStateTest method testMakeTestKillable.

@Test
public void testMakeTestKillable() throws Exception {
    SchedulerState sState = initialize();
    TaskID idOne = TaskID.newBuilder().setValue("Task1").build();
    TaskID idTwo = TaskID.newBuilder().setValue("Task2").build();
    sState.makeTaskKillable(idOne);
    sState.makeTaskKillable(idTwo);
    assertEquals(2, sState.getKillableTaskIds().size());
    assertTrue(sState.getKillableTaskIds().contains(idOne));
    assertTrue(sState.getKillableTaskIds().contains(idTwo));
}
Also used : TaskID(org.apache.mesos.Protos.TaskID) Test(org.junit.Test) BaseConfigurableTest(org.apache.myriad.BaseConfigurableTest)

Example 5 with TaskID

use of org.apache.mesos.Protos.TaskID in project elastic-job by dangdangdotcom.

the class TaskExecutorTest method assertKillTask.

@Test
public void assertKillTask() {
    TaskID taskID = Protos.TaskID.newBuilder().setValue("task_id").build();
    taskExecutor.killTask(executorDriver, taskID);
    verify(executorDriver).sendStatusUpdate(Protos.TaskStatus.newBuilder().setTaskId(taskID).setState(Protos.TaskState.TASK_KILLED).build());
}
Also used : TaskID(org.apache.mesos.Protos.TaskID) Test(org.junit.Test)

Aggregations

TaskID (org.apache.mesos.Protos.TaskID)12 Test (org.junit.Test)8 BaseConfigurableTest (org.apache.myriad.BaseConfigurableTest)7 Protos (org.apache.mesos.Protos)2 TaskStatus (org.apache.mesos.Protos.TaskStatus)2 NodeTask (org.apache.myriad.state.NodeTask)2 ByteBuffer (java.nio.ByteBuffer)1 Status (org.apache.mesos.Protos.Status)1 TaskState (org.apache.mesos.Protos.TaskState)1