// Token: 0x0600005A RID: 90 RVA: 0x00002DD0 File Offset: 0x00000FD0
        protected void RunInternalCommon()
        {
            AmMultiNodeMdbStatusFetcher     amMultiNodeMdbStatusFetcher = base.StartMdbStatusFetcher();
            Dictionary <Guid, DatabaseInfo> dbMap = this.GenerateDatabaseInfoMap();

            amMultiNodeMdbStatusFetcher.WaitUntilStatusIsReady();
            Dictionary <AmServerName, MdbStatus[]> mdbStatusMap = amMultiNodeMdbStatusFetcher.MdbStatusMap;

            if (mdbStatusMap == null)
            {
                ReplayEventLogConstants.Tuple_PeriodicOperationFailedRetrievingStatuses.LogEvent(null, new object[]
                {
                    "AmStartupAutoMounter"
                });
                return;
            }
            this.MergeDatabaseInfoWithMdbStatus(dbMap, mdbStatusMap, amMultiNodeMdbStatusFetcher.ServerInfoMap);
            this.PopulateWithDatabaseOperations(dbMap);
            this.EnqueueGeneratedOperations(dbMap);
        }
        // Token: 0x06000093 RID: 147 RVA: 0x00004B2C File Offset: 0x00002D2C
        protected override void RunInternal()
        {
            IADDatabase[] dbList = null;
            if (!this.m_isForce)
            {
                AmMultiNodeMdbStatusFetcher amMultiNodeMdbStatusFetcher = base.StartMdbStatusFetcher();
                IADDatabase[] databases = base.GetDatabases();
                amMultiNodeMdbStatusFetcher.WaitUntilStatusIsReady();
                Dictionary <AmServerName, MdbStatus[]> mdbStatusMap = amMultiNodeMdbStatusFetcher.MdbStatusMap;
                AmMdbStatusServerInfo amMdbStatusServerInfo         = amMultiNodeMdbStatusFetcher.ServerInfoMap[this.m_nodeName];
                MdbStatus[]           mdbStatuses = mdbStatusMap[this.m_nodeName];
                if (amMdbStatusServerInfo.IsReplayRunning)
                {
                    if (!this.skipIfReplayRunning)
                    {
                        if (RegistryParameters.TransientFailoverSuppressionDelayInSec > 0)
                        {
                            dbList = this.GetDatabasesToBeMoved(databases, mdbStatuses);
                            base.AddDelayedFailoverEntryAsync(this.m_nodeName, this.m_reasonCode);
                        }
                    }
                    else
                    {
                        ReplayCrimsonEvents.FailoverOnReplDownSkipped.Log <AmServerName, string, string>(this.m_nodeName, "ReplRunning", "MoveAll");
                    }
                }
                else
                {
                    dbList = databases;
                }
            }
            else
            {
                dbList = base.GetDatabases();
            }
            AmDbActionCode actionCode = new AmDbActionCode(AmDbActionInitiator.Automatic, this.m_reasonCode, AmDbActionCategory.Move);

            base.MoveDatabases(actionCode, dbList);
        }
Example #3
0
        protected override void RunInternal()
        {
            AmMultiNodeMdbStatusFetcher     amMultiNodeMdbStatusFetcher = base.StartMdbStatusFetcher();
            Dictionary <Guid, DatabaseInfo> dbMap = base.GenerateDatabaseInfoMap();

            amMultiNodeMdbStatusFetcher.WaitUntilStatusIsReady();
            Dictionary <AmServerName, MdbStatus[]> mdbStatusMap = amMultiNodeMdbStatusFetcher.MdbStatusMap;

            if (mdbStatusMap == null)
            {
                ReplayEventLogConstants.Tuple_PeriodicOperationFailedRetrievingStatuses.LogEvent(null, new object[]
                {
                    "AmPeriodicDatabaseStateAnalyzer"
                });
                return;
            }
            base.MergeDatabaseInfoWithMdbStatus(dbMap, mdbStatusMap, amMultiNodeMdbStatusFetcher.ServerInfoMap);
            Dictionary <Guid, DatabaseInfo> filteredMap = this.FilterDatabasesNeedingAction(dbMap);

            this.DeferDatabaseActionsIfRequired(filteredMap);
            this.InitiateSystemFailoverIfReplayUnreachable(amMultiNodeMdbStatusFetcher, dbMap);
        }