private void StartInstanceInternal(InstanceGroupConfig group, bool isForce = false) { DxStoreManager.Tracer.TraceDebug <string, string, bool>((long)this.Config.Identity.GetHashCode(), "{0}: Starting instance checker {1} (group.IsRestartRequested: {2})", this.Config.Identity, group.Identity, group.IsRestartRequested); if (group.IsRestartRequested) { this.ConfigProvider.SetRestartRequired(group.Name, false); group.IsRestartRequested = false; } else if (!this.CheckStartProcessLimits(group, isForce)) { return; } DxStoreInstanceChecker dxStoreInstanceChecker = new DxStoreInstanceChecker(this, group); this.instanceMap[group.Name] = new Tuple <InstanceGroupConfig, DxStoreInstanceChecker>(group, dxStoreInstanceChecker); dxStoreInstanceChecker.Start(); }
public void CheckGroup(InstanceGroupConfig group) { if (!group.IsConfigurationReady) { return; } bool flag = false; bool flag2 = false; bool flag3 = false; Tuple <InstanceGroupConfig, DxStoreInstanceChecker> instanceContainer = this.GetInstanceContainer(group.Name); if (instanceContainer == null) { flag = (group.IsAutomaticActionsAllowed && group.IsMembersContainSelf); } else if (!group.IsAutomaticActionsAllowed || !group.IsMembersContainSelf) { flag2 = true; } else { InstanceGroupConfig item = instanceContainer.Item1; DxStoreInstanceChecker item2 = instanceContainer.Item2; if (item2.IsRestartRequested || group.IsRestartRequested) { flag3 = true; } } if (flag3) { this.RestartInstanceInternal(group, false); } else if (flag2) { this.StopInstanceInternal(group.Name, false); } else if (flag) { this.StartInstanceInternal(group, false); } if (!group.IsMembersContainSelf && !group.IsConfigurationManagedExternally && DxStoreInstance.RemoveGroupStorage(this.EventLogger, group)) { this.RemoveGroupConfig(group); } }