task.getTaskId(), status.getTaskId()); repairedStatuses.put( task.getName(), status.toBuilder().setState(status.getState()).build()); } else if (!status.getTaskId().equals(task.getTaskId())) { LOGGER.warn( repairedTasks.add(task.toBuilder().setTaskId(status.getTaskId()).build()); repairedStatuses.put( task.getName(), status.toBuilder().setState(Protos.TaskState.TASK_FAILED).build()); task.getName(), task.getTaskId()); Protos.TaskStatus status = Protos.TaskStatus.newBuilder() .setTaskId(task.getTaskId()) .setState(Protos.TaskState.TASK_FAILED) .setMessage("Assuming failure for inconsistent TaskIDs") .build(); repairedStatuses.put(task.getName(), status);
.setTaskId(taskInfo.getTaskId()) .setState(Protos.TaskState.TASK_STAGING); if (taskInfo.hasExecutor()) { taskStatusBuilder.setExecutorId(taskInfo.getExecutor().getExecutorId()); taskStatus = Optional.of(taskStatusBuilder.build());
Protos.TaskStatus failed = Protos.TaskStatus .newBuilder() .setState(Protos.TaskState.TASK_FAILED) .setSlaveId(info.getSlaveId()) .setExecutorId(info.getExecutor().getExecutorId()) .setTaskId(info.getTaskId()) .setMessage(String.format("Task not implemented: type = %s", cassandraTask.getType())) .build(); driver.sendStatusUpdate(failed); logger.error(String.format("Task not implemented: type = %s", cassandraTask.getType()));
stateStore.storeStatus(taskName, Protos.TaskStatus.newBuilder() .setState(Protos.TaskState.TASK_RUNNING) .setTaskId(taskInfo.getTaskId()) .setLabels(Protos.Labels.newBuilder().addLabels(Protos.Label.newBuilder().setKey("readiness_check_passed").setValue("false").build()).build()) .build()); .setState(Protos.TaskState.TASK_RUNNING) .setTaskId(taskInfo.getTaskId()) .setLabels(Protos.Labels.newBuilder().addLabels(Protos.Label.newBuilder().setKey("readiness_check_passed").setValue("true").build()).build()) .build());
taskMap.put(taskInfo.getTaskId(), ecsTask.getTaskArn()); final Protos.TaskStatus taskStatus = Protos.TaskStatus.newBuilder() .setTaskId(taskInfo.getTaskId()) .setSlaveId(Protos.SlaveID.newBuilder().setValue(ecsTask.getContainerInstanceArn())) .setState(Protos.TaskState.TASK_RUNNING) .build(); scheduler.statusUpdate(this, taskStatus); .setTaskId(taskInfo.getTaskId()) .setSlaveId(Protos.SlaveID.newBuilder().setValue(failure.getArn())) .setState(Protos.TaskState.TASK_FAILED) .build(); scheduler.statusUpdate(this, taskStatus);
@Override public void launchTask(ExecutorDriver driver, TaskInfo task) { try { int port = _taskAssignments.register(task.getTaskId()); LOG.info("Executor {} received task assignment for port {}. Mesos TaskID: {}", _executorId, port, task.getTaskId().getValue()); } catch (IllegalArgumentException e) { String msg = String.format("launchTask: failed to register task. " + "Exception: %s Halting supervisor process.", e.getMessage()); LOG.error(msg); TaskStatus status = TaskStatus.newBuilder() .setState(TaskState.TASK_FAILED) .setTaskId(task.getTaskId()) .setMessage(msg) .build(); driver.sendStatusUpdate(status); Runtime.getRuntime().halt(1); } LOG.info("Received task assignment for TaskID: {} ", task.getTaskId().getValue()); TaskStatus status = TaskStatus.newBuilder() .setState(TaskState.TASK_RUNNING) .setTaskId(task.getTaskId()) .build(); driver.sendStatusUpdate(status); }
@Test public void testTaskIpIsUpdatedOnStatusUpdate() throws Exception { List<Protos.TaskID> taskIds = install(); String updateIp = "1.1.1.1"; // Verify the TaskIP (TaskInfo, strictly speaking) has been stored in the Persister. StateStore stateStore = new StateStore(persister); Assert.assertTrue(StateStoreUtils.getTaskStatusFromProperty( stateStore, TASK_A_POD_NAME + "-0-" + TASK_A_NAME).isPresent()); Assert.assertTrue(StateStoreUtils.getTaskStatusFromProperty( stateStore, TASK_B_POD_NAME + "-0-" + TASK_B_NAME).isPresent()); Protos.TaskStatus update = Protos.TaskStatus.newBuilder( getTaskStatus(taskIds.get(0), Protos.TaskState.TASK_STAGING)) .setContainerStatus(Protos.ContainerStatus.newBuilder() .addNetworkInfos(Protos.NetworkInfo.newBuilder() .addIpAddresses(Protos.NetworkInfo.IPAddress.newBuilder() .setIpAddress(updateIp)))) .build(); defaultScheduler.taskStatus(update); // Verify the TaskStatus was updated. Assert.assertEquals(updateIp, StateStoreUtils.getTaskStatusFromProperty( stateStore, TASK_A_POD_NAME + "-0-" + TASK_A_NAME).get() .getContainerStatus().getNetworkInfos(0).getIpAddresses(0).getIpAddress()); }
@Override public void run() { try { groomServer.run(); // Send a TASK_FINISHED status update. // We do this here because we want to send it in a separate thread // than was used to call killTask(). driver.sendStatusUpdate(TaskStatus.newBuilder() .setTaskId(task.getTaskId()).setState(TaskState.TASK_FINISHED) .build()); // Give some time for the update to reach the slave. try { Thread.sleep(2000); } catch (InterruptedException e) { LOG.error("Failed to sleep TaskTracker thread", e); } // Stop the executor. driver.stop(); } catch (Throwable t) { LOG.error("Caught exception, committing suicide.", t); driver.stop(); System.exit(1); } } }.start();
@Override public void run() { try { taskTracker.run(); // Send a TASK_FINISHED status update. // We do this here because we want to send it in a separate thread // than was used to call killTask(). driver.sendStatusUpdate(TaskStatus.newBuilder() .setTaskId(task.getTaskId()) .setState(TaskState.TASK_FINISHED) .build()); // Give some time for the update to reach the slave. try { Thread.sleep(2000); } catch (InterruptedException e) { LOG.error("Failed to sleep TaskTracker thread", e); } // Stop the executor. driver.stop(); } catch (Throwable t) { LOG.error("Caught exception, committing suicide.", t); driver.stop(); System.exit(1); } } }.start();