use of com.netflix.titus.common.util.tuple.Triple in project titus-control-plane by Netflix.
the class MustBeRelocatedSelfManagedTaskCollectorStep method buildRelocationPlans.
private Map<String, TaskRelocationPlan> buildRelocationPlans() {
Map<String, TitusNode> nodes = nodeDataResolver.resolve();
List<Triple<Job<?>, Task, TitusNode>> allItems = findAllJobTaskAgentTriples(nodes);
Map<String, TaskRelocationPlan> result = new HashMap<>();
logger.debug("Number of triplets to check: {}", allItems.size());
allItems.forEach(triple -> {
Job<?> job = triple.getFirst();
Task task = triple.getSecond();
TitusNode instance = triple.getThird();
checkIfNeedsRelocationPlan(job, task, instance).ifPresent(reason -> result.put(task.getId(), buildSelfManagedRelocationPlan(job, task, reason)));
});
this.lastResult = result;
return result;
}
use of com.netflix.titus.common.util.tuple.Triple in project titus-control-plane by Netflix.
the class MustBeRelocatedSelfManagedTaskCollectorStep method findAllJobTaskAgentTriples.
private List<Triple<Job<?>, Task, TitusNode>> findAllJobTaskAgentTriples(Map<String, TitusNode> nodes) {
Map<String, TitusNode> taskToInstanceMap = RelocationUtil.buildTasksToInstanceMap(nodes, jobOperations);
List<Triple<Job<?>, Task, TitusNode>> result = new ArrayList<>();
jobOperations.getJobs().forEach(job -> {
jobOperations.getTasks(job.getId()).forEach(task -> {
TaskState taskState = task.getStatus().getState();
if (taskState == TaskState.StartInitiated || taskState == TaskState.Started) {
TitusNode instance = taskToInstanceMap.get(task.getId());
if (instance != null) {
result.add(Triple.of(job, task, instance));
} else {
logger.debug("Task in active state with no agent instance: taskId={}, state={}", task.getId(), task.getStatus().getState());
}
}
});
});
return result;
}
Aggregations