package com.hubspot.singularity.executor.task;
import java.util.concurrent.Callable;
import org.apache.mesos.Protos;
import com.hubspot.singularity.executor.utils.ExecutorUtils;
import com.hubspot.singularity.runner.base.shared.SafeProcessManager;
public class SingularityExecutorTaskProcessCallable extends SafeProcessManager implements Callable<Integer> {
private final ProcessBuilder processBuilder;
private final ExecutorUtils executorUtils;
private final SingularityExecutorTask task;
public SingularityExecutorTaskProcessCallable(SingularityExecutorTask task, ProcessBuilder processBuilder, ExecutorUtils executorUtils) {
super(task.getLog());
this.executorUtils = executorUtils;
this.processBuilder = processBuilder;
this.task = task;
}
@Override
public Integer call() throws Exception {
Process process = startProcess(processBuilder);
executorUtils.sendStatusUpdate(task.getDriver(), task.getTaskInfo(), Protos.TaskState.TASK_RUNNING, String.format("Task running process %s", getCurrentProcessToString()), task.getLog());
return process.waitFor();
}
public SingularityExecutorTask getTask() {
return task;
}
@Override
public String toString() {
return "SingularityExecutorTaskProcessCallable [task=" + task + "]";
}
}