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; }
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; }
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; }
internal ClientObserverRegistrar(SiloAddress myAddr, ISiloMessageCenter mc, ILocalGrainDirectory dir) : base(Constants.ClientObserverRegistrarId, myAddr) { grainDirectory = dir; localMessageCenter = mc; myAddress = myAddr; }
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); } }
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>(); }
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>(); }
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>(); }
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>(); }
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(); }
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(); }
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); }
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; }
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); }
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); }
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>(); }
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>(); }
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); }
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 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); }
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; }
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; }
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); }
public DhtGrainLocator(ILocalGrainDirectory localGrainDirectory) { this.localGrainDirectory = localGrainDirectory; }
public InClusterGrainLocator(ILocalGrainDirectory localGrainDirectory) { this.localGrainDirectory = localGrainDirectory; }
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; }
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; }); }