Example #1
0
 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)
     };
 }
Example #3
0
 /// <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();
 }
Example #4
0
 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);
 }
Example #5
0
 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);
 }
Example #6
0
 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;
 }
Example #8
0
        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();
 }
Example #10
0
 public SimpleConsistentRingProvider(ILocalSiloDetails localSiloDetails, IClusterMembershipService clusterMembershipService)
 {
     _localSilo = localSiloDetails.SiloAddress;
     _clusterMembershipService = clusterMembershipService;
     FindSuccessor(_clusterMembershipService.CurrentSnapshot);
 }