Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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);
            }
        }