// Token: 0x0600054C RID: 1356 RVA: 0x00013FAC File Offset: 0x000121AC public static DataStoreSettings GetStoreConfig() { IActiveManagerSettings settings = DxStoreSetting.Instance.GetSettings(); DxStoreMode dxStoreRunMode = settings.DxStoreRunMode; DataStoreSettings dataStoreSettings = new DataStoreSettings(); if (dxStoreRunMode == DxStoreMode.Shadow) { dataStoreSettings.Primary = StoreKind.Clusdb; dataStoreSettings.Shadow = StoreKind.DxStore; dataStoreSettings.IsCompositeModeEnabled = true; } else if (dxStoreRunMode == DxStoreMode.Primary) { dataStoreSettings.Primary = StoreKind.DxStore; dataStoreSettings.Shadow = StoreKind.None; dataStoreSettings.IsCompositeModeEnabled = true; } else { dataStoreSettings.Primary = StoreKind.Clusdb; dataStoreSettings.Shadow = StoreKind.None; dataStoreSettings.IsCompositeModeEnabled = false; } return(dataStoreSettings); }
public override CommonSettings UpdateDefaultCommonSettings(CommonSettings input) { IActiveManagerSettings settings = DxStoreSetting.Instance.GetSettings(); input.IsUseHttpTransportForInstanceCommunication = settings.DxStoreIsUseHttpForInstanceCommunication; input.IsUseHttpTransportForClientCommunication = settings.DxStoreIsUseHttpForClientCommunication; input.IsUseBinarySerializerForClientCommunication = settings.DxStoreIsUseBinarySerializerForClientCommunication; input.IsUseEncryption = settings.DxStoreIsEncryptionEnabled; return(input); }
// Token: 0x06000ED9 RID: 3801 RVA: 0x0003F5F4 File Offset: 0x0003D7F4 public override TopologyInfo GetLocalServerTopology(bool isForceRefresh = false) { TopologyInfo topologyInfo = null; IActiveManagerSettings settings = DxStoreSetting.Instance.GetSettings(); bool flag = settings.DxStoreRunMode != DxStoreMode.Disabled; if (isForceRefresh) { Dependencies.ADConfig.Refresh("Distributed store requesting for AD config refresh since members seem to have changed"); } IADServer localServer = Dependencies.ADConfig.GetLocalServer(); if (localServer != null) { topologyInfo = new TopologyInfo(); if (flag && localServer.DatabaseAvailabilityGroup != null) { IADDatabaseAvailabilityGroup localDag = Dependencies.ADConfig.GetLocalDag(); if (localDag != null) { topologyInfo.IsConfigured = true; topologyInfo.Name = localDag.Name; if (this.fixedMemberServersMap.Count == 0) { SortedDictionary <string, string> fixedDagMembers = this.GetFixedDagMembers(); if (fixedDagMembers != null && fixedDagMembers.Count > 0) { this.fixedMemberServersMap = fixedDagMembers; this.eventLogger.Log(DxEventSeverity.Info, 0, "Found fixed dag members {0}", new object[] { string.Join(";", fixedDagMembers.Values) }); } } if (this.fixedMemberServersMap.Count > 0) { topologyInfo.Members = this.fixedMemberServersMap.Keys.ToArray <string>(); } else if (localDag.Servers != null) { topologyInfo.Members = (from s in localDag.Servers select s.Name).ToArray <string>(); } topologyInfo.IsAllMembersVersionCompatible = this.versionChecker.CheckVersionCompatibility(); } } } return(topologyInfo); }
// Token: 0x06000ED2 RID: 3794 RVA: 0x0003F3F0 File Offset: 0x0003D5F0 private void StartInternal() { lock (this.locker) { DistributedStore.Instance.StartProcessRestartTimer(); IActiveManagerSettings settings = DxStoreSetting.Instance.GetSettings(); if (settings.DxStoreRunMode != DxStoreMode.Disabled) { this.EventLogger = new DistributedStoreEventLogger(false); this.ConfigProvider = new DistributedStoreTopologyProvider(this.EventLogger, null, false); this.Manager = new DxStoreManager(this.ConfigProvider, this.EventLogger); this.Manager.Start(); } } }
internal void CheckDataStores() { IActiveManagerSettings settings = DxStoreSetting.Instance.GetSettings(); if (!settings.DxStoreIsPeriodicFixupEnabled || settings.DxStoreRunMode != DxStoreMode.Shadow) { return; } DateTimeOffset lastUpdateTime = DateTimeOffset.MinValue; DataStoreSnapshotAnalyzer analyzer = new DataStoreSnapshotAnalyzer((DiffReportVerboseMode)RegistryParameters.DistributedStoreDiffReportVerboseFlags); string text = null; if (!analyzer.IsPaxosConfiguredAndLeaderExist(out text)) { if (!this.isPaxosNotReadyLogged) { DxStoreHACrimsonEvents.DataStoreValidationSkipped.Log <string, string>("Paxos either not configured or paxos leader does not exist", text); this.isPaxosNotReadyLogged = true; } return; } this.isPaxosNotReadyLogged = false; Exception ex = Utils.RunBestEffort(delegate { lastUpdateTime = this.GetLastAnalyzeTime(); }); if (ex != null) { if (!this.isLastAnalyzeTimeFailureLogged) { DxStoreHACrimsonEvents.DataStoreValidationFailed.Log <string, Exception>("GetLastAnalyzeTime", ex); this.isLastAnalyzeTimeFailureLogged = true; } return; } this.isLastAnalyzeTimeFailureLogged = false; DateTimeOffset now = DateTimeOffset.Now; DateTimeOffset dateTimeOffset = now; if (lastUpdateTime != DateTimeOffset.MinValue) { dateTimeOffset = lastUpdateTime.Add(TimeSpan.FromSeconds((double)RegistryParameters.DistributedStoreConsistencyVerifyIntervalInSecs)); } if (dateTimeOffset > now) { if (this.lastRecordedDueTime < dateTimeOffset) { DxStoreHACrimsonEvents.DataStoreValidationSkipped.Log <string, DateTimeOffset>("Time not elapsed", dateTimeOffset); this.lastRecordedDueTime = dateTimeOffset; } return; } ex = Utils.RunBestEffort(delegate { analyzer.AnalyzeDataStores(); }); string timingInfoAsString = analyzer.GetTimingInfoAsString(); if (ex != null) { DxStoreHACrimsonEvents.DataStoreValidationFailed.Log <string, Exception>(string.Format("AnalyzeDataStores() failed. Phase: {0}, Timing: {1}", analyzer.AnalysisPhase, timingInfoAsString), ex); return; } DataStoreDiffReport report = analyzer.Container.Report; DxStoreHACrimsonEvents.DataStoreValidationCompleted.Log <bool, string>(report.IsEverythingMatches, timingInfoAsString); analyzer.LogDiffDetailsToEventLog(); this.SetLastAnalyzeTimeToNow(); bool flag = false; if (!report.IsEverythingMatches) { if (RegistryParameters.DistributedStoreDisableDxStoreFixUp) { DxStoreHACrimsonEvents.DataStoreValidationSkipped.Log <string, string>("Database fixup skipped since it is disabled in registry", string.Empty); } else if (report.TotalClusdbPropertiesCount > 0) { if (!this.IsLastLogPropertiesAreTheOnlyDifference(report)) { flag = true; } else { DxStoreHACrimsonEvents.DataStoreValidationSkipped.Log <string, string>("Database fixup skipped since last log properties are the only entries that have changed", string.Empty); } } else { DxStoreHACrimsonEvents.DataStoreValidationSkipped.Log <string, string>("Database fixup skipped since clusdb does not have single property", string.Empty); } } if (flag) { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); ex = Utils.RunBestEffort(delegate { analyzer.CopyClusdbSnapshotToDxStore(); }); long elapsedMilliseconds = stopwatch.ElapsedMilliseconds; if (ex != null) { DxStoreHACrimsonEvents.DataStoreFailedToUpdate.Log <long, Exception>(stopwatch.ElapsedMilliseconds, ex); return; } DxStoreHACrimsonEvents.DataStoreSuccessfulyUpdated.Log <long, string>(stopwatch.ElapsedMilliseconds, string.Empty); } }