private void InjectDependencies() { healthCheckParticipants.Add(membershipOracle); catalog.SiloStatusOracle = LocalSiloStatusOracle; localGrainDirectory.CatalogSiloStatusListener = catalog; LocalSiloStatusOracle.SubscribeToSiloStatusEvents(localGrainDirectory); messageCenter.SiloDeadOracle = LocalSiloStatusOracle.IsDeadSilo; // consistentRingProvider is not a system target per say, but it behaves like the localGrainDirectory, so it is here LocalSiloStatusOracle.SubscribeToSiloStatusEvents((ISiloStatusListener)RingProvider); LocalSiloStatusOracle.SubscribeToSiloStatusEvents(DeploymentLoadPublisher.Instance); // start the reminder service system target reminderService = reminderFactory.CreateReminderService(this).WithTimeout(initTimeout).Result; RegisterSystemTarget((SystemTarget)reminderService); RegisterSystemTarget(catalog); scheduler.QueueAction(catalog.Start, catalog.SchedulingContext) .WaitWithThrow(initTimeout); // SystemTarget for provider init calls providerManagerSystemTarget = new ProviderManagerSystemTarget(this); RegisterSystemTarget(providerManagerSystemTarget); }
public SiloControl( ILocalSiloDetails localSiloDetails, Factory <NodeConfiguration> localConfiguration, ClusterConfiguration clusterConfiguration, DeploymentLoadPublisher deploymentLoadPublisher, Catalog catalog, GrainTypeManager grainTypeManager, ISiloPerformanceMetrics siloMetrics, IEnumerable <IProviderManager> providerManagers, ProviderManagerSystemTarget providerManagerSystemTarget, CachedVersionSelectorManager cachedVersionSelectorManager, CompatibilityDirectorManager compatibilityDirectorManager, VersionSelectorManager selectorManager, ILoggerFactory loggerFactory) : base(Constants.SiloControlId, localSiloDetails.SiloAddress, loggerFactory) { this.localSiloDetails = localSiloDetails; this.localConfiguration = localConfiguration; this.clusterConfiguration = clusterConfiguration; this.logger = loggerFactory.CreateLogger <SiloControl>(); this.deploymentLoadPublisher = deploymentLoadPublisher; this.catalog = catalog; this.grainTypeManager = grainTypeManager; this.siloMetrics = siloMetrics; this.providerManagerSystemTarget = providerManagerSystemTarget; this.providerManagers = providerManagers.ToList(); this.cachedVersionSelectorManager = cachedVersionSelectorManager; this.compatibilityDirectorManager = compatibilityDirectorManager; this.selectorManager = selectorManager; }
private async Task InjectDependencies() { healthCheckParticipants.Add(membershipOracle); catalog.SiloStatusOracle = this.membershipOracle; this.membershipOracle.SubscribeToSiloStatusEvents(localGrainDirectory); messageCenter.SiloDeadOracle = this.membershipOracle.IsDeadSilo; // consistentRingProvider is not a system target per say, but it behaves like the localGrainDirectory, so it is here this.membershipOracle.SubscribeToSiloStatusEvents((ISiloStatusListener)RingProvider); this.membershipOracle.SubscribeToSiloStatusEvents(typeManager); this.membershipOracle.SubscribeToSiloStatusEvents(Services.GetRequiredService <DeploymentLoadPublisher>()); this.membershipOracle.SubscribeToSiloStatusEvents(Services.GetRequiredService <ClientObserverRegistrar>()); if (!GlobalConfig.ReminderServiceType.Equals(GlobalConfiguration.ReminderServiceProviderType.Disabled)) { // start the reminder service system target reminderService = Services.GetRequiredService <LocalReminderServiceFactory>() .CreateReminderService(this, initTimeout, this.runtimeClient); var reminderServiceSystemTarget = this.reminderService as SystemTarget; if (reminderServiceSystemTarget != null) { RegisterSystemTarget(reminderServiceSystemTarget); } } RegisterSystemTarget(catalog); await scheduler.QueueAction(catalog.Start, catalog.SchedulingContext) .WithTimeout(initTimeout); // SystemTarget for provider init calls providerManagerSystemTarget = Services.GetRequiredService <ProviderManagerSystemTarget>(); RegisterSystemTarget(providerManagerSystemTarget); }
private void InjectDependencies() { healthCheckParticipants.Add(membershipOracle); catalog.SiloStatusOracle = LocalSiloStatusOracle; localGrainDirectory.CatalogSiloStatusListener = catalog; LocalSiloStatusOracle.SubscribeToSiloStatusEvents(localGrainDirectory); messageCenter.SiloDeadOracle = LocalSiloStatusOracle.IsDeadSilo; // consistentRingProvider is not a system target per say, but it behaves like the localGrainDirectory, so it is here LocalSiloStatusOracle.SubscribeToSiloStatusEvents((ISiloStatusListener)RingProvider); LocalSiloStatusOracle.SubscribeToSiloStatusEvents(typeManager); LocalSiloStatusOracle.SubscribeToSiloStatusEvents(Services.GetRequiredService<DeploymentLoadPublisher>()); if (!GlobalConfig.ReminderServiceType.Equals(GlobalConfiguration.ReminderServiceProviderType.Disabled)) { // start the reminder service system target reminderService = Services.GetRequiredService<LocalReminderServiceFactory>() .CreateReminderService(this, grainFactory, initTimeout, this.runtimeClient); RegisterSystemTarget((SystemTarget) reminderService); } RegisterSystemTarget(catalog); scheduler.QueueAction(catalog.Start, catalog.SchedulingContext) .WaitWithThrow(initTimeout); // SystemTarget for provider init calls providerManagerSystemTarget = new ProviderManagerSystemTarget(this); RegisterSystemTarget(providerManagerSystemTarget); }