/** * @Deprecated use getSanitizedHost() or matchesOriginalHost() instead */ @Deprecated @Schema(description = "The hostname of the machine where this task was launched") public String getHost() { return getSanitizedHost(); }
private boolean hasTaskLeftOnSlave(SingularityTaskId taskId, String slaveId, SingularityLeaderCache stateCache) { for (SingularityTaskId activeTaskId : stateCache.getActiveTaskIds()) { if (!activeTaskId.equals(taskId) && activeTaskId.getSanitizedHost().equals(taskId.getSanitizedHost())) { Optional<SingularityTask> maybeTask = taskManager.getTask(activeTaskId); if (maybeTask.isPresent() && slaveId.equals(maybeTask.get().getAgentId().getValue())) { return true; } } } return false; }
public List<SingularityTask> getTasksOnSlave(Collection<SingularityTaskId> activeTaskIds, SingularitySlave slave) { final List<SingularityTask> tasks = Lists.newArrayList(); final String sanitizedHost = JavaUtils.getReplaceHyphensWithUnderscores(slave.getHost()); for (SingularityTaskId activeTaskId : activeTaskIds) { if (activeTaskId.getSanitizedHost().equals(sanitizedHost)) { Optional<SingularityTask> maybeTask = getTask(activeTaskId); if (maybeTask.isPresent() && slave.getId().equals(maybeTask.get().getAgentId().getValue())) { tasks.add(maybeTask.get()); } } } return tasks; }
public static String getS3KeyFormat(String s3KeyFormat, SingularityTaskId taskId, Optional<String> loggingTag, String group) { s3KeyFormat = getS3KeyFormat(s3KeyFormat, taskId.getRequestId(), taskId.getDeployId(), loggingTag, group); s3KeyFormat = s3KeyFormat.replace("%host", taskId.getSanitizedHost()); s3KeyFormat = s3KeyFormat.replace("%taskId", taskId.toString()); return s3KeyFormat; }
@Override protected void handleExpiringObject(SingularityExpiringMachineState expiringObject, SingularityMachineAbstraction machine, String message) { SingularitySlave slave = (SingularitySlave) machine; slaveManager.changeState(slave, expiringObject.getRevertToState(), Optional.of("Updated due to expiring action"), expiringObject.getUser()); if (expiringObject.isKillTasksOnDecommissionTimeout() && expiringObject.getRevertToState() == MachineState.DECOMMISSIONED) { List<SingularityTaskId> activeTasksIdsOnSlave = taskManager.getActiveTaskIds(); String sanitizedHost = JavaUtils.getReplaceHyphensWithUnderscores(slave.getHost()); long now = System.currentTimeMillis(); for (SingularityTaskId taskId : activeTasksIdsOnSlave) { if (taskId.getSanitizedHost().equals(sanitizedHost)) { taskManager.saveTaskCleanup(new SingularityTaskCleanup( expiringObject.getUser(), TaskCleanupType.DECOMMISSION_TIMEOUT, now, taskId, Optional.of(String.format("Slave decommission (started by: %s) timed out after %sms", expiringObject.getUser(), now - expiringObject.getStartMillis())), Optional.<String> absent(), Optional.<SingularityTaskShellCommandRequestId> absent())); } } } }
private MaxProbableUsage getMaxProbableUsageForSlave(List<SingularityTaskId> activeTaskIds, Map<String, RequestUtilization> requestUtilizations, String sanitizedHostname) { double cpu = 0; double memBytes = 0; double diskBytes = 0; for (SingularityTaskId taskId : activeTaskIds) { if (taskId.getSanitizedHost().equals(sanitizedHostname)) { if (requestUtilizations.containsKey(taskId.getRequestId())) { RequestUtilization utilization = requestUtilizations.get(taskId.getRequestId()); cpu += getEstimatedCpuUsageForRequest(utilization); memBytes += utilization.getMaxMemBytesUsed(); diskBytes += utilization.getMaxDiskBytesUsed(); } else { Optional<SingularityTask> maybeTask = taskManager.getTask(taskId); if (maybeTask.isPresent()) { Resources resources = maybeTask.get().getTaskRequest().getPendingTask().getResources() .or(maybeTask.get().getTaskRequest().getDeploy().getResources()) .or(defaultResources); cpu += resources.getCpus(); memBytes += resources.getMemoryMb() * SingularitySlaveUsage.BYTES_PER_MEGABYTE; diskBytes += resources.getDiskMb() * SingularitySlaveUsage.BYTES_PER_MEGABYTE; } } } } return new MaxProbableUsage(cpu, memBytes, diskBytes); }
.peek((offerHolder) -> { taskManager.getActiveTaskIds().forEach((t) -> { if (t.getSanitizedHost().equals(offerHolder.getSanitizedHost())) { relevantRequestIds.add(t.getRequestId()); .filter((t) -> t.getStartedAt() > maybeSlaveUsage.get().getTimestamp() && t.getSanitizedHost().equals(offerHolder.getSanitizedHost())) .count(); if (newTaskCount >= maybeSlaveUsage.get().getNumTasks() / 2) {
private void validateTaskDoesntMoveDuringDecommission() { sms.resourceOffers(Arrays.asList(createOffer(1, 129, 1025, "slave1", "host1", Optional.of("rack1")))); sms.resourceOffers(Arrays.asList(createOffer(1, 129, 1025, "slave2", "host2", Optional.of("rack1")))); Assert.assertEquals(1, taskManager.getActiveTaskIds().size()); Assert.assertEquals("host1", taskManager.getActiveTaskIds().get(0).getSanitizedHost()); Assert.assertEquals(StateChangeResult.SUCCESS, slaveManager.changeState("slave1", MachineState.STARTING_DECOMMISSION, Optional.<String> absent(), Optional.of("user1"))); sms.resourceOffers(Arrays.asList(createOffer(1, 129, 1025, "slave2", "host2", Optional.of("rack1")))); cleaner.drainCleanupQueue(); sms.resourceOffers(Arrays.asList(createOffer(1, 129, 1025, "slave2", "host2", Optional.of("rack1")))); cleaner.drainCleanupQueue(); // task should not move! Assert.assertEquals(1, taskManager.getActiveTaskIds().size()); Assert.assertEquals("host1", taskManager.getActiveTaskIds().get(0).getSanitizedHost()); Assert.assertTrue(taskManager.getKilledTaskIdRecords().isEmpty()); Assert.assertTrue(taskManager.getCleanupTaskIds().size() == 1); }
if (!taskId.getSanitizedHost().equals(sanitizedHost)) { continue;
private void assertEquals(SingularityTaskId one, SingularityTaskId two) { Assert.assertEquals(one, two); Assert.assertEquals(one.getDeployId(), two.getDeployId()); Assert.assertEquals(one.getRequestId(), two.getRequestId()); Assert.assertEquals(one.getSanitizedHost(), two.getSanitizedHost()); Assert.assertEquals(one.getSanitizedRackId(), two.getSanitizedRackId()); Assert.assertEquals(one.getStartedAt(), two.getStartedAt()); Assert.assertEquals(one.getInstanceNo(), two.getInstanceNo()); }
private boolean hasTaskLeftOnSlave(SingularityTaskId taskId, String slaveId, SingularityLeaderCache stateCache) { for (SingularityTaskId activeTaskId : stateCache.getActiveTaskIds()) { if (!activeTaskId.equals(taskId) && activeTaskId.getSanitizedHost().equals(taskId.getSanitizedHost())) { Optional<SingularityTask> maybeTask = taskManager.getTask(activeTaskId); if (maybeTask.isPresent() && slaveId.equals(maybeTask.get().getAgentId().getValue())) { return true; } } } return false; }
public List<SingularityTask> getTasksOnSlave(Collection<SingularityTaskId> activeTaskIds, SingularitySlave slave) { final List<SingularityTask> tasks = Lists.newArrayList(); final String sanitizedHost = JavaUtils.getReplaceHyphensWithUnderscores(slave.getHost()); for (SingularityTaskId activeTaskId : activeTaskIds) { if (activeTaskId.getSanitizedHost().equals(sanitizedHost)) { Optional<SingularityTask> maybeTask = getTask(activeTaskId); if (maybeTask.isPresent() && slave.getId().equals(maybeTask.get().getAgentId().getValue())) { tasks.add(maybeTask.get()); } } } return tasks; }
@Override protected void handleExpiringObject(SingularityExpiringMachineState expiringObject, SingularityMachineAbstraction machine, String message) { SingularitySlave slave = (SingularitySlave) machine; slaveManager.changeState(slave, expiringObject.getRevertToState(), Optional.of("Updated due to expiring action"), expiringObject.getUser()); if (expiringObject.isKillTasksOnDecommissionTimeout() && expiringObject.getRevertToState() == MachineState.DECOMMISSIONED) { List<SingularityTaskId> activeTasksIdsOnSlave = taskManager.getActiveTaskIds(); String sanitizedHost = JavaUtils.getReplaceHyphensWithUnderscores(slave.getHost()); long now = System.currentTimeMillis(); for (SingularityTaskId taskId : activeTasksIdsOnSlave) { if (taskId.getSanitizedHost().equals(sanitizedHost)) { taskManager.saveTaskCleanup(new SingularityTaskCleanup( expiringObject.getUser(), TaskCleanupType.DECOMMISSION_TIMEOUT, now, taskId, Optional.of(String.format("Slave decommission (started by: %s) timed out after %sms", expiringObject.getUser(), now - expiringObject.getStartMillis())), Optional.<String> absent(), Optional.<SingularityTaskShellCommandRequestId> absent())); } } } }
private MaxProbableUsage getMaxProbableUsageForSlave(List<SingularityTaskId> activeTaskIds, Map<String, RequestUtilization> requestUtilizations, String sanitizedHostname) { double cpu = 0; double memBytes = 0; double diskBytes = 0; for (SingularityTaskId taskId : activeTaskIds) { if (taskId.getSanitizedHost().equals(sanitizedHostname)) { if (requestUtilizations.containsKey(taskId.getRequestId())) { RequestUtilization utilization = requestUtilizations.get(taskId.getRequestId()); cpu += getEstimatedCpuUsageForRequest(utilization); memBytes += utilization.getMaxMemBytesUsed(); diskBytes += utilization.getMaxDiskBytesUsed(); } else { Optional<SingularityTask> maybeTask = taskManager.getTask(taskId); if (maybeTask.isPresent()) { Resources resources = maybeTask.get().getTaskRequest().getPendingTask().getResources() .or(maybeTask.get().getTaskRequest().getDeploy().getResources()) .or(defaultResources); cpu += resources.getCpus(); memBytes += resources.getMemoryMb() * SingularitySlaveUsage.BYTES_PER_MEGABYTE; diskBytes += resources.getDiskMb() * SingularitySlaveUsage.BYTES_PER_MEGABYTE; } } } } return new MaxProbableUsage(cpu, memBytes, diskBytes); }
.peek((offerHolder) -> { taskManager.getActiveTaskIds().forEach((t) -> { if (t.getSanitizedHost().equals(offerHolder.getSanitizedHost())) { relevantRequestIds.add(t.getRequestId()); .filter((t) -> t.getStartedAt() > maybeSlaveUsage.get().getTimestamp() && t.getSanitizedHost().equals(offerHolder.getSanitizedHost())) .count(); if (newTaskCount >= maybeSlaveUsage.get().getNumTasks() / 2) {
private void validateTaskDoesntMoveDuringDecommission() { sms.resourceOffers(Arrays.asList(createOffer(1, 129, 1025, "slave1", "host1", Optional.of("rack1")))); sms.resourceOffers(Arrays.asList(createOffer(1, 129, 1025, "slave2", "host2", Optional.of("rack1")))); Assert.assertEquals(1, taskManager.getActiveTaskIds().size()); Assert.assertEquals("host1", taskManager.getActiveTaskIds().get(0).getSanitizedHost()); Assert.assertEquals(StateChangeResult.SUCCESS, slaveManager.changeState("slave1", MachineState.STARTING_DECOMMISSION, Optional.<String> absent(), Optional.of("user1"))); sms.resourceOffers(Arrays.asList(createOffer(1, 129, 1025, "slave2", "host2", Optional.of("rack1")))); cleaner.drainCleanupQueue(); sms.resourceOffers(Arrays.asList(createOffer(1, 129, 1025, "slave2", "host2", Optional.of("rack1")))); cleaner.drainCleanupQueue(); // task should not move! Assert.assertEquals(1, taskManager.getActiveTaskIds().size()); Assert.assertEquals("host1", taskManager.getActiveTaskIds().get(0).getSanitizedHost()); Assert.assertTrue(taskManager.getKilledTaskIdRecords().isEmpty()); Assert.assertTrue(taskManager.getCleanupTaskIds().size() == 1); }
if (!taskId.getSanitizedHost().equals(sanitizedHost)) { continue;
private void assertEquals(SingularityTaskId one, SingularityTaskId two) { Assert.assertEquals(one, two); Assert.assertEquals(one.getDeployId(), two.getDeployId()); Assert.assertEquals(one.getRequestId(), two.getRequestId()); Assert.assertEquals(one.getSanitizedHost(), two.getSanitizedHost()); Assert.assertEquals(one.getSanitizedRackId(), two.getSanitizedRackId()); Assert.assertEquals(one.getStartedAt(), two.getStartedAt()); Assert.assertEquals(one.getInstanceNo(), two.getInstanceNo()); }