/// <summary> /// This is used by Kvs and Volatile actor state provider. /// </summary> /// <param name="codePackage"></param> /// <param name="actorImplType"></param> /// <returns></returns> internal static ReplicatorSettings GetActorReplicatorSettings(CodePackageActivationContext codePackage, Type actorImplType) { var settings = ReplicatorSettings.LoadFrom( codePackage, ActorNameFormat.GetConfigPackageName(actorImplType), ActorNameFormat.GetFabricServiceReplicatorConfigSectionName(actorImplType)); settings.SecurityCredentials = SecurityCredentials.LoadFrom( codePackage, ActorNameFormat.GetConfigPackageName(actorImplType), ActorNameFormat.GetFabricServiceReplicatorSecurityConfigSectionName(actorImplType)); var nodeContext = FabricRuntime.GetNodeContext(); var endpoint = codePackage.GetEndpoint(ActorNameFormat.GetFabricServiceReplicatorEndpointName(actorImplType)); settings.ReplicatorAddress = string.Format( CultureInfo.InvariantCulture, "{0}:{1}", nodeContext.IPAddressOrFQDN, endpoint.Port); if (!settings.MaxPrimaryReplicationQueueSize.HasValue) { settings.MaxPrimaryReplicationQueueSize = DefaultMaxPrimaryReplicationQueueSize; } if (!settings.MaxSecondaryReplicationQueueSize.HasValue) { settings.MaxSecondaryReplicationQueueSize = DefaultMaxSecondaryReplicationQueueSize; } return(settings); }
ReplicatorSettings BuildReplicatorSettings() { var codePackage = initParams.CodePackageActivationContext; var replicatorSettings = ReplicatorSettings.LoadFrom(codePackage, "Config", "ReplicatorConfig"); replicatorSettings.SecurityCredentials = SecurityCredentials.LoadFrom(codePackage, "Config", "ReplicatorSecurityConfig"); var nodeContext = FabricRuntime.GetNodeContext(); var endpoint = codePackage.GetEndpoint("ReplicatorEndpoint"); replicatorSettings.ReplicatorAddress = string.Format(CultureInfo.InvariantCulture, "{0}:{1}", nodeContext.IPAddressOrFQDN, endpoint.Port); return(replicatorSettings); }
private ReliableStateManagerReplicatorSettings LoadReplicatorSettingsFromConfigPackage(bool addChangeListener) { ReliableStateManagerReplicatorSettings settings = null; var configPackage = this.GetConfigurationPackage(); if (configPackage == null) { settings = new ReliableStateManagerReplicatorSettings(); } else { if (string.IsNullOrEmpty(this._configuration.ReplicatorSettingsSectionName) || !configPackage.Settings.Sections.Contains(this._configuration.ReplicatorSettingsSectionName)) { DataImplTrace.Source.WriteWarningWithId( TraceType, this._traceId, "Using default replicator settings, unable to load replicator settings config section named '{0}' from config package named '{1}'.", this._configuration.ReplicatorSettingsSectionName, this._configuration.ConfigPackageName); settings = new ReliableStateManagerReplicatorSettings(); } else { DataImplTrace.Source.WriteInfoWithId( TraceType, this._traceId, "Loading replicator settings using <config package name: '{0}', settings section name: '{1}'>", this._configuration.ConfigPackageName, this._configuration.ReplicatorSettingsSectionName); settings = ReliableStateManagerReplicatorSettingsUtil.LoadFrom( this.InitializationParameters.CodePackageActivationContext, this._configuration.ConfigPackageName, this._configuration.ReplicatorSettingsSectionName); } // SecurityCredentials.LoadFrom doesn't return the correct value when CredentialType is None in config. todo: find bug# // To workaround this bug, only read replicator security settings if CredentialType is present and not explicitly None. const string replicatorCredentialTypeName = "CredentialType"; if (string.IsNullOrEmpty(this._configuration.ReplicatorSecuritySectionName) || !configPackage.Settings.Sections.Contains(this._configuration.ReplicatorSecuritySectionName) || !configPackage.Settings.Sections[this._configuration.ReplicatorSecuritySectionName].Parameters.Contains(replicatorCredentialTypeName) || configPackage.Settings.Sections[this._configuration.ReplicatorSecuritySectionName].Parameters[replicatorCredentialTypeName].Value.Equals( "None", StringComparison.OrdinalIgnoreCase)) { DataImplTrace.Source.WriteWarningWithId( TraceType, this._traceId, "Using default replicator security settings, unable to load replicator security settings config section named '{0}' from config package named '{1}'.", this._configuration.ReplicatorSecuritySectionName, this._configuration.ConfigPackageName); } else { if (addChangeListener) { this.InitializationParameters.CodePackageActivationContext.ConfigurationPackageModifiedEvent += this.OnConfigurationPackageModified; } settings.SecurityCredentials = SecurityCredentials.LoadFrom( this.InitializationParameters.CodePackageActivationContext, this._configuration.ConfigPackageName, this._configuration.ReplicatorSecuritySectionName); } } if (string.IsNullOrWhiteSpace(settings.ReplicatorAddress)) { settings.ReplicatorAddress = this.TryGetDefaultReplicatorAddress(); } return(settings); }