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));
});
}
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);
});
}
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);
}
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();
}
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();
}
Aggregations