use of org.gradle.internal.service.DefaultServiceRegistry in project gradle by gradle.
the class SystemApplicationClassLoaderWorker method call.
@Override
public Void call() throws Exception {
if (System.getProperty("org.gradle.worker.test.stuck") != null) {
// Simulate a stuck worker. There's probably a way to inject this failure...
Thread.sleep(30000);
return null;
}
Decoder decoder = new InputStreamBackedDecoder(configInputStream);
// Read logging config and setup logging
int logLevel = decoder.readSmallInt();
LoggingServiceRegistry loggingServiceRegistry = LoggingServiceRegistry.newEmbeddableLogging();
LoggingManagerInternal loggingManager = createLoggingManager(loggingServiceRegistry).setLevelInternal(LogLevel.values()[logLevel]);
// Read whether process info should be published
boolean shouldPublishJvmMemoryInfo = decoder.readBoolean();
// Read path to Gradle user home
String gradleUserHomeDirPath = decoder.readString();
File gradleUserHomeDir = new File(gradleUserHomeDirPath);
// Read server address and start connecting
MultiChoiceAddress serverAddress = new MultiChoiceAddressSerializer().read(decoder);
NativeServices.initializeOnWorker(gradleUserHomeDir);
DefaultServiceRegistry basicWorkerServices = new DefaultServiceRegistry(NativeServices.getInstance(), loggingServiceRegistry);
basicWorkerServices.add(ExecutorFactory.class, new DefaultExecutorFactory());
basicWorkerServices.addProvider(new MessagingServices());
final WorkerServices workerServices = new WorkerServices(basicWorkerServices, gradleUserHomeDir);
WorkerLogEventListener workerLogEventListener = new WorkerLogEventListener();
workerServices.add(WorkerLogEventListener.class, workerLogEventListener);
File workingDirectory = workerServices.get(WorkerDirectoryProvider.class).getWorkingDirectory();
File errorLog = getLastResortErrorLogFile(workingDirectory);
PrintUnrecoverableErrorToFileHandler unrecoverableErrorHandler = new PrintUnrecoverableErrorToFileHandler(errorLog);
ObjectConnection connection = null;
try {
// Read serialized worker details
final long workerId = decoder.readSmallLong();
final String displayName = decoder.readString();
byte[] serializedWorker = decoder.readBinary();
Action<WorkerProcessContext> workerAction = deserializeWorker(serializedWorker);
connection = basicWorkerServices.get(MessagingClient.class).getConnection(serverAddress);
connection.addUnrecoverableErrorHandler(unrecoverableErrorHandler);
configureLogging(loggingManager, connection, workerLogEventListener);
// start logging now that the logging manager is connected
loggingManager.start();
if (shouldPublishJvmMemoryInfo) {
configureWorkerJvmMemoryInfoEvents(workerServices, connection);
}
ActionExecutionWorker worker = new ActionExecutionWorker(workerAction);
worker.execute(new ContextImpl(workerId, displayName, connection, workerServices));
} finally {
try {
loggingManager.removeOutputEventListener(workerLogEventListener);
CompositeStoppable.stoppable(connection, basicWorkerServices).stop();
loggingManager.stop();
} catch (Throwable t) {
// We're failing while shutting down, so log whatever might have happened.
unrecoverableErrorHandler.execute(t);
}
}
return null;
}
use of org.gradle.internal.service.DefaultServiceRegistry in project gradle by gradle.
the class DaemonClientFactory method createBuildClientServices.
/**
* Creates the services for a {@link DaemonClient} that can be used to run builds.
*/
public ServiceRegistry createBuildClientServices(OutputEventListener loggingReceiver, DaemonParameters daemonParameters, InputStream stdin) {
DefaultServiceRegistry loggingServices = new DefaultServiceRegistry(sharedServices);
loggingServices.add(OutputEventListener.class, loggingReceiver);
return new DaemonClientServices(loggingServices, daemonParameters, stdin);
}
use of org.gradle.internal.service.DefaultServiceRegistry in project gradle by gradle.
the class DaemonClientFactory method createSingleUseDaemonClientServices.
/**
* Creates the services for a {@link DaemonClient} that can be used to run a build in a single-use daemon.
*/
public ServiceRegistry createSingleUseDaemonClientServices(OutputEventListener loggingReceiver, DaemonParameters daemonParameters, InputStream stdin) {
DefaultServiceRegistry loggingServices = new DefaultServiceRegistry(sharedServices);
loggingServices.add(OutputEventListener.class, loggingReceiver);
return new SingleUseDaemonClientServices(loggingServices, daemonParameters, stdin);
}
use of org.gradle.internal.service.DefaultServiceRegistry in project gradle by gradle.
the class DaemonClientFactory method createMessageDaemonServices.
/**
* Creates the services for sending simple messages to daemons.
*
* Currently, there are two clients which can be used from this registry:
* - {@link DaemonStopClient} that can be used to stop daemons.
* - {@link NotifyDaemonAboutChangedPathsClient} that can be used to notify daemons about changed paths.
*/
public ServiceRegistry createMessageDaemonServices(OutputEventListener loggingReceiver, DaemonParameters daemonParameters) {
DefaultServiceRegistry loggingServices = new DefaultServiceRegistry(sharedServices);
loggingServices.add(OutputEventListener.class, loggingReceiver);
return new DaemonClientServices(loggingServices, daemonParameters, new ByteArrayInputStream(new byte[0]));
}
use of org.gradle.internal.service.DefaultServiceRegistry in project gradle by gradle.
the class ValidationServicesFixture method getServices.
public static ServiceRegistry getServices() {
DefaultServiceRegistry registry = new DefaultServiceRegistry();
registry.addProvider(new Object() {
ExecutionGlobalServices.AnnotationHandlerRegistration createAnnotationRegistration() {
return () -> ImmutableList.of(ValidationProblem.class);
}
PropertyAnnotationHandler createValidationProblemAnnotationHandler() {
return new ValidationProblemPropertyAnnotationHandler();
}
});
return registry;
}
Aggregations