public ProtocolServices( Grain gr, ILoggerFactory loggerFactory, IMultiClusterRegistrationStrategy strategy, SerializationManager serializationManager, IInternalGrainFactory grainFactory, IOptions <SiloOptions> siloOptions, IOptions <MultiClusterOptions> multiClusterOptions, IMultiClusterOracle multiClusterOracle) { this.grain = gr; this.log = loggerFactory.CreateLogger <ProtocolServices>(); this.grainFactory = grainFactory; this.RegistrationStrategy = strategy; this.SerializationManager = serializationManager; this.multiClusterOracle = multiClusterOracle; this.siloOptions = siloOptions.Value; this.multiClusterOptions = multiClusterOptions.Value; if (!this.multiClusterOptions.HasMultiClusterNetwork) { // we are creating a default multi-cluster configuration containing exactly one cluster, this one. this.pseudoMultiClusterConfiguration = PseudoMultiClusterConfigurations.FindOrCreate( this.siloOptions.ClusterId, CreatePseudoConfig); } }
public MultiClusterGossipChannelFactory(IOptions <SiloOptions> siloOptions, IOptions <MultiClusterOptions> multiClusterOptions, IServiceProvider serviceProvider, ILogger <MultiClusterGossipChannelFactory> logger) { this.siloOptions = siloOptions.Value; this.multiClusterOptions = multiClusterOptions.Value; this.serviceProvider = serviceProvider; this.logger = logger; }
public GatewayInboundConnection( ConnectionContext connection, ConnectionDelegate middleware, IServiceProvider serviceProvider, Gateway gateway, OverloadDetector overloadDetector, MessageFactory messageFactory, INetworkingTrace trace, ILocalSiloDetails siloDetails, IOptions <MultiClusterOptions> multiClusterOptions, ConnectionOptions connectionOptions, MessageCenter messageCenter, ILocalSiloDetails localSiloDetails) : base(connection, middleware, messageFactory, serviceProvider, trace) { this.connectionOptions = connectionOptions; this.gateway = gateway; this.overloadDetector = overloadDetector; this.siloDetails = siloDetails; this.messageCenter = messageCenter; this.multiClusterOptions = multiClusterOptions.Value; this.loadSheddingCounter = CounterStatistic.FindOrCreate(StatisticNames.GATEWAY_LOAD_SHEDDING); this.myAddress = localSiloDetails.SiloAddress; this.MessageReceivedCounter = CounterStatistic.FindOrCreate(StatisticNames.GATEWAY_RECEIVED); this.MessageSentCounter = CounterStatistic.FindOrCreate(StatisticNames.GATEWAY_SENT); }
internal MembershipOracleData(ILocalSiloDetails siloDetails, ILogger log, MultiClusterOptions multiClusterOptions) { logger = log; localTable = new Dictionary <SiloAddress, MembershipEntry>(); localTableCopy = new Dictionary <SiloAddress, SiloStatus>(); localTableCopyOnlyActive = new Dictionary <SiloAddress, SiloStatus>(); localNamesTableCopy = new Dictionary <SiloAddress, string>(); localMultiClusterGatewaysCopy = new List <SiloAddress>(); statusListeners = new List <ISiloStatusListener>(); SiloStartTime = DateTime.UtcNow; MyAddress = siloDetails.SiloAddress; MyHostname = siloDetails.DnsHostName; MyProxyPort = siloDetails.GatewayAddress?.Endpoint?.Port ?? 0; SiloName = siloDetails.Name; this.multiClusterActive = multiClusterOptions.HasMultiClusterNetwork; this.maxMultiClusterGateways = multiClusterOptions.MaxMultiClusterGateways; CurrentStatus = SiloStatus.Created; clusterSizeStatistic = IntValueStatistic.FindOrCreate(StatisticNames.MEMBERSHIP_ACTIVE_CLUSTER_SIZE, () => localTableCopyOnlyActive.Count); clusterStatistic = StringValueStatistic.FindOrCreate(StatisticNames.MEMBERSHIP_ACTIVE_CLUSTER, () => { List <string> list = localTableCopyOnlyActive.Keys.Select(addr => addr.ToLongString()).ToList(); list.Sort(); return(Utils.EnumerableToString(list)); }); }
public FabricMembershipOracleTests(ITestOutputHelper output) { this.Output = output; this.siloDetails = new MockSiloDetails { Name = Guid.NewGuid().ToString("N"), SiloAddress = SiloAddressUtils.NewLocalSiloAddress(SiloAddress.AllocateNewGeneration()) }; this.resolver = new MockResolver(); var multiClusterOptions = new MultiClusterOptions { HasMultiClusterNetwork = true, MaxMultiClusterGateways = 2 }; this.fabricClusteringOptions = new ServiceFabricClusteringOptions(); this.unknownSiloMonitor = new UnknownSiloMonitor( new OptionsWrapper <ServiceFabricClusteringOptions>(this.fabricClusteringOptions), new TestOutputLogger <UnknownSiloMonitor>(this.Output)); this.oracle = new FabricMembershipOracle( this.siloDetails, this.resolver, new NullLogger <FabricMembershipOracle>(), this.unknownSiloMonitor, Options.Create(multiClusterOptions)); }
/// <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="fabricServiceSiloResolver">The service resolver which this instance will use.</param> /// <param name="logger">The logger.</param> /// <param name="unknownSiloMonitor">The unknown silo monitor.</param> /// <param name="multiClusterOptions">Multi-cluster configuration parameters.</param> public FabricMembershipOracle( ILocalSiloDetails localSiloDetails, IFabricServiceSiloResolver fabricServiceSiloResolver, ILogger <FabricMembershipOracle> logger, UnknownSiloMonitor unknownSiloMonitor, IOptions <MultiClusterOptions> multiClusterOptions) { this.log = logger; this.localSiloDetails = localSiloDetails; this.fabricServiceSiloResolver = fabricServiceSiloResolver; this.unknownSiloMonitor = unknownSiloMonitor; this.multiClusterOptions = multiClusterOptions.Value; this.silos[this.SiloAddress] = new SiloEntry(SiloStatus.Created, this.SiloName); }
public ManagementGrain( IOptions <MultiClusterOptions> multiClusterOptions, IMultiClusterOracle multiClusterOracle, IInternalGrainFactory internalGrainFactory, ISiloStatusOracle siloStatusOracle, MembershipTableFactory membershipTableFactory, GrainTypeManager grainTypeManager, IVersionStore versionStore) { this.multiClusterOptions = multiClusterOptions.Value; this.multiClusterOracle = multiClusterOracle; this.internalGrainFactory = internalGrainFactory; this.siloStatusOracle = siloStatusOracle; this.membershipTableFactory = membershipTableFactory; this.grainTypeManager = grainTypeManager; this.versionStore = versionStore; }
internal GatewayAcceptor( MessageCenter msgCtr, Gateway gateway, IPEndPoint gatewayAddress, MessageFactory messageFactory, SerializationManager serializationManager, ExecutorService executorService, ILocalSiloDetails siloDetails, IOptions <MultiClusterOptions> multiClusterOptions, ILoggerFactory loggerFactory) : base(msgCtr, gatewayAddress, SocketDirection.GatewayToClient, messageFactory, serializationManager, executorService, loggerFactory) { this.gateway = gateway; this.loadSheddingCounter = CounterStatistic.FindOrCreate(StatisticNames.GATEWAY_LOAD_SHEDDING); this.gatewayTrafficCounter = CounterStatistic.FindOrCreate(StatisticNames.GATEWAY_RECEIVED); this.siloDetails = siloDetails; this.multiClusterOptions = multiClusterOptions.Value; }
public GlobalSingleInstanceActivationMaintainer( LocalGrainDirectory router, ILogger logger, IInternalGrainFactory grainFactory, IMultiClusterOracle multiClusterOracle, ExecutorService executorService, ILocalSiloDetails siloDetails, IOptions <MultiClusterOptions> multiClusterOptions, ILoggerFactory loggerFactory) : base(executorService, loggerFactory) { this.router = router; this.logger = logger; this.grainFactory = grainFactory; this.multiClusterOracle = multiClusterOracle; this.siloDetails = siloDetails; this.multiClusterOptions = multiClusterOptions.Value; this.period = multiClusterOptions.Value.GlobalSingleInstanceRetryInterval; logger.Debug("GSIP:M GlobalSingleInstanceActivationMaintainer Started, Period = {0}", period); }