private void establishServerInventory(Future<ServerInventory> future) { synchronized (serverInventoryLock) { try { serverInventory = getFuture(future); serverInventoryLock.set(true); } finally { serverInventoryLock.notifyAll(); } } }
public void initializeMasterDomainRegistry(final ManagementResourceRegistration root, final ExtensibleConfigurationPersister configurationPersister, final ContentRepository contentRepository, final HostFileRepository fileRepository, final ExtensionRegistry extensionRegistry, final PathManagerService pathManager) { initializeDomainResource(root, configurationPersister, contentRepository, fileRepository, true, hostControllerInfo, extensionRegistry, null, pathManager); }
ok = bootEmptyConfig(context); return; ok = boot(Collections.singletonList(addHostOp), true, true); hostBootOps.add(registerModelControllerServiceInitializationBootStep(context)); ok = boot(hostBootOps, true, true, new MutableRootResourceRegistrationProvider() { public ManagementResourceRegistration getRootResourceRegistrationForUpdate(OperationContext context) { return hostModelRegistration; Future<ServerInventory> inventoryFuture = installServerInventory(serviceTarget); installDiscoveryService(serviceTarget, discoveryOptions); establishServerInventory(inventoryFuture); DomainConnectResult connectResult = connectToDomainMaster(serviceTarget, currentRunningMode, isCachedDc, false); if (connectResult == DomainConnectResult.ABORT) { ok = false; DomainConnectResult connectResult = connectToDomainMaster(serviceTarget, currentRunningMode, isCachedDc, true); ok = connectResult != DomainConnectResult.ABORT; } else { ok = boot(domainBootOps, false); domainConfigAvailable.set(ok); establishServerInventory(inventoryFuture);
ok = boot(Collections.singletonList(addHostOp), true); ok = ok && boot(hostBootOps, true); serverInventory = getFuture(inventoryFuture); getValue(), extensionRegistry, hostControllerInfo, environment.getProductConfig(), remoteFileRepository, ignoredRegistry); MasterDomainControllerClient masterDomainControllerClient = getFuture(clientFuture); ok = boot(domainPersister.load(), false); serverInventory = getFuture(inventoryFuture); startServers(); if (ok) { try { finishBoot(); } finally { bootstrapListener.tick();
final Map<String, ProxyController> serverProxies = new ConcurrentHashMap<String, ProxyController>(); final LocalHostControllerInfoImpl hostControllerInfo = new LocalHostControllerInfoImpl(processState, environment); final AbstractVaultReader vaultReader = loadVaultReaderService(); ROOT_LOGGER.debugf("Using VaultReader %s", vaultReader); final ContentRepository contentRepository = ContentRepository.Factory.create(environment.getDomainContentDir(), environment.getDomainTempDir()); ContentRepository.Factory.addService(serviceTarget, contentRepository); final IgnoredDomainResourceRegistry ignoredRegistry = new IgnoredDomainResourceRegistry(hostControllerInfo); final ManagedAuditLogger auditLogger = createAuditLogger(environment); final DelegatingConfigurableAuthorizer authorizer = new DelegatingConfigurableAuthorizer(); final ManagementSecurityIdentitySupplier securityIdentitySupplier = new ManagementSecurityIdentitySupplier(); final ExpressionResolver expressionResolver = new RuntimeExpressionResolver(vaultReader); final DomainHostExcludeRegistry domainHostExcludeRegistry = new DomainHostExcludeRegistry(); final DomainModelControllerService service = new DomainModelControllerService(environment, runningModeControl, processState, hostControllerInfo, contentRepository, hostProxies, serverProxies, prepareStepHandler, vaultReader, ignoredRegistry, bootstrapListener, pathManager, expressionResolver, new DomainDelegatingResourceDefinition(), EXECUTOR_CAPABILITY.getCapabilityServiceName(), service.getStabilityMonitor()); sb.addDependency(HC_EXECUTOR_SERVICE_NAME, ExecutorService.class, service.getExecutorServiceInjector()); sb.addDependency(ProcessControllerConnectionService.SERVICE_NAME, ProcessControllerConnectionService.class, service.injectedProcessControllerConnection);
private DomainConnectResult connectToDomainMaster(ServiceTarget serviceTarget, RunningMode currentRunningMode, boolean usingCachedDC, boolean adminOnly) { Future<MasterDomainControllerClient> clientFuture = RemoteDomainConnectionService.install(serviceTarget, getValue(), extensionRegistry, hostControllerInfo, this, environment, getExecutorServiceInjector().getValue(), currentRunningMode, serverProxies, domainConfigAvailable); masterDomainControllerClient = getFuture(clientFuture);
public static ServiceController<ModelController> addService(final ServiceTarget serviceTarget, final HostControllerEnvironment environment, final HostRunningModeControl runningModeControl, final ControlledProcessState processState, final BootstrapListener bootstrapListener, final PathManagerService pathManager){ final ConcurrentMap<String, ProxyController> hostProxies = new ConcurrentHashMap<String, ProxyController>(); final Map<String, ProxyController> serverProxies = new ConcurrentHashMap<String, ProxyController>(); final LocalHostControllerInfoImpl hostControllerInfo = new LocalHostControllerInfoImpl(processState, environment); final AbstractVaultReader vaultReader = service(AbstractVaultReader.class); ROOT_LOGGER.debugf("Using VaultReader %s", vaultReader); final ContentRepository contentRepository = ContentRepository.Factory.create(environment.getDomainContentDir()); IgnoredDomainResourceRegistry ignoredRegistry = new IgnoredDomainResourceRegistry(hostControllerInfo); final PrepareStepHandler prepareStepHandler = new PrepareStepHandler(hostControllerInfo, contentRepository, hostProxies, serverProxies, ignoredRegistry); final ExpressionResolver expressionResolver = new RuntimeExpressionResolver(vaultReader); DomainModelControllerService service = new DomainModelControllerService(environment, runningModeControl, processState, hostControllerInfo, contentRepository, hostProxies, serverProxies, prepareStepHandler, vaultReader, ignoredRegistry, bootstrapListener, pathManager, expressionResolver, new DelegatingResourceDefinition()); return serviceTarget.addService(SERVICE_NAME, service) .addDependency(HostControllerService.HC_EXECUTOR_SERVICE_NAME, ExecutorService.class, service.getExecutorServiceInjector()) .addDependency(ProcessControllerConnectionService.SERVICE_NAME, ProcessControllerConnectionService.class, service.injectedProcessControllerConnection) .addDependency(PathManagerService.SERVICE_NAME) // ensure this is up .setInitialMode(ServiceController.Mode.ACTIVE) .install(); }
@Override public void start(StartContext context) throws StartException { final ExecutorService executorService = getExecutorServiceInjector().getValue(); this.hostControllerConfigurationPersister = new HostControllerConfigurationPersister(environment, hostControllerInfo, executorService, extensionRegistry); setConfigurationPersister(hostControllerConfigurationPersister); prepareStepHandler.setExecutorService(executorService); ThreadFactory threadFactory = new JBossThreadFactory(new ThreadGroup("proxy-threads"), Boolean.FALSE, null, "%G - %t", null, null, AccessController.getContext()); proxyExecutor = Executors.newCachedThreadPool(threadFactory); ThreadFactory pingerThreadFactory = new JBossThreadFactory(new ThreadGroup("proxy-pinger-threads"), Boolean.TRUE, null, "%G - %t", null, null, AccessController.getContext()); pingScheduler = Executors.newScheduledThreadPool(PINGER_POOL_SIZE, pingerThreadFactory); super.start(context); }
private void startServers() { ModelNode addr = new ModelNode(); addr.add(HOST, hostControllerInfo.getLocalHostName()); ModelNode op = Util.getEmptyOperation(StartServersHandler.OPERATION_NAME, addr); getValue().execute(op, null, null, null); }
private boolean bootEmptyConfig(final BootContext context) throws OperationFailedException, ConfigurationPersistenceException { HostControllerLogger.ROOT_LOGGER.debug("Invoking initial empty config host controller boot"); boolean ok = boot(Collections.singletonList(registerModelControllerServiceInitializationBootStep(context)), true, true); // until a host is added with the host add op, there is no root description provider delegate. We just install a non-resolving one for now, so the // CLI doesn't get a lot of NPEs from :read-resource-description etc. SimpleResourceDefinition def = new SimpleResourceDefinition(new SimpleResourceDefinition.Parameters(null, new NonResolvingResourceDescriptionResolver())); rootResourceDefinition.setFakeDelegate(def); // just initialize the persister and return, we have to wait for /host=foo:add() hostControllerConfigurationPersister.initializeDomainConfigurationPersister(false); return ok; }
HostPathManagerService.addService(serviceTarget, hostPathManagerService, environment); DomainModelControllerService.addService(serviceTarget, environment, runningModeControl, processState, bootstrapListener, hostPathManagerService);
ok = bootEmptyConfig(context); return; ok = boot(Collections.singletonList(addHostOp), true, true); hostBootOps.add(registerModelControllerServiceInitializationBootStep(context)); ok = boot(hostBootOps, true, true, new MutableRootResourceRegistrationProvider() { public ManagementResourceRegistration getRootResourceRegistrationForUpdate(OperationContext context) { return hostModelRegistration; Future<ServerInventory> inventoryFuture = installServerInventory(serviceTarget); installDiscoveryService(serviceTarget, discoveryOptions); establishServerInventory(inventoryFuture); DomainConnectResult connectResult = connectToDomainMaster(serviceTarget, currentRunningMode, isCachedDc, false); if (connectResult == DomainConnectResult.ABORT) { ok = false; DomainConnectResult connectResult = connectToDomainMaster(serviceTarget, currentRunningMode, isCachedDc, true); ok = connectResult != DomainConnectResult.ABORT; } else { ok = boot(domainBootOps, false); domainConfigAvailable.set(ok); establishServerInventory(inventoryFuture);
final Map<String, ProxyController> serverProxies = new ConcurrentHashMap<String, ProxyController>(); final LocalHostControllerInfoImpl hostControllerInfo = new LocalHostControllerInfoImpl(processState, environment); final AbstractVaultReader vaultReader = loadVaultReaderService(); ROOT_LOGGER.debugf("Using VaultReader %s", vaultReader); final ContentRepository contentRepository = ContentRepository.Factory.create(environment.getDomainContentDir(), environment.getDomainTempDir()); ContentRepository.Factory.addService(serviceTarget, contentRepository); final IgnoredDomainResourceRegistry ignoredRegistry = new IgnoredDomainResourceRegistry(hostControllerInfo); final ManagedAuditLogger auditLogger = createAuditLogger(environment); final DelegatingConfigurableAuthorizer authorizer = new DelegatingConfigurableAuthorizer(); final ManagementSecurityIdentitySupplier securityIdentitySupplier = new ManagementSecurityIdentitySupplier(); final ExpressionResolver expressionResolver = new RuntimeExpressionResolver(vaultReader); final DomainHostExcludeRegistry domainHostExcludeRegistry = new DomainHostExcludeRegistry(); final DomainModelControllerService service = new DomainModelControllerService(environment, runningModeControl, processState, hostControllerInfo, contentRepository, hostProxies, serverProxies, prepareStepHandler, vaultReader, ignoredRegistry, bootstrapListener, pathManager, expressionResolver, new DomainDelegatingResourceDefinition(), EXECUTOR_CAPABILITY.getCapabilityServiceName(), service.getStabilityMonitor()); sb.addDependency(HC_EXECUTOR_SERVICE_NAME, ExecutorService.class, service.getExecutorServiceInjector()); sb.addDependency(ProcessControllerConnectionService.SERVICE_NAME, ProcessControllerConnectionService.class, service.injectedProcessControllerConnection);
private DomainConnectResult connectToDomainMaster(ServiceTarget serviceTarget, RunningMode currentRunningMode, boolean usingCachedDC, boolean adminOnly) { Future<MasterDomainControllerClient> clientFuture = RemoteDomainConnectionService.install(serviceTarget, getValue(), extensionRegistry, hostControllerInfo, this, environment, getExecutorServiceInjector().getValue(), currentRunningMode, serverProxies, domainConfigAvailable); masterDomainControllerClient = getFuture(clientFuture);
@Override public void start(StartContext context) throws StartException { final ExecutorService executorService = getExecutorServiceInjector().getValue(); this.hostControllerConfigurationPersister = new HostControllerConfigurationPersister(environment, hostControllerInfo, executorService, hostExtensionRegistry, extensionRegistry); setConfigurationPersister(hostControllerConfigurationPersister); prepareStepHandler.setExecutorService(executorService); ThreadFactory pingerThreadFactory = doPrivileged(new PrivilegedAction<JBossThreadFactory>() { public JBossThreadFactory run() { return new JBossThreadFactory(new ThreadGroup("proxy-pinger-threads"), Boolean.TRUE, null, "%G - %t", null, null); } }); pingScheduler = Executors.newScheduledThreadPool(PINGER_POOL_SIZE, pingerThreadFactory); ContentCleanerService.addServiceOnHostController(context.getChildTarget(), DomainModelControllerService.SERVICE_NAME, CLIENT_FACTORY_SERVICE_NAME, HC_EXECUTOR_SERVICE_NAME, HC_SCHEDULED_EXECUTOR_SERVICE_NAME); super.start(context); pingScheduler.scheduleAtFixedRate(new Runnable() { @Override public void run() { try { slaveHostRegistrations.pruneExpired(); } catch (Exception e) { HostControllerLogger.DOMAIN_LOGGER.debugf(e, "failed to execute eviction task"); } } }, 1, 1, TimeUnit.MINUTES); }
private void startServers() { ModelNode addr = new ModelNode(); addr.add(HOST, hostControllerInfo.getLocalHostName()); ModelNode op = Util.getEmptyOperation(StartServersHandler.OPERATION_NAME, addr); getValue().execute(op, null, null, null); }
private boolean bootEmptyConfig(final BootContext context) throws OperationFailedException, ConfigurationPersistenceException { HostControllerLogger.ROOT_LOGGER.debug("Invoking initial empty config host controller boot"); boolean ok = boot(Collections.singletonList(registerModelControllerServiceInitializationBootStep(context)), true, true); // until a host is added with the host add op, there is no root description provider delegate. We just install a non-resolving one for now, so the // CLI doesn't get a lot of NPEs from :read-resource-description etc. SimpleResourceDefinition def = new SimpleResourceDefinition(new SimpleResourceDefinition.Parameters(null, new NonResolvingResourceDescriptionResolver())); rootResourceDefinition.setFakeDelegate(def); // just initialize the persister and return, we have to wait for /host=foo:add() hostControllerConfigurationPersister.initializeDomainConfigurationPersister(false); return ok; }
.install(); DomainModelControllerService.addService(serviceTarget, environment, runningModeControl, processState, bootstrapListener, hostPathManagerService, capabilityRegistry, threadGroup);
@Override public void start(StartContext context) throws StartException { final ExecutorService executorService = getExecutorServiceInjector().getValue(); this.hostControllerConfigurationPersister = new HostControllerConfigurationPersister(environment, hostControllerInfo, executorService, hostExtensionRegistry, extensionRegistry); setConfigurationPersister(hostControllerConfigurationPersister); prepareStepHandler.setExecutorService(executorService); ThreadFactory pingerThreadFactory = doPrivileged(new PrivilegedAction<JBossThreadFactory>() { public JBossThreadFactory run() { return new JBossThreadFactory(new ThreadGroup("proxy-pinger-threads"), Boolean.TRUE, null, "%G - %t", null, null); } }); pingScheduler = Executors.newScheduledThreadPool(PINGER_POOL_SIZE, pingerThreadFactory); ContentCleanerService.addServiceOnHostController(context.getChildTarget(), DomainModelControllerService.SERVICE_NAME, CLIENT_FACTORY_SERVICE_NAME, HC_EXECUTOR_SERVICE_NAME, HC_SCHEDULED_EXECUTOR_SERVICE_NAME); super.start(context); pingScheduler.scheduleAtFixedRate(new Runnable() { @Override public void run() { try { slaveHostRegistrations.pruneExpired(); } catch (Exception e) { HostControllerLogger.DOMAIN_LOGGER.debugf(e, "failed to execute eviction task"); } } }, 1, 1, TimeUnit.MINUTES); }
private void startServers() { ModelNode addr = new ModelNode(); addr.add(HOST, hostControllerInfo.getLocalHostName()); ModelNode op = Util.getEmptyOperation(StartServersHandler.OPERATION_NAME, addr); getValue().execute(op, null, null, null); }