@Override public Protos.TaskID newTaskID() throws Exception { Protos.TaskID taskID = Protos.TaskID.newBuilder().setValue(TASKID_FORMAT.format(++taskCount)).build(); return taskID; }
/** {@inheritDoc} */ @Override public synchronized void resourceOffers(SchedulerDriver schedulerDriver, List<Protos.Offer> offers) { log.log(Level.FINE, "Offers resources: {0}", offers.size()); for (Protos.Offer offer : offers) { IgniteTask igniteTask = checkOffer(offer); // Decline offer which doesn't match by mem or cpu. if (igniteTask == null) { schedulerDriver.declineOffer(offer.getId()); continue; } // Generate a unique task ID. Protos.TaskID taskId = Protos.TaskID.newBuilder() .setValue(Integer.toString(taskIdGenerator.incrementAndGet())).build(); log.log(Level.INFO, "Launching task: {0}", igniteTask); // Create task to run. Protos.TaskInfo task = createTask(offer, igniteTask, taskId); try { schedulerDriver.launchTasks(Collections.singletonList(offer.getId()), Collections.singletonList(task), Protos.Filters.newBuilder().setRefuseSeconds(1).build()); } catch (RuntimeException e) { log.log(Level.SEVERE, "Failed launch task. Task id: {0}. Task info: {1}", new Object[]{taskId, task, e}); throw e; } tasks.put(taskId.getValue(), igniteTask); } }
/** * Generates a new task ID. */ @Override public Protos.TaskID newTaskID() throws Exception { synchronized (startStopLock) { verifyIsRunning(); int nextCount; boolean success; do { ZooKeeperVersionedValue<Integer> count = totalTaskCountInZooKeeper.getVersionedValue(); nextCount = count.getValue() + 1; success = totalTaskCountInZooKeeper.trySetCount(count, nextCount); } while (!success); Protos.TaskID taskID = Protos.TaskID.newBuilder().setValue(TASKID_FORMAT.format(nextCount)).build(); return taskID; } }
private static List<Protos.TaskInfo> clearTaskIds(Collection<Protos.TaskInfo> taskInfos) { List<Protos.TaskInfo> outTaskInfos = new ArrayList<>(); for (Protos.TaskInfo restartTaskInfo : taskInfos) { outTaskInfos.add( Protos.TaskInfo.newBuilder(restartTaskInfo) .setTaskId(Protos.TaskID.newBuilder().setValue("")) .build()); } return outTaskInfos; }
private Protos.TaskInfo normalizeCassandraTaskInfo(CassandraDaemonTask daemonTask) { Protos.TaskInfo daemonTaskInfo = daemonTask.getTaskInfo(); Protos.ExecutorInfo expectedExecutorInfo = Protos.ExecutorInfo.newBuilder(daemonTaskInfo.getExecutor()) .setExecutorId(Protos.ExecutorID.newBuilder().setValue("")) .build(); daemonTaskInfo = Protos.TaskInfo.newBuilder(daemonTaskInfo) .setTaskId(Protos.TaskID.newBuilder().setValue("")) .setExecutor(expectedExecutorInfo) .build(); return daemonTaskInfo; }
private Protos.TaskStatus getTestTaskStatus() { return Protos.TaskStatus.newBuilder() .setTaskId(Protos.TaskID.newBuilder() .setValue(testTaskId) .build()) .setState(Protos.TaskState.TASK_RUNNING) .build(); }
@Override public Protos.TaskStatus apply(final TaskContext input) { return Protos.TaskStatus.newBuilder() .setTaskId(Protos.TaskID.newBuilder().setValue(input.getId()).build()) .setSlaveId(Protos.SlaveID.newBuilder().setValue(input.getSlaveId()).build()) .setState(Protos.TaskState.TASK_RUNNING).build(); } }));
@Test public void emptyTaskId() { verify(driver, never()).killTask(TestConstants.TASK_ID); TaskKiller.killTask(Protos.TaskID.newBuilder().setValue("").build()); verify(driver, never()).killTask(TestConstants.TASK_ID); TaskKiller.killAllTasks(); verify(driver, never()).killTask(TestConstants.TASK_ID); }
@Test(expected = StateStoreException.class) public void testStoreUnknownStatus() { // Store initial status as RUNNING store.storeStatus(TestConstants.TASK_NAME, TestConstants.TASK_STATUS); // Create status with unknown TaskID but the same task name Protos.TaskStatus status = TestConstants.TASK_STATUS.toBuilder() .setTaskId(Protos.TaskID.newBuilder().setValue(UUID.randomUUID().toString())) .build(); store.storeStatus(TestConstants.TASK_NAME, status); }
private static TaskInfo getTask(String id, Offer offer) { TaskInfo.Builder taskBuilder = TaskTestUtils.getTaskInfo(Collections.emptyList()).toBuilder(); taskBuilder.getTaskIdBuilder().setValue(id); try { taskBuilder.setName(CommonIdUtils.toTaskName(taskBuilder.getTaskId())); } catch (Exception e) { throw new IllegalStateException(e); } taskBuilder.setLabels(new TaskLabelWriter(taskBuilder).setOfferAttributes(offer).toProto()); return taskBuilder.build(); }
private static Protos.TaskInfo getTask(String id, Protos.Offer offer) { Protos.TaskInfo.Builder taskBuilder = TaskTestUtils.getTaskInfo(Collections.emptyList()).toBuilder(); taskBuilder.getTaskIdBuilder().setValue(id); try { taskBuilder.setName(CommonIdUtils.toTaskName(taskBuilder.getTaskId())); } catch (Exception e) { throw new IllegalStateException(e); } taskBuilder.setLabels(new TaskLabelWriter(taskBuilder).setHostname(offer).toProto()); return taskBuilder.build(); }
@SuppressWarnings("PMD.AvoidUsingHardCodedIP") private Protos.TaskStatus getFailedTaskStatus(String taskId) { return Protos.TaskStatus.newBuilder() .setState(Protos.TaskState.TASK_FAILED) .setTaskId(Protos.TaskID.newBuilder().setValue(taskId)) .setContainerStatus( Protos.ContainerStatus.newBuilder() .addNetworkInfos(Protos.NetworkInfo.newBuilder() .addIpAddresses(Protos.NetworkInfo.IPAddress.newBuilder() .setIpAddress("10.10.10.10")))) .build(); }
private static Protos.TaskInfo getTestTaskInfo() { return Protos.TaskInfo.newBuilder() .setName(testTaskName) .setTaskId(Protos.TaskID.newBuilder().setValue(testTaskId)) .setSlaveId(Protos.SlaveID.newBuilder().setValue(testAgentId)) .build(); } }
@Test public void testValidToTaskName() throws Exception { Protos.TaskID validTaskId = Protos.TaskID.newBuilder().setValue(TEST_TASK_NAME + "__id").build(); Assert.assertEquals(TEST_TASK_NAME, CommonIdUtils.toTaskName(validTaskId)); }
private Protos.TaskInfo buildCommandExecutorTaskInfo(final TaskContext taskContext, final CloudJobConfiguration jobConfig, final ShardingContexts shardingContexts, final Protos.Offer offer, final Protos.CommandInfo command) { Protos.TaskInfo.Builder result = Protos.TaskInfo.newBuilder().setTaskId(Protos.TaskID.newBuilder().setValue(taskContext.getId()).build()) .setName(taskContext.getTaskName()).setSlaveId(offer.getSlaveId()) .addResources(buildResource("cpus", jobConfig.getCpuCount(), offer.getResourcesList())) .addResources(buildResource("mem", jobConfig.getMemoryMB(), offer.getResourcesList())) .setData(ByteString.copyFrom(new TaskInfoData(shardingContexts, jobConfig).serialize())); return result.setCommand(command).build(); }
@Test public void testExtractTaskFromExtraElements() throws Exception { // Just in case, we support additional elements at the start of the id for future use. Protos.TaskID taskId = Protos.TaskID.newBuilder() .setValue("something-else__" + TEST_FOLDERED_SERVICE_NAME2 + "__" + TEST_TASK_NAME + "__uuid") .build(); Assert.assertEquals(TEST_TASK_NAME, CommonIdUtils.toTaskName(taskId)); Assert.assertEquals(TEST_FOLDERED_SERVICE_NAME2, CommonIdUtils.toSanitizedServiceName(taskId).get()); }
private static TaskInfo getTask(String type, String id, String agent) { TaskInfo.Builder taskBuilder = TaskTestUtils.getTaskInfo(Collections.emptyList()).toBuilder(); taskBuilder.getTaskIdBuilder().setValue(id); try { taskBuilder.setName(CommonIdUtils.toTaskName(taskBuilder.getTaskId())); } catch (Exception e) { throw new IllegalStateException(e); } taskBuilder.getSlaveIdBuilder().setValue(agent); taskBuilder.setLabels(new TaskLabelWriter(taskBuilder).setType(type).toProto()); return taskBuilder.build(); }
@Test public void testTaskLostNeedsRecovery() { Protos.TaskStatus.Builder taskStatusBuilder = Protos.TaskStatus.newBuilder() .setState(Protos.TaskState.TASK_LOST); taskStatusBuilder.getTaskIdBuilder().setValue(UUID.randomUUID().toString()); Assert.assertTrue(TaskUtils.isRecoveryNeeded(taskStatusBuilder.build())); }
private Protos.TaskInfo createTask(String hostname) throws InvalidProtocolBufferException { return Protos.TaskInfo.newBuilder() .setName("Test") .setTaskId(Protos.TaskID.newBuilder().setValue("TestId").build()) .setSlaveId(Protos.SlaveID.newBuilder().setValue(hostname).build()) .build(); }
private void sendStatusUpdate(SingularityExecutorTask task, Protos.TaskState taskState, String message) { executorUtils.sendStatusUpdate(task.getDriver(), TaskID.newBuilder().setValue(task.getTaskId()).build(), taskState, message, task.getLog()); }