예제 #1
0
 public InsideRuntimeClient(
     Dispatcher dispatcher,
     Catalog catalog,
     ILocalGrainDirectory directory,
     ClusterConfiguration config,
     IConsistentRingProvider ring,
     GrainTypeManager typeManager,
     TypeMetadataCache typeMetadataCache,
     Func<ISiloStatusOracle> siloStatusOracle,
     OrleansTaskScheduler scheduler)
 {
     this.dispatcher = dispatcher;
     MySilo = catalog.LocalSilo;
     this.directory = directory;
     ConsistentRingProvider = ring;
     Catalog = catalog;
     disposables = new List<IDisposable>();
     callbacks = new ConcurrentDictionary<CorrelationId, CallbackData>();
     Config = config;
     config.OnConfigChange("Globals/Message", () => ResponseTimeout = Config.Globals.ResponseTimeout);
     RuntimeClient.Current = this;
     this.typeManager = typeManager;
     this.Scheduler = scheduler;
     this.siloStatusOracle = new Lazy<ISiloStatusOracle>(siloStatusOracle);
     this.ConcreteGrainFactory = new GrainFactory(this, typeMetadataCache);
     RuntimeClient.Current = this;
 }
예제 #2
0
 public InsideRuntimeClient(
     Dispatcher dispatcher,
     Catalog catalog,
     ILocalGrainDirectory directory,
     ClusterConfiguration config,
     IConsistentRingProvider ring,
     GrainTypeManager typeManager,
     TypeMetadataCache typeMetadataCache,
     Func <ISiloStatusOracle> siloStatusOracle,
     OrleansTaskScheduler scheduler)
 {
     this.dispatcher        = dispatcher;
     MySilo                 = catalog.LocalSilo;
     this.directory         = directory;
     ConsistentRingProvider = ring;
     Catalog                = catalog;
     disposables            = new List <IDisposable>();
     callbacks              = new ConcurrentDictionary <CorrelationId, CallbackData>();
     Config                 = config;
     config.OnConfigChange("Globals/Message", () => ResponseTimeout = Config.Globals.ResponseTimeout);
     RuntimeClient.Current     = this;
     this.typeManager          = typeManager;
     this.Scheduler            = scheduler;
     this.siloStatusOracle     = new Lazy <ISiloStatusOracle>(siloStatusOracle);
     this.ConcreteGrainFactory = new GrainFactory(this, typeMetadataCache);
     tryResendMessage          = TryResendMessage;
     unregisterCallback        = msg => UnRegisterCallback(msg.Id);
     RuntimeClient.Current     = this;
 }
예제 #3
0
 public InsideRuntimeClient(
     Dispatcher dispatcher,
     Catalog catalog,
     ILocalGrainDirectory directory,
     SiloAddress silo,
     ClusterConfiguration config,
     IConsistentRingProvider ring,
     GrainTypeManager typeManager,
     GrainFactory grainFactory,
     InsideRcManager rcManager)
 {
     this.dispatcher        = dispatcher;
     MySilo                 = silo;
     this.directory         = directory;
     ConsistentRingProvider = ring;
     Catalog                = catalog;
     disposables            = new List <IDisposable>();
     callbacks              = new ConcurrentDictionary <CorrelationId, CallbackData>();
     Config                 = config;
     config.OnConfigChange("Globals/Message", () => ResponseTimeout = Config.Globals.ResponseTimeout);
     RuntimeClient.Current     = this;
     this.typeManager          = typeManager;
     this.InternalGrainFactory = grainFactory;
     this.RcManager            = rcManager;
     this.InsideRcManager      = rcManager;
 }
예제 #4
0
 internal ClientObserverRegistrar(SiloAddress myAddr, ISiloMessageCenter mc, ILocalGrainDirectory dir)
     : base(Constants.ClientObserverRegistrarId, myAddr)
 {
     grainDirectory     = dir;
     localMessageCenter = mc;
     myAddress          = myAddr;
 }
예제 #5
0
        public MessageCenter(
            ILocalSiloDetails siloDetails,
            MessageFactory messageFactory,
            Catalog catalog,
            Factory <MessageCenter, Gateway> gatewayFactory,
            ILogger <MessageCenter> logger,
            ISiloStatusOracle siloStatusOracle,
            ConnectionManager senderManager,
            RuntimeMessagingTrace messagingTrace,
            IOptions <SiloMessagingOptions> messagingOptions,
            PlacementService placementService,
            ILocalGrainDirectory localGrainDirectory,
            ActivationDirectory activationDirectory)
        {
            this.catalog             = catalog;
            this.messagingOptions    = messagingOptions.Value;
            this.siloStatusOracle    = siloStatusOracle;
            this.connectionManager   = senderManager;
            this.messagingTrace      = messagingTrace;
            this.placementService    = placementService;
            this.localGrainDirectory = localGrainDirectory;
            this.activationDirectory = activationDirectory;
            this.log            = logger;
            this.messageFactory = messageFactory;
            this._siloAddress   = siloDetails.SiloAddress;

            if (siloDetails.GatewayAddress != null)
            {
                Gateway = gatewayFactory(this);
            }
        }
예제 #6
0
 internal Dispatcher(
     OrleansTaskScheduler scheduler,
     MessageCenter transport,
     Catalog catalog,
     IOptionsMonitor <SiloMessagingOptions> messagingOptions,
     PlacementService placementService,
     ILocalGrainDirectory localGrainDirectory,
     GrainLocator grainLocator,
     ActivationCollector activationCollector,
     MessageFactory messageFactory,
     CompatibilityDirectorManager compatibilityDirectorManager,
     ILoggerFactory loggerFactory,
     RuntimeMessagingTrace messagingTrace,
     GrainVersionManifest versionManifest,
     IAsyncTimerFactory asyncTimerFactory,
     IncomingRequestMonitor incomingRequestMonitor)
 {
     _activationWorkloadMonitor = incomingRequestMonitor;
     this.scheduler             = scheduler;
     this.catalog                      = catalog;
     Transport                         = transport;
     this.messagingOptions             = messagingOptions.CurrentValue;
     this.invokeWorkItemLogger         = loggerFactory.CreateLogger <InvokeWorkItem>();
     this.placementService             = placementService;
     this.localGrainDirectory          = localGrainDirectory;
     this.grainLocator                 = grainLocator;
     this.activationCollector          = activationCollector;
     this.messageFactory               = messageFactory;
     this.compatibilityDirectorManager = compatibilityDirectorManager;
     this.messagingTrace               = messagingTrace;
     this._versionManifest             = versionManifest;
     logger = loggerFactory.CreateLogger <Dispatcher>();
 }
예제 #7
0
 internal Dispatcher(
     OrleansTaskScheduler scheduler,
     ISiloMessageCenter transport,
     Catalog catalog,
     IOptions <SiloMessagingOptions> messagingOptions,
     PlacementDirectorsManager placementDirectorsManager,
     ILocalGrainDirectory localGrainDirectory,
     ActivationCollector activationCollector,
     MessageFactory messageFactory,
     SerializationManager serializationManager,
     CompatibilityDirectorManager compatibilityDirectorManager,
     ILoggerFactory loggerFactory,
     IOptions <SchedulingOptions> schedulerOptions)
 {
     this.scheduler                    = scheduler;
     this.catalog                      = catalog;
     Transport                         = transport;
     this.messagingOptions             = messagingOptions.Value;
     this.invokeWorkItemLogger         = loggerFactory.CreateLogger <InvokeWorkItem>();
     this.placementDirectorsManager    = placementDirectorsManager;
     this.localGrainDirectory          = localGrainDirectory;
     this.activationCollector          = activationCollector;
     this.messageFactory               = messageFactory;
     this.serializationManager         = serializationManager;
     this.compatibilityDirectorManager = compatibilityDirectorManager;
     this.schedulingOptions            = schedulerOptions.Value;
     logger = loggerFactory.CreateLogger <Dispatcher>();
 }
예제 #8
0
 internal Dispatcher(
     OrleansTaskScheduler scheduler,
     MessageCenter messageCenter,
     Catalog catalog,
     IOptionsMonitor <SiloMessagingOptions> messagingOptions,
     PlacementService placementService,
     ILocalGrainDirectory localGrainDirectory,
     MessageFactory messageFactory,
     ILoggerFactory loggerFactory,
     ActivationDirectory activationDirectory,
     RuntimeMessagingTrace messagingTrace,
     ILocalSiloDetails localSiloDetails)
 {
     _siloAddress             = localSiloDetails.SiloAddress;
     this.scheduler           = scheduler;
     this.catalog             = catalog;
     this.messageCenter       = messageCenter;
     this.messagingOptions    = messagingOptions.CurrentValue;
     this.placementService    = placementService;
     this.localGrainDirectory = localGrainDirectory;
     this.messageFactory      = messageFactory;
     this.activationDirectory = activationDirectory;
     this.messagingTrace      = messagingTrace;
     this.logger = loggerFactory.CreateLogger <Dispatcher>();
 }
예제 #9
0
 internal Dispatcher(
     OrleansTaskScheduler scheduler,
     MessageCenter transport,
     Catalog catalog,
     IOptions <SiloMessagingOptions> messagingOptions,
     PlacementService placementService,
     ILocalGrainDirectory localGrainDirectory,
     GrainLocator grainLocator,
     ActivationCollector activationCollector,
     MessageFactory messageFactory,
     CompatibilityDirectorManager compatibilityDirectorManager,
     ILoggerFactory loggerFactory,
     IOptions <SchedulingOptions> schedulerOptions,
     RuntimeMessagingTrace messagingTrace,
     GrainTypeManager grainTypeManager)
 {
     this.scheduler                    = scheduler;
     this.catalog                      = catalog;
     Transport                         = transport;
     this.messagingOptions             = messagingOptions.Value;
     this.invokeWorkItemLogger         = loggerFactory.CreateLogger <InvokeWorkItem>();
     this.placementService             = placementService;
     this.localGrainDirectory          = localGrainDirectory;
     this.grainLocator                 = grainLocator;
     this.activationCollector          = activationCollector;
     this.messageFactory               = messageFactory;
     this.compatibilityDirectorManager = compatibilityDirectorManager;
     this.messagingTrace               = messagingTrace;
     this.grainTypeManager             = grainTypeManager;
     this.schedulingOptions            = schedulerOptions.Value;
     logger = loggerFactory.CreateLogger <Dispatcher>();
 }
예제 #10
0
파일: Dispatcher.cs 프로젝트: raol/orleans
        internal Dispatcher(
            OrleansTaskScheduler scheduler,
            ISiloMessageCenter transport,
            Catalog catalog,
            ClusterConfiguration config,
            PlacementDirectorsManager placementDirectorsManager,
            ILocalGrainDirectory localGrainDirectory,
            MessageFactory messagefactory,
            SerializationManager serializationManager,
            CompatibilityDirectorManager compatibilityDirectorManager)
        {
            this.scheduler = scheduler;
            this.catalog   = catalog;
            Transport      = transport;
            this.config    = config;
            this.placementDirectorsManager    = placementDirectorsManager;
            this.localGrainDirectory          = localGrainDirectory;
            this.messagefactory               = messagefactory;
            this.serializationManager         = serializationManager;
            this.compatibilityDirectorManager = compatibilityDirectorManager;
            logger = LogManager.GetLogger("Dispatcher", LoggerType.Runtime);
            rejectionInjectionRate = config.Globals.RejectionInjectionRate;
            double messageLossInjectionRate = config.Globals.MessageLossInjectionRate;

            errorInjection     = rejectionInjectionRate > 0.0d || messageLossInjectionRate > 0.0d;
            errorInjectionRate = rejectionInjectionRate + messageLossInjectionRate;
            random             = new SafeRandom();
        }
예제 #11
0
파일: Dispatcher.cs 프로젝트: lcksy/orleans
 internal Dispatcher(
     OrleansTaskScheduler scheduler,
     ISiloMessageCenter transport,
     Catalog catalog,
     ClusterConfiguration config,
     PlacementDirectorsManager placementDirectorsManager,
     ILocalGrainDirectory localGrainDirectory,
     MessageFactory messagefactory,
     SerializationManager serializationManager,
     CompatibilityDirectorManager compatibilityDirectorManager,
     ILoggerFactory loggerFactory)
 {
     this.loggerFactory                = loggerFactory;
     this.scheduler                    = scheduler;
     this.catalog                      = catalog;
     Transport                         = transport;
     this.config                       = config;
     this.invokeWorkItemLogger         = loggerFactory.CreateLogger <InvokeWorkItem>();
     this.placementDirectorsManager    = placementDirectorsManager;
     this.localGrainDirectory          = localGrainDirectory;
     this.messagefactory               = messagefactory;
     this.serializationManager         = serializationManager;
     this.compatibilityDirectorManager = compatibilityDirectorManager;
     logger = new LoggerWrapper <Dispatcher>(loggerFactory);
     random = new SafeRandom();
 }
예제 #12
0
 internal ClientObserverRegistrar(SiloAddress myAddr, ILocalGrainDirectory dir, OrleansTaskScheduler scheduler, ClusterConfiguration config)
     : base(Constants.ClientObserverRegistrarId, myAddr)
 {
     grainDirectory = dir;
     myAddress = myAddr;
     this.scheduler = scheduler;
     orleansConfig = config;
     logger = LogManager.GetLogger(typeof(ClientObserverRegistrar).Name);
 }
예제 #13
0
 internal ClientObserverRegistrar(SiloAddress myAddr, ILocalGrainDirectory dir, OrleansTaskScheduler scheduler, ClusterConfiguration config)
     : base(Constants.ClientObserverRegistrarId, myAddr)
 {
     grainDirectory = dir;
     myAddress      = myAddr;
     this.scheduler = scheduler;
     orleansConfig  = config;
     logger         = TraceLogger.GetLogger(typeof(ClientObserverRegistrar).Name);
 }
        private long lastNumHits;           // for stats

        internal AdaptiveDirectoryCacheMaintainer(ILocalGrainDirectory router, IGrainDirectoryCache <TValue> cache)
        {
            this.router = (LocalGrainDirectory)router;
            this.cache  = (AdaptiveGrainDirectoryCache <TValue>)cache;

            lastNumAccesses = 0;
            lastNumHits     = 0;
            OnFault         = FaultBehavior.RestartOnFault;
        }
예제 #15
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);
        }
예제 #16
0
 public ClientObserverRegistrar(
     SiloInitializationParameters initializationParameters,
     ILocalGrainDirectory dir,
     OrleansTaskScheduler scheduler,
     ClusterConfiguration config)
     : base(Constants.ClientObserverRegistrarId, initializationParameters.SiloAddress)
 {
     grainDirectory = dir;
     myAddress      = initializationParameters.SiloAddress;
     this.scheduler = scheduler;
     orleansConfig  = config;
     logger         = LogManager.GetLogger(typeof(ClientObserverRegistrar).Name);
 }
예제 #17
0
 public ClientObserverRegistrar(
     SiloInitializationParameters initializationParameters,
     ILocalGrainDirectory dir,
     OrleansTaskScheduler scheduler,
     ClusterConfiguration config)
     : base(Constants.ClientObserverRegistrarId, initializationParameters.SiloAddress)
 {
     grainDirectory = dir;
     myAddress = initializationParameters.SiloAddress;
     this.scheduler = scheduler;
     orleansConfig = config;
     logger = LogManager.GetLogger(typeof(ClientObserverRegistrar).Name);
 }
예제 #18
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>();
 }
예제 #19
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>();
 }
예제 #20
0
        public GrainLocatorTests(ITestOutputHelper output)
        {
            this.loggerFactory = new LoggerFactory(new[] { new XunitLoggerProvider(output) });
            this.lifecycle     = new SiloLifecycleSubject(this.loggerFactory.CreateLogger <SiloLifecycleSubject>());

            this.grainDirectory        = Substitute.For <IGrainDirectory>();
            this.localGrainDirectory   = Substitute.For <ILocalGrainDirectory>();
            this.mockMembershipService = new MockClusterMembershipService();

            this.grainLocator = new GrainLocator(
                this.grainDirectory,
                new DhtGrainLocator(this.localGrainDirectory),
                this.mockMembershipService.Target);

            this.grainLocator.Participate(this.lifecycle);
        }
예제 #21
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");
 }
예제 #22
0
        public CachedGrainLocatorTests(ITestOutputHelper output)
        {
            this.loggerFactory = new LoggerFactory(new[] { new XunitLoggerProvider(output) });
            this.lifecycle     = new SiloLifecycleSubject(this.loggerFactory.CreateLogger <SiloLifecycleSubject>());

            this.grainDirectory         = Substitute.For <IGrainDirectory>();
            this.grainDirectoryResolver = Substitute.For <IGrainDirectoryResolver>();
            this.grainDirectoryResolver.Resolve(Arg.Any <LegacyGrainId>()).Returns(this.grainDirectory);
            this.grainDirectoryResolver.Directories.Returns(new[] { this.grainDirectory });
            this.localGrainDirectory   = Substitute.For <ILocalGrainDirectory>();
            this.mockMembershipService = new MockClusterMembershipService();

            this.grainLocator = new CachedGrainLocator(
                this.grainDirectoryResolver,
                new DhtGrainLocator(this.localGrainDirectory),
                this.mockMembershipService.Target);

            this.grainLocator.Participate(this.lifecycle);
        }
예제 #23
0
 public InsideRuntimeClient(
     Dispatcher dispatcher,
     Catalog catalog,
     ILocalGrainDirectory directory,
     SiloAddress silo,
     ClusterConfiguration config,
     IConsistentRingProvider ring,
     GrainTypeManager typeManager)
 {
     this.dispatcher = dispatcher;
     MySilo = silo;
     this.directory = directory;
     ConsistentRingProvider = ring;
     Catalog = catalog;
     disposables = new List<IDisposable>();
     callbacks = new ConcurrentDictionary<CorrelationId, CallbackData>();
     Config = config;
     config.OnConfigChange("Globals/Message", () => ResponseTimeout = Config.Globals.ResponseTimeout);
     CallbackData.Config = Config.Globals;
     RuntimeClient.Current = this;
     this.typeManager = typeManager;
 }
예제 #24
0
 public InternalGrainRuntime(
     MessageCenter messageCenter,
     Catalog catalog,
     GrainVersionManifest versionManifest,
     RuntimeMessagingTrace messagingTrace,
     GrainLocator grainLocator,
     CompatibilityDirectorManager compatibilityDirectorManager,
     IOptions <GrainCollectionOptions> collectionOptions,
     ILocalGrainDirectory localGrainDirectory,
     IActivationWorkingSet activationWorkingSet)
 {
     MessageCenter                = messageCenter;
     Catalog                      = catalog;
     RuntimeClient                = catalog.RuntimeClient;
     GrainVersionManifest         = versionManifest;
     MessagingTrace               = messagingTrace;
     CompatibilityDirectorManager = compatibilityDirectorManager;
     GrainLocator                 = grainLocator;
     CollectionOptions            = collectionOptions;
     LocalGrainDirectory          = localGrainDirectory;
     ActivationWorkingSet         = activationWorkingSet;
 }
예제 #25
0
        public CachedGrainLocatorTests(ITestOutputHelper output)
        {
            this.loggerFactory = new LoggerFactory(new[] { new XunitLoggerProvider(output) });
            this.lifecycle     = new SiloLifecycleSubject(this.loggerFactory.CreateLogger <SiloLifecycleSubject>());

            this.grainDirectory = Substitute.For <IGrainDirectory>();
            var services = new ServiceCollection()
                           .AddSingleton(typeof(IKeyedServiceCollection <,>), typeof(KeyedServiceCollection <,>))
                           .AddSingletonKeyedService <string, IGrainDirectory>(GrainDirectoryAttribute.DEFAULT_GRAIN_DIRECTORY, (sp, name) => this.grainDirectory)
                           .BuildServiceProvider();

            this.grainDirectoryResolver = new GrainDirectoryResolver(
                services,
                new GrainPropertiesResolver(new NoOpClusterManifestProvider()),
                Array.Empty <IGrainDirectoryResolver>());
            this.localGrainDirectory   = Substitute.For <ILocalGrainDirectory>();
            this.mockMembershipService = new MockClusterMembershipService();

            this.grainLocator = new CachedGrainLocator(
                this.grainDirectoryResolver,
                this.mockMembershipService.Target);

            this.grainLocator.Participate(this.lifecycle);
        }
예제 #26
0
 public DhtGrainLocator(ILocalGrainDirectory localGrainDirectory)
 {
     this.localGrainDirectory = localGrainDirectory;
 }
예제 #27
0
 public InClusterGrainLocator(ILocalGrainDirectory localGrainDirectory)
 {
     this.localGrainDirectory = localGrainDirectory;
 }
예제 #28
0
파일: Catalog.cs 프로젝트: Carlm-MS/orleans
        public Catalog(
            SiloInitializationParameters siloInitializationParameters, 
            ILocalGrainDirectory grainDirectory, 
            GrainTypeManager typeManager,
            OrleansTaskScheduler scheduler, 
            ActivationDirectory activationDirectory, 
            ClusterConfiguration config, 
            GrainCreator grainCreator,
            NodeConfiguration nodeConfig,
            ISiloMessageCenter messageCenter,
            PlacementDirectorsManager placementDirectorsManager)
            : base(Constants.CatalogId, messageCenter.MyAddress)
        {
            LocalSilo = siloInitializationParameters.SiloAddress;
            localSiloName = siloInitializationParameters.Name;
            directory = grainDirectory;
            activations = activationDirectory;
            this.scheduler = scheduler;
            GrainTypeManager = typeManager;
            collectionNumber = 0;
            destroyActivationsNumber = 0;
            this.grainCreator = grainCreator;
            this.nodeConfig = nodeConfig;

            logger = LogManager.GetLogger("Catalog", Runtime.LoggerType.Runtime);
            this.config = config.Globals;
            ActivationCollector = new ActivationCollector(config);
            this.Dispatcher = new Dispatcher(scheduler, messageCenter, this, config, placementDirectorsManager);
            GC.GetTotalMemory(true); // need to call once w/true to ensure false returns OK value

            config.OnConfigChange("Globals/Activation", () => scheduler.RunOrQueueAction(Start, SchedulingContext), false);
            IntValueStatistic.FindOrCreate(StatisticNames.CATALOG_ACTIVATION_COUNT, () => activations.Count);
            activationsCreated = CounterStatistic.FindOrCreate(StatisticNames.CATALOG_ACTIVATION_CREATED);
            activationsDestroyed = CounterStatistic.FindOrCreate(StatisticNames.CATALOG_ACTIVATION_DESTROYED);
            activationsFailedToActivate = CounterStatistic.FindOrCreate(StatisticNames.CATALOG_ACTIVATION_FAILED_TO_ACTIVATE);
            collectionCounter = CounterStatistic.FindOrCreate(StatisticNames.CATALOG_ACTIVATION_COLLECTION_NUMBER_OF_COLLECTIONS);
            inProcessRequests = IntValueStatistic.FindOrCreate(StatisticNames.MESSAGING_PROCESSING_ACTIVATION_DATA_ALL, () =>
            {
                long counter = 0;
                lock (activations)
                {
                    foreach (var activation in activations)
                    {
                        ActivationData data = activation.Value;
                        counter += data.GetRequestCount();
                    }
                }
                return counter;
            });
            maxWarningRequestProcessingTime = this.config.ResponseTimeout.Multiply(5);
            maxRequestProcessingTime = this.config.MaxRequestProcessingTime;
        }
예제 #29
0
파일: Catalog.cs 프로젝트: kucheruk/orleans
        internal Catalog(
            GrainId grainId, 
            SiloAddress silo, 
            string siloName, 
            ILocalGrainDirectory grainDirectory, 
            GrainTypeManager typeManager,
            OrleansTaskScheduler scheduler, 
            ActivationDirectory activationDirectory, 
            ClusterConfiguration config, 
            IGrainRuntime grainRuntime,
            out Action<Dispatcher> setDispatcher)
            : base(grainId, silo)
        {
            LocalSilo = silo;
            localSiloName = siloName;
            directory = grainDirectory;
            activations = activationDirectory;
            this.scheduler = scheduler;
            GrainTypeManager = typeManager;
            this.grainRuntime = grainRuntime;
            collectionNumber = 0;
            destroyActivationsNumber = 0;

            logger = TraceLogger.GetLogger("Catalog", TraceLogger.LoggerType.Runtime);
            this.config = config.Globals;
            setDispatcher = d => dispatcher = d;
            ActivationCollector = new ActivationCollector(config);
            GC.GetTotalMemory(true); // need to call once w/true to ensure false returns OK value

            config.OnConfigChange("Globals/Activation", () => scheduler.RunOrQueueAction(Start, SchedulingContext), false);
            IntValueStatistic.FindOrCreate(StatisticNames.CATALOG_ACTIVATION_COUNT, () => activations.Count);
            activationsCreated = CounterStatistic.FindOrCreate(StatisticNames.CATALOG_ACTIVATION_CREATED);
            activationsDestroyed = CounterStatistic.FindOrCreate(StatisticNames.CATALOG_ACTIVATION_DESTROYED);
            activationsFailedToActivate = CounterStatistic.FindOrCreate(StatisticNames.CATALOG_ACTIVATION_FAILED_TO_ACTIVATE);
            collectionCounter = CounterStatistic.FindOrCreate(StatisticNames.CATALOG_ACTIVATION_COLLECTION_NUMBER_OF_COLLECTIONS);
            inProcessRequests = IntValueStatistic.FindOrCreate(StatisticNames.MESSAGING_PROCESSING_ACTIVATION_DATA_ALL, () =>
            {
                long counter = 0;
                lock (activations)
                {
                    foreach (var activation in activations)
                    {
                        ActivationData data = activation.Value;
                        counter += data.GetRequestCount();
                    }
                }
                return counter;
            });
        }