use of com.accenture.trac.common.exec.ExecutionManager in project tracdap by finos.
the class TracOrchestratorService method doStartup.
@Override
protected void doStartup(Duration startupTimeout) {
PlatformConfig platformConfig;
OrchServiceConfig orchestratorConfig;
try {
pluginManager.initRegularPlugins();
} catch (Exception e) {
var errorMessage = "There was a problem loading the plugins: " + e.getMessage();
log.error(errorMessage, e);
throw new EStartup(errorMessage, e);
}
try {
log.info("Loading TRAC platform config...");
platformConfig = configManager.loadRootConfigObject(PlatformConfig.class);
orchestratorConfig = platformConfig.getServices().getOrch();
// TODO: Config validation
log.info("Config looks ok");
} catch (Exception e) {
var errorMessage = "There was a problem loading the platform config: " + e.getMessage();
log.error(errorMessage, e);
throw new EStartup(errorMessage, e);
}
try {
var channelType = NioServerSocketChannel.class;
var clientChannelType = NioSocketChannel.class;
bossGroup = new NioEventLoopGroup(1, new DefaultThreadFactory("orch-boss"));
nettyGroup = new NioEventLoopGroup(2, new DefaultThreadFactory("orch-netty"));
serviceGroup = new NioEventLoopGroup(CONCURRENT_REQUESTS, new DefaultThreadFactory("orch-svc"));
prepareMetadataClientChannel(platformConfig, clientChannelType);
var metaClient = TrustedMetadataApiGrpc.newFutureStub(clientChannel);
var jobLifecycle = new JobLifecycle(platformConfig, metaClient);
jobCache = new LocalJobCache();
// jobCache = InterfaceLogging.wrap(jobCache, IJobCache.class);
var executors = new ExecutionManager(pluginManager);
executors.initExecutor(orchestratorConfig.getExecutor());
jobExecCtrl = executors.getExecutor();
jobMonitor = new JobManagementService(jobLifecycle, jobCache, jobExecCtrl, serviceGroup);
jobMonitor.start();
var orchestrator = new JobApiService(jobLifecycle, jobCache);
var orchestratorApi = new TracOrchestratorApi(orchestrator);
this.server = NettyServerBuilder.forPort(orchestratorConfig.getPort()).addService(orchestratorApi).channelType(channelType).bossEventLoopGroup(bossGroup).workerEventLoopGroup(nettyGroup).executor(serviceGroup).build();
this.server.start();
log.info("Orchestrator is listening on port {}", server.getPort());
} catch (IOException e) {
throw new EStartup(e.getMessage(), e);
}
}
Aggregations