public ClusterManifestProvider( ILocalSiloDetails localSiloDetails, SiloManifestProvider siloManifestProvider, ClusterMembershipService clusterMembershipService, IFatalErrorHandler fatalErrorHandler, ILogger <ClusterManifestProvider> logger, IServiceProvider services) { _localSiloAddress = localSiloDetails.SiloAddress; _logger = logger; _services = services; _clusterMembershipService = clusterMembershipService; _fatalErrorHandler = fatalErrorHandler; this.LocalGrainManifest = siloManifestProvider.SiloManifest; _current = new ClusterManifest( MajorMinorVersion.Zero, ImmutableDictionary.CreateRange(new[] { new KeyValuePair <SiloAddress, GrainManifest>(localSiloDetails.SiloAddress, this.LocalGrainManifest) }), ImmutableArray.Create(this.LocalGrainManifest)); _updates = new AsyncEnumerable <ClusterManifest>( (previous, proposed) => previous.Version <= MajorMinorVersion.Zero || proposed.Version > previous.Version, _current) { OnPublished = update => Interlocked.Exchange(ref _current, update) }; }
public ClusterManifestProvider( ILocalSiloDetails localSiloDetails, SiloManifest localSiloManifest, IInternalGrainFactory grainFactory, ClusterMembershipService clusterMembershipService, IFatalErrorHandler fatalErrorHandler, ILogger <ClusterManifestProvider> logger, IOptions <TypeManagementOptions> options, IServiceProvider services) { _localSiloAddress = localSiloDetails.SiloAddress; _grainFactory = grainFactory; _logger = logger; _services = services; _clusterMembershipService = clusterMembershipService; _fatalErrorHandler = fatalErrorHandler; _options = options.Value; _current = new ClusterManifest( MajorMinorVersion.Zero, ImmutableDictionary.CreateRange(new[] { new KeyValuePair <SiloAddress, SiloManifest>(localSiloDetails.SiloAddress, localSiloManifest) })); _updates = new AsyncEnumerable <ClusterManifest>( (previous, proposed) => previous.Version <= MajorMinorVersion.Zero || proposed.Version > previous.Version, _current) { OnPublished = update => Interlocked.Exchange(ref _current, update) }; }
/// <summary> /// This should be primary constructor once IAsyncEnumerable is released /// </summary> private QueueBalancerBase(IClusterMembershipService clusterMembership, ILocalSiloDetails localSiloDetails, ILogger logger) { this.clusterMembershipUpdates = clusterMembership.MembershipUpdates; this.SiloAddress = localSiloDetails.SiloAddress; this.Logger = logger; this.queueBalanceListeners = new List <IStreamQueueBalanceListener>(); this.cts = new CancellationTokenSource(); }
public CachedGrainLocator( GrainDirectoryResolver grainDirectoryResolver, IClusterMembershipService clusterMembershipService) { this.grainDirectoryResolver = grainDirectoryResolver; this.clusterMembershipService = clusterMembershipService; this.cache = new LRUBasedGrainDirectoryCache(GrainDirectoryOptions.DEFAULT_CACHE_SIZE, GrainDirectoryOptions.DEFAULT_MAXIMUM_CACHE_TTL); }
public GrainLocator( IGrainDirectory grainDirectory, DhtGrainLocator inClusterGrainLocator, IClusterMembershipService clusterMembershipService) { this.grainDirectory = grainDirectory; this.inClusterGrainLocator = inClusterGrainLocator; this.clusterMembershipService = clusterMembershipService; this.cache = new LRUBasedGrainDirectoryCache(GrainDirectoryOptions.DEFAULT_CACHE_SIZE, GrainDirectoryOptions.DEFAULT_MAXIMUM_CACHE_TTL); }
public ClientObserverRegistrar( ILocalSiloDetails siloDetails, ILocalGrainDirectory grainDirectory, OrleansTaskScheduler scheduler, IOptions <SiloMessagingOptions> messagingOptions, ILoggerFactory loggerFactory, IClusterMembershipService clusterMembershipService, IAsyncTimerFactory timerFactory) : base(Constants.ClientObserverRegistrarId, siloDetails.SiloAddress, loggerFactory) { this.grainDirectory = grainDirectory; this.myAddress = siloDetails.SiloAddress; this.scheduler = scheduler; this.clusterMembershipService = clusterMembershipService; this.messagingOptions = messagingOptions.Value; this.logger = loggerFactory.CreateLogger <ClientObserverRegistrar>(); this.refreshTimer = timerFactory.Create(this.messagingOptions.ClientRegistrationRefresh, "ClientObserverRegistrar.ClientRefreshTimer"); }
public KubernetesClusterAgent( IClusterMembershipService clusterMembershipService, ILogger <KubernetesClusterAgent> logger, IOptionsMonitor <KubernetesHostingOptions> options, IOptions <ClusterOptions> clusterOptions, ILocalSiloDetails localSiloDetails) { _localSiloDetails = localSiloDetails; _logger = logger; _shutdownToken = new CancellationTokenSource(); _options = options; _clusterOptions = clusterOptions.Value; _clusterMembershipService = clusterMembershipService; _config = _options.CurrentValue.GetClientConfiguration?.Invoke() ?? throw new ArgumentNullException(nameof(KubernetesHostingOptions) + "." + nameof(KubernetesHostingOptions.GetClientConfiguration)); _client = new k8s.Kubernetes(_config); _podLabelSelector = $"{KubernetesHostingOptions.ServiceIdLabel}={_clusterOptions.ServiceId},{KubernetesHostingOptions.ClusterIdLabel}={_clusterOptions.ClusterId}"; _podNamespace = _options.CurrentValue.Namespace; _podName = _options.CurrentValue.PodName; }
protected internal override void Initialize() { base.Initialize(); this.membershipServiceOptions = ServiceProvider.GetRequiredService <GatewayMembershipServiceOptions>(); this.activationDirectory = ServiceProvider.GetRequiredService <ActivationDirectory>(); this.addressableDirectory = ServiceProvider.GetRequiredService <AddressableDirectory>(); this.membershipManager = ServiceProvider.GetRequiredService <MembershipManager>(); this.hostingLifecycle = ServiceProvider.GetRequiredService <IServiceHostLifecycle>(); Address = membershipServiceOptions.OutsideAddress; Identity = Identity.NewIdentity(Identity.Categories.SystemTarget); membershipEntry = new MembershipEntry(); membershipEntry.Identity = Identity; membershipEntry.Address = Address; clusterMembershipService = ServiceFactory.GetSystemTarget <IClusterMembershipService>(Constants.ClusterMembershipServiceIdentity, membershipServiceOptions.Cluster); var lifecycle = ServiceProvider.GetRequiredService <IDirectoryLifecycle>(); lifecycle.Subscribe(nameof(GatewayMembershipService), Lifecycles.Stage.System, this); }
public SiloHealthMonitor( SiloAddress siloAddress, Func <SiloHealthMonitor, ProbeResult, Task> onProbeResult, IOptionsMonitor <ClusterMembershipOptions> clusterMembershipOptions, ILoggerFactory loggerFactory, IRemoteSiloProber remoteSiloProber, IAsyncTimerFactory asyncTimerFactory, ILocalSiloHealthMonitor localSiloHealthMonitor, IClusterMembershipService membershipService, ILocalSiloDetails localSiloDetails) { SiloAddress = siloAddress; _clusterMembershipOptions = clusterMembershipOptions; _prober = remoteSiloProber; _localSiloHealthMonitor = localSiloHealthMonitor; _membershipService = membershipService; _localSiloDetails = localSiloDetails; _log = loggerFactory.CreateLogger <SiloHealthMonitor>(); _pingTimer = asyncTimerFactory.Create( _clusterMembershipOptions.CurrentValue.ProbeTimeout, nameof(SiloHealthMonitor)); _onProbeResult = onProbeResult; _elapsedSinceLastSuccessfulResponse = ValueStopwatch.StartNew(); }
public SimpleConsistentRingProvider(ILocalSiloDetails localSiloDetails, IClusterMembershipService clusterMembershipService) { _localSilo = localSiloDetails.SiloAddress; _clusterMembershipService = clusterMembershipService; FindSuccessor(_clusterMembershipService.CurrentSnapshot); }