Search in sources :

Example 1 with WorkerLease

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);
}
Also used : BuildOperationRef(org.gradle.internal.operations.BuildOperationRef) WorkerLease(org.gradle.internal.work.WorkerLeaseRegistry.WorkerLease) DefaultMultiCauseException(org.gradle.internal.exceptions.DefaultMultiCauseException) WorkerExecutionException(org.gradle.workers.WorkerExecutionException) UncheckedException(org.gradle.internal.UncheckedException) NoAvailableWorkerLeaseException(org.gradle.internal.work.NoAvailableWorkerLeaseException) ExecutionException(java.util.concurrent.ExecutionException)

Example 2 with WorkerLease

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();
    }
}
Also used : WorkerLease(org.gradle.internal.work.WorkerLeaseRegistry.WorkerLease) ManagedExecutor(org.gradle.internal.concurrent.ManagedExecutor)

Aggregations

WorkerLease (org.gradle.internal.work.WorkerLeaseRegistry.WorkerLease)2 ExecutionException (java.util.concurrent.ExecutionException)1 UncheckedException (org.gradle.internal.UncheckedException)1 ManagedExecutor (org.gradle.internal.concurrent.ManagedExecutor)1 DefaultMultiCauseException (org.gradle.internal.exceptions.DefaultMultiCauseException)1 BuildOperationRef (org.gradle.internal.operations.BuildOperationRef)1 NoAvailableWorkerLeaseException (org.gradle.internal.work.NoAvailableWorkerLeaseException)1 WorkerExecutionException (org.gradle.workers.WorkerExecutionException)1