Search in sources :

Example 36 with Task

use of com.netflix.titus.api.jobmanager.model.job.Task in project titus-control-plane by Netflix.

the class TaskTerminationExecutor method terminateTask.

public Mono<Void> terminateTask(String taskId, String reason, String callerId) {
    return findAndVerifyJobAndTask(taskId, reason, callerId).flatMap(jobTaskPair -> {
        Job<?> job = jobTaskPair.getLeft();
        Task task = jobTaskPair.getRight();
        return serializedInvoker.submit(doTerminateTask(taskId, reason, job, task, callerId)).doOnSuccess(next -> onSuccessfulTermination(job, taskId, reason, callerId)).doOnError(error -> onTerminationError(job, taskId, reason, callerId, error));
    });
}
Also used : Trigger(com.netflix.titus.api.jobmanager.service.V3JobOperations.Trigger) Job(com.netflix.titus.api.jobmanager.model.job.Job) DirectProcessor(reactor.core.publisher.DirectProcessor) ConsumptionResult(com.netflix.titus.master.eviction.service.quota.ConsumptionResult) ReactorSerializedInvoker(com.netflix.titus.common.util.rx.invoker.ReactorSerializedInvoker) Task(com.netflix.titus.api.jobmanager.model.job.Task) TitusQuotasManager(com.netflix.titus.master.eviction.service.quota.TitusQuotasManager) Mono(reactor.core.publisher.Mono) EvictionEvent(com.netflix.titus.api.eviction.model.event.EvictionEvent) Scheduler(reactor.core.scheduler.Scheduler) TaskState(com.netflix.titus.api.jobmanager.model.job.TaskState) EvictionException(com.netflix.titus.api.eviction.service.EvictionException) Flux(reactor.core.publisher.Flux) V3JobOperations(com.netflix.titus.api.jobmanager.service.V3JobOperations) Pair(com.netflix.titus.common.util.tuple.Pair) Duration(java.time.Duration) Optional(java.util.Optional) TitusRuntime(com.netflix.titus.common.runtime.TitusRuntime) CallMetadata(com.netflix.titus.api.model.callmetadata.CallMetadata) Task(com.netflix.titus.api.jobmanager.model.job.Task)

Example 37 with Task

use of com.netflix.titus.api.jobmanager.model.job.Task in project titus-control-plane by Netflix.

the class DefaultV3JobOperations method findTaskById.

@Override
public Optional<Pair<Job<?>, Task>> findTaskById(String taskId) {
    return reconciliationFramework.findEngineByChildId(taskId).map(pair -> {
        Job<?> job = pair.getLeft().getReferenceView().getEntity();
        Task task = pair.getRight().getEntity();
        return Pair.of(job, task);
    });
}
Also used : Task(com.netflix.titus.api.jobmanager.model.job.Task)

Example 38 with Task

use of com.netflix.titus.api.jobmanager.model.job.Task in project titus-control-plane by Netflix.

the class JobAndTaskMetrics method updateJobCounts.

/**
 * Traverse all active jobs and update the count metrics
 */
private void updateJobCounts(List<Pair<Job, List<Task>>> jobsAndTasks) {
    int emptyJobs = 0;
    int serviceJobsOwnedByKubeScheduler = 0;
    int batchJobsOwnedByKubeScheduler = 0;
    for (Pair<Job, List<Task>> jobAndTasks : jobsAndTasks) {
        Job job = jobAndTasks.getLeft();
        List<Task> tasks = jobAndTasks.getRight();
        if (JobFunctions.getJobDesiredSize(job) == 0) {
            emptyJobs++;
        } else {
            boolean serviceJob = JobFunctions.isServiceJob(job);
            if (serviceJob) {
                serviceJobsOwnedByKubeScheduler++;
            } else {
                batchJobsOwnedByKubeScheduler++;
            }
        }
    }
    registry.gauge(jobCountId.withTag("emptyJobs", "true")).set(emptyJobs);
    registry.gauge(jobCountId.withTags("jobType", "service", "kubeScheduler", "true")).set(serviceJobsOwnedByKubeScheduler);
    registry.gauge(jobCountId.withTags("jobType", "batch", "kubeScheduler", "true")).set(batchJobsOwnedByKubeScheduler);
}
Also used : Task(com.netflix.titus.api.jobmanager.model.job.Task) ArrayList(java.util.ArrayList) List(java.util.List) Job(com.netflix.titus.api.jobmanager.model.job.Job)

Example 39 with Task

use of com.netflix.titus.api.jobmanager.model.job.Task in project titus-control-plane by Netflix.

the class JobAndTaskMetrics method updateTaskMetrics.

private void updateTaskMetrics(TaskUpdateEvent event) {
    Job<?> job = event.getCurrentJob();
    Task task = event.getCurrentTask();
    Pair<Tier, String> assignment = JobManagerUtil.getTierAssignment(job, applicationSlaManagementService);
    registry.counter(TASK_STATE_CHANGE_METRIC_NAME, "tier", assignment.getLeft().name(), "capacityGroup", assignment.getRight(), "applicationName", job.getJobDescriptor().getApplicationName(), "state", task.getStatus().getState().name(), "kubeScheduler", "true").increment();
}
Also used : Task(com.netflix.titus.api.jobmanager.model.job.Task) Tier(com.netflix.titus.api.model.Tier)

Example 40 with Task

use of com.netflix.titus.api.jobmanager.model.job.Task in project titus-control-plane by Netflix.

the class ReservationUsageCalculator method buildCapacityGroupUsage.

public ReservationUsage buildCapacityGroupUsage(String capacityGroupName) {
    ApplicationSLA capacityGroup = capacityManagementService.getApplicationSLA(capacityGroupName);
    if (capacityGroup == null) {
        return ReservationUsage.none();
    }
    List<Pair<Job, List<Task>>> jobsAndTasks = jobOperations.getJobsAndTasks();
    ResourceAccumulator accumulator = new ResourceAccumulator();
    for (Pair<Job, List<Task>> jobAndTasks : jobsAndTasks) {
        Job job = jobAndTasks.getLeft();
        if (capacityGroupName.equals(job.getJobDescriptor().getCapacityGroup())) {
            processJob(accumulator, jobAndTasks);
        }
    }
    return accumulator.toReservationUsage();
}
Also used : Task(com.netflix.titus.api.jobmanager.model.job.Task) ApplicationSLA(com.netflix.titus.api.model.ApplicationSLA) List(java.util.List) Job(com.netflix.titus.api.jobmanager.model.job.Job) Pair(com.netflix.titus.common.util.tuple.Pair)

Aggregations

Task (com.netflix.titus.api.jobmanager.model.job.Task)222 Test (org.junit.Test)98 ArrayList (java.util.ArrayList)63 List (java.util.List)62 Job (com.netflix.titus.api.jobmanager.model.job.Job)58 BatchJobTask (com.netflix.titus.api.jobmanager.model.job.BatchJobTask)45 TaskStatus (com.netflix.titus.api.jobmanager.model.job.TaskStatus)45 TaskState (com.netflix.titus.api.jobmanager.model.job.TaskState)42 TitusRuntime (com.netflix.titus.common.runtime.TitusRuntime)38 BatchJobExt (com.netflix.titus.api.jobmanager.model.job.ext.BatchJobExt)34 Pair (com.netflix.titus.common.util.tuple.Pair)32 V1Pod (io.kubernetes.client.openapi.models.V1Pod)32 V3JobOperations (com.netflix.titus.api.jobmanager.service.V3JobOperations)31 ServiceJobTask (com.netflix.titus.api.jobmanager.model.job.ServiceJobTask)29 Optional (java.util.Optional)27 Collections (java.util.Collections)26 Collectors (java.util.stream.Collectors)25 CallMetadata (com.netflix.titus.api.model.callmetadata.CallMetadata)24 HashMap (java.util.HashMap)24 TaskUpdateEvent (com.netflix.titus.api.jobmanager.model.job.event.TaskUpdateEvent)23