use of org.gradle.internal.work.WorkerLeaseRegistry.WorkerLease in project gradle by gradle.
the class DefaultWorkerExecutor method submit.
private void submit(final ActionExecutionSpec spec, final IsolationMode isolationMode, final DaemonForkOptions daemonForkOptions) {
final WorkerLease currentWorkerWorkerLease = getCurrentWorkerLease();
final BuildOperationRef currentBuildOperation = buildOperationExecutor.getCurrentOperation();
ListenableFuture<DefaultWorkResult> workerDaemonResult = executor.submit(new Callable<DefaultWorkResult>() {
@Override
public DefaultWorkResult call() throws Exception {
try {
WorkerFactory workerFactory = getWorkerFactory(isolationMode);
Worker worker = workerFactory.getWorker(daemonForkOptions);
return worker.execute(spec, currentWorkerWorkerLease, currentBuildOperation);
} catch (Throwable t) {
throw new WorkExecutionException(spec.getDisplayName(), t);
}
}
});
registerAsyncWork(spec.getDisplayName(), workerDaemonResult);
}
use of org.gradle.internal.work.WorkerLeaseRegistry.WorkerLease in project gradle by gradle.
the class DefaultTaskPlanExecutor method process.
@Override
public void process(TaskExecutionPlan taskExecutionPlan, Action<? super TaskInternal> taskWorker) {
ManagedExecutor executor = executorFactory.create("Task worker for '" + taskExecutionPlan.getDisplayName() + "'");
try {
WorkerLease parentWorkerLease = workerLeaseService.getCurrentWorkerLease();
startAdditionalWorkers(taskExecutionPlan, taskWorker, executor, parentWorkerLease);
taskWorker(taskExecutionPlan, taskWorker, parentWorkerLease).run();
taskExecutionPlan.awaitCompletion();
} finally {
executor.stop();
}
}
Aggregations