Example #1
0
        public SiloProviderRuntime(
            ILocalSiloDetails siloDetails,
            IOptions <SiloOptions> siloOptions,
            IConsistentRingProvider consistentRingProvider,
            ISiloRuntimeClient runtimeClient,
            ImplicitStreamSubscriberTable implicitStreamSubscriberTable,
            ISiloStatusOracle siloStatusOracle,
            OrleansTaskScheduler scheduler,
            ActivationDirectory activationDirectory,
            ILoggerFactory loggerFactory)
        {
            this.loggerFactory          = loggerFactory;
            this.siloStatusOracle       = siloStatusOracle;
            this.scheduler              = scheduler;
            this.activationDirectory    = activationDirectory;
            this.consistentRingProvider = consistentRingProvider;
            this.runtimeClient          = runtimeClient;
            this.ServiceId              = siloOptions.Value.ServiceId;
            this.SiloIdentity           = siloDetails.SiloAddress.ToLongString();

            this.grainBasedPubSub = new GrainBasedPubSubRuntime(this.GrainFactory);
            var tmp = new ImplicitStreamPubSub(this.runtimeClient.InternalGrainFactory, implicitStreamSubscriberTable);

            this.implictPubSub = tmp;
            this.combinedGrainBasedAndImplicitPubSub = new StreamPubSubImpl(this.grainBasedPubSub, tmp);
        }
        public OrleansStreamingPubSub(IGrainFactory grainFactory, ILocalSiloDetails silo, ILogger <OrleansStreamingPubSub> logger)
        {
            hostGrain =
                grainFactory.GetGrain <IStreamingPubSubHostGrain>(
                    silo.SiloAddress.ToParsableString());

            subscriptions = new Subscriptions(logger);
        }
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 DashboardTelemetryConsumer(ILocalSiloDetails localSiloDetails, IGrainFactory grainFactory)
        {
            this.localSiloDetails = localSiloDetails;
            this.grainFactory     = grainFactory;

            // register timer to report every second
            timer = new Timer(x => Flush(), null, 1 * 1000, 1 * 1000);
        }
Example #5
0
        public OrleansPubSub(IGrainFactory grainFactory, ILocalSiloDetails localSiloDetails, ILogger <OrleansPubSub> logger)
        {
            brokerGrain = grainFactory.GetGrain <IPubSubBrokerGrain>(Constants.BrokerId);

            hostGrain = grainFactory.GetGrain <IPubSubHostGrain>(localSiloDetails.SiloAddress.ToParsableString());

            this.logger = logger;
        }
Example #6
0
        public GrainProfiler(IGrainFactory grainFactory, ILogger <GrainProfiler> logger, ILocalSiloDetails localSiloDetails, IGrainServiceDataBack serviceback)
        {
            this.grainFactory = grainFactory;

            this.logger           = logger;
            this.localSiloDetails = localSiloDetails;
            grainseerviceDataBack = serviceback;
        }
 public ClusterManifestSystemTarget(
     IClusterManifestProvider clusterManifestProvider,
     ILocalSiloDetails siloDetails,
     ILoggerFactory loggerFactory)
     : base(Constants.ManifestProviderType, siloDetails.SiloAddress, loggerFactory)
 {
     _siloManifest            = clusterManifestProvider.LocalGrainManifest;
     _clusterManifestProvider = clusterManifestProvider;
 }
        public DashboardTelemetryProducer(ILocalSiloDetails localSiloDetails, IGrainFactory grainFactory, IExternalDispatcher dispatcher)
        {
            this.localSiloDetails = localSiloDetails;
            this.grainFactory     = grainFactory;
            this.dispatcher       = dispatcher;

            // register timer to report every second
            timer = new Timer(x => Flush(), null, 1 * 1000, 1 * 1000);
        }
Example #9
0
 public MembershipTableSystemTarget(
     ILocalSiloDetails localSiloDetails,
     ILoggerFactory loggerFactory,
     SerializationManager serializationManager)
     : base(CreateId(localSiloDetails), localSiloDetails.SiloAddress, lowPriority: false, loggerFactory)
 {
     logger = loggerFactory.CreateLogger <MembershipTableSystemTarget>();
     table  = new InMemoryMembershipTable(serializationManager);
     logger.Info(ErrorCode.MembershipGrainBasedTable1, "GrainBasedMembershipTable Activated.");
 }
Example #10
0
        public GrainProfiler(IGrainFactory grainFactory, ILogger <GrainProfiler> logger, ILocalSiloDetails localSiloDetails)
        {
            this.grainFactory = grainFactory;

            this.logger           = logger;
            this.localSiloDetails = localSiloDetails;

            // register timer to report every second
            timer = new Timer(ProcessStats, null, 1 * 1000, 1 * 1000);
        }
 public MembershipTableSystemTarget(
     ILocalSiloDetails localSiloDetails,
     ILoggerFactory loggerFactory,
     DeepCopier deepCopier)
     : base(CreateId(localSiloDetails), localSiloDetails.SiloAddress, lowPriority: false, loggerFactory)
 {
     logger = loggerFactory.CreateLogger <MembershipTableSystemTarget>();
     table  = new InMemoryMembershipTable(deepCopier);
     logger.LogInformation((int)ErrorCode.MembershipGrainBasedTable1, "GrainBasedMembershipTable Activated.");
 }
Example #12
0
 public SiloStatusOracle(
     ILocalSiloDetails localSiloDetails,
     MembershipTableManager membershipTableManager,
     ILogger <SiloStatusOracle> logger,
     SiloStatusListenerManager listenerManager)
 {
     this.localSiloDetails       = localSiloDetails;
     this.membershipTableManager = membershipTableManager;
     this.listenerManager        = listenerManager;
     this.log = logger;
 }
Example #13
0
 internal RemoteGrainDirectory(
     ILocalSiloDetails localSiloDetails,
     LocalGrainDirectory localGrainDirectory,
     GrainId id,
     ILoggerFactory loggerFactory)
     : base(id, localSiloDetails.SiloAddress, loggerFactory)
 {
     this.localGrainDirectory = localGrainDirectory;
     partition = localGrainDirectory.DirectoryPartition;
     logger    = loggerFactory.CreateLogger($"{typeof(RemoteGrainDirectory).FullName}.CacheValidator");
 }
 public Dashboard(
     ILogger <Dashboard> logger,
     ILocalSiloDetails localSiloDetails,
     IGrainFactory grainFactory,
     IOptions <DashboardOptions> dashboardOptions)
 {
     this.logger           = logger;
     this.grainFactory     = grainFactory;
     this.localSiloDetails = localSiloDetails;
     this.dashboardOptions = dashboardOptions.Value;
 }
Example #15
0
 public SiloStatusOracle(
     ILocalSiloDetails localSiloDetails,
     MembershipTableManager membershipTableManager,
     ILoggerFactory loggerFactory,
     SiloStatusListenerManager listenerManager)
 {
     this.localSiloDetails       = localSiloDetails;
     this.membershipTableManager = membershipTableManager;
     this.listenerManager        = listenerManager;
     this.log = loggerFactory.CreateLogger("MembershipOracle");
 }
Example #16
0
        private readonly Grain grain;   // links to the grain that owns this service object

        public ProtocolServices(
            Grain gr,
            ILoggerFactory loggerFactory,
            DeepCopier deepCopier,
            ILocalSiloDetails siloDetails)
        {
            this.grain       = gr;
            this.log         = loggerFactory.CreateLogger <ProtocolServices>();
            this.deepCopier  = deepCopier;
            this.MyClusterId = siloDetails.ClusterId;
        }
Example #17
0
 public HubListUpdater(
     IGrainFactory grainFactory,
     ILogger <HubListUpdater> logger,
     ILocalSiloDetails localSiloDetails,
     IHubContext <LocationHub> hubContext)
 {
     _grainFactory        = grainFactory;
     _logger              = logger;
     _localSiloDetails    = localSiloDetails;
     _locationBroadcaster = new RemoteLocationHub(hubContext);
 }
Example #18
0
 public GrainVersionStore(
     IInternalGrainFactory grainFactory,
     ILocalSiloDetails siloDetails,
     IServiceProvider services,
     ISiloLifecycle siloLifecycle)
 {
     this.grainFactory    = grainFactory;
     this.services        = services;
     this.siloLifecycle   = siloLifecycle;
     this.clusterId       = siloDetails.ClusterId;
     this.hasGrainStorage = this.services.GetService <IGrainStorage>() != null;
 }
Example #19
0
 public MembershipSystemTarget(
     MembershipTableManager membershipTableManager,
     ILocalSiloDetails localSiloDetails,
     ILoggerFactory loggerFactory,
     ILogger <MembershipSystemTarget> log,
     IInternalGrainFactory grainFactory)
     : base(Constants.MembershipServiceType, localSiloDetails.SiloAddress, loggerFactory)
 {
     this.membershipTableManager = membershipTableManager;
     this.log          = log;
     this.grainFactory = grainFactory;
 }
Example #20
0
        public GrainTypeManager(ILocalSiloDetails siloDetails, SiloAssemblyLoader loader, DefaultPlacementStrategy defaultPlacementStrategy, SerializationManager serializationManager, MultiClusterRegistrationStrategyManager multiClusterRegistrationStrategyManager)
        {
            var localTestMode = siloDetails.SiloAddress.Endpoint.Address.Equals(IPAddress.Loopback);

            this.defaultPlacementStrategy = defaultPlacementStrategy.PlacementStrategy;
            this.loader = loader;
            this.serializationManager = serializationManager;
            this.multiClusterRegistrationStrategyManager = multiClusterRegistrationStrategyManager;
            grainInterfaceMap        = new GrainInterfaceMap(localTestMode, this.defaultPlacementStrategy);
            ClusterGrainInterfaceMap = grainInterfaceMap;
            grainInterfaceMapsBySilo = new Dictionary <SiloAddress, GrainInterfaceMap>();
        }
Example #21
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FabricMembershipOracle"/> class.
 /// </summary>
 /// <param name="localSiloDetails">The silo which this instance will provide membership information for.</param>
 /// <param name="globalConfig">The cluster configuration.</param>
 /// <param name="fabricServiceSiloResolver">The service resolver which this instance will use.</param>
 /// <param name="logger">The logger.</param>
 public FabricMembershipOracle(
     ILocalSiloDetails localSiloDetails,
     GlobalConfiguration globalConfig,
     IFabricServiceSiloResolver fabricServiceSiloResolver,
     ILogger <FabricMembershipOracle> logger)
 {
     this.log = logger;
     this.localSiloDetails          = localSiloDetails;
     this.globalConfig              = globalConfig;
     this.fabricServiceSiloResolver = fabricServiceSiloResolver;
     this.silos[this.SiloAddress]   = new SiloEntry(SiloStatus.Created, this.SiloName);
 }
Example #22
0
        public Catalog(
            ILocalSiloDetails localSiloDetails,
            GrainLocator grainLocator,
            GrainDirectoryResolver grainDirectoryResolver,
            ILocalGrainDirectory grainDirectory,
            ActivationDirectory activationDirectory,
            ActivationCollector activationCollector,
            IServiceProvider serviceProvider,
            ILoggerFactory loggerFactory,
            IOptions <GrainCollectionOptions> collectionOptions,
            RuntimeMessagingTrace messagingTrace,
            GrainContextActivator grainActivator,
            GrainPropertiesResolver grainPropertiesResolver)
            : base(Constants.CatalogType, localSiloDetails.SiloAddress, loggerFactory)
        {
            this.LocalSilo               = localSiloDetails.SiloAddress;
            this.localSiloName           = localSiloDetails.Name;
            this.grainLocator            = grainLocator;
            this.grainDirectoryResolver  = grainDirectoryResolver;
            this.directory               = grainDirectory;
            this.activations             = activationDirectory;
            this.serviceProvider         = serviceProvider;
            this.collectionOptions       = collectionOptions;
            this.grainActivator          = grainActivator;
            this.grainPropertiesResolver = grainPropertiesResolver;
            this.logger = loggerFactory.CreateLogger <Catalog>();
            this.activationCollector = activationCollector;
            this.RuntimeClient       = serviceProvider.GetRequiredService <InsideRuntimeClient>();

            GC.GetTotalMemory(true); // need to call once w/true to ensure false returns OK value

            IntValueStatistic.FindOrCreate(StatisticNames.CATALOG_ACTIVATION_COUNT, () => activations.Count);
            activationsCreated   = CounterStatistic.FindOrCreate(StatisticNames.CATALOG_ACTIVATION_CREATED);
            activationsDestroyed = CounterStatistic.FindOrCreate(StatisticNames.CATALOG_ACTIVATION_DESTROYED);
            IntValueStatistic.FindOrCreate(StatisticNames.MESSAGING_PROCESSING_ACTIVATION_DATA_ALL, () =>
            {
                long counter = 0;
                lock (activations)
                {
                    foreach (var activation in activations)
                    {
                        if (activation.Value is ActivationData data)
                        {
                            counter += data.GetRequestCount();
                        }
                    }
                }
                return(counter);
            });
            grainDirectory.SetSiloRemovedCatalogCallback(this.OnSiloStatusChange);
            RegisterSystemTarget(this);
        }
Example #23
0
 public SiloConnectionFactory(
     IServiceProvider serviceProvider,
     IOptions <ConnectionOptions> connectionOptions,
     IOptions <SiloConnectionOptions> siloConnectionOptions,
     ILocalSiloDetails localSiloDetails,
     ConnectionCommon connectionShared)
     : base(serviceProvider.GetRequiredServiceByKey <object, IConnectionFactory>(ServicesKey), serviceProvider, connectionOptions)
 {
     this.serviceProvider       = serviceProvider;
     this.siloConnectionOptions = siloConnectionOptions.Value;
     this.localSiloDetails      = localSiloDetails;
     this.connectionShared      = connectionShared;
 }
Example #24
0
        public MembershipTableManagerTests(ITestOutputHelper output)
        {
            this.output        = output;
            this.loggerFactory = new LoggerFactory(new[] { new XunitLoggerProvider(this.output) });

            this.localSiloDetails = Substitute.For <ILocalSiloDetails>();
            this.localSilo        = Silo("127.0.0.1:100@100");
            this.localSiloDetails.SiloAddress.Returns(this.localSilo);
            this.localSiloDetails.DnsHostName.Returns("MyServer11");
            this.localSiloDetails.Name.Returns(Guid.NewGuid().ToString("N"));

            this.fatalErrorHandler = Substitute.For <IFatalErrorHandler>();
            this.fatalErrorHandler.IsUnexpected(default).ReturnsForAnyArgs(true);
Example #25
0
 public ClientObserverRegistrar(
     ILocalSiloDetails siloDetails,
     ILocalGrainDirectory dir,
     OrleansTaskScheduler scheduler,
     ClusterConfiguration config)
     : base(Constants.ClientObserverRegistrarId, siloDetails.SiloAddress)
 {
     grainDirectory = dir;
     myAddress      = siloDetails.SiloAddress;
     this.scheduler = scheduler;
     orleansConfig  = config;
     logger         = LogManager.GetLogger(typeof(ClientObserverRegistrar).Name);
 }
Example #26
0
        private readonly Grain grain;   // links to the grain that owns this service object

        public ProtocolServices(
            Grain gr,
            ILoggerFactory loggerFactory,
            SerializationManager serializationManager,
            IGrainFactory grainFactory,
            ILocalSiloDetails siloDetails)
        {
            this.grain                = gr;
            this.log                  = loggerFactory.CreateLogger <ProtocolServices>();
            this.grainFactory         = grainFactory;
            this.SerializationManager = serializationManager;
            this.MyClusterId          = siloDetails.ClusterId;
        }
 public TestHooksSystemTarget(
     ISiloHost host,
     ILocalSiloDetails siloDetails,
     ILoggerFactory loggerFactory,
     TestHooksHostEnvironmentStatistics hostEnvironmentStatistics,
     IOptions <LoadSheddingOptions> loadSheddingOptions)
     : base(Constants.TestHooksSystemTargetId, siloDetails.SiloAddress, loggerFactory)
 {
     this.host = host;
     this.hostEnvironmentStatistics = hostEnvironmentStatistics;
     this.loadSheddingOptions       = loadSheddingOptions.Value;
     this.consistentRingProvider    = this.host.Services.GetRequiredService <IConsistentRingProvider>();
 }
Example #28
0
 public SiloConnectionFactory(
     IServiceProvider serviceProvider,
     IOptions <ConnectionOptions> connectionOptions,
     IConnectionFactory connectionFactory,
     MessageFactory messageFactory,
     INetworkingTrace trace,
     ILocalSiloDetails localSiloDetails)
     : base(connectionFactory, serviceProvider, connectionOptions)
 {
     this.serviceProvider  = serviceProvider;
     this.messageFactory   = messageFactory;
     this.trace            = trace;
     this.localSiloDetails = localSiloDetails;
 }
Example #29
0
 public ClientObserverRegistrar(
     ILocalSiloDetails siloDetails,
     ILocalGrainDirectory dir,
     OrleansTaskScheduler scheduler,
     ClusterConfiguration config,
     ILoggerFactory loggerFactory)
     : base(Constants.ClientObserverRegistrarId, siloDetails.SiloAddress, loggerFactory)
 {
     grainDirectory = dir;
     myAddress      = siloDetails.SiloAddress;
     this.scheduler = scheduler;
     orleansConfig  = config;
     logger         = loggerFactory.CreateLogger <ClientObserverRegistrar>();
 }
Example #30
0
 public ClientObserverRegistrar(
     ILocalSiloDetails siloDetails,
     ILocalGrainDirectory dir,
     OrleansTaskScheduler scheduler,
     IOptions <SiloMessagingOptions> messagingOptions,
     ILoggerFactory loggerFactory)
     : base(Constants.ClientObserverRegistrarId, siloDetails.SiloAddress, loggerFactory)
 {
     grainDirectory        = dir;
     myAddress             = siloDetails.SiloAddress;
     this.scheduler        = scheduler;
     this.messagingOptions = messagingOptions.Value;
     logger = loggerFactory.CreateLogger <ClientObserverRegistrar>();
 }
Example #31
0
 public GrainRuntime(
     GlobalConfiguration globalConfig,
     ILocalSiloDetails localSiloDetails,
     IGrainFactory grainFactory,
     ITimerRegistry timerRegistry,
     IReminderRegistry reminderRegistry,
     IStreamProviderManager streamProviderManager,
     IServiceProvider serviceProvider,
     IRuntimeClient runtimeClient)
 {
     this.runtimeClient = runtimeClient;
     ServiceId = globalConfig.ServiceId;
     SiloIdentity = localSiloDetails.SiloAddress.ToLongString();
     GrainFactory = grainFactory;
     TimerRegistry = timerRegistry;
     ReminderRegistry = reminderRegistry;
     StreamProviderManager = streamProviderManager;
     ServiceProvider = serviceProvider;
 }