Search in sources :

Example 1 with Triple

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;
}
Also used : Triple(com.netflix.titus.common.util.tuple.Triple) Task(com.netflix.titus.api.jobmanager.model.job.Task) HashMap(java.util.HashMap) TitusNode(com.netflix.titus.supplementary.relocation.connector.TitusNode) TaskRelocationPlan(com.netflix.titus.api.relocation.model.TaskRelocationPlan)

Example 2 with Triple

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;
}
Also used : Triple(com.netflix.titus.common.util.tuple.Triple) ArrayList(java.util.ArrayList) TitusNode(com.netflix.titus.supplementary.relocation.connector.TitusNode) TaskState(com.netflix.titus.api.jobmanager.model.job.TaskState)

Aggregations

Triple (com.netflix.titus.common.util.tuple.Triple)2 TitusNode (com.netflix.titus.supplementary.relocation.connector.TitusNode)2 Task (com.netflix.titus.api.jobmanager.model.job.Task)1 TaskState (com.netflix.titus.api.jobmanager.model.job.TaskState)1 TaskRelocationPlan (com.netflix.titus.api.relocation.model.TaskRelocationPlan)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1