// Token: 0x060001B1 RID: 433 RVA: 0x0000AD64 File Offset: 0x00008F64 internal void MountDatabaseDirect(Guid mdbGuid, MountFlags storeFlags, AmMountFlags amMountFlags, AmDbActionCode actionCode) { AmTrace.Debug("MountDatabaseDirect called. (Guid={0}, StoreFlags={1}, AmMountFlags={2} ActionCode={3})", new object[] { mdbGuid, storeFlags, amMountFlags, actionCode }); AmConfig config = AmSystemManager.Instance.Config; if (!config.IsUnknown) { bool flag = false; LogStreamResetOnMount logReset = null; MountDirectPerformanceTracker mountPerf = new MountDirectPerformanceTracker(mdbGuid); ReplicaInstanceContext replicaInstanceContext = null; try { int actualMountFlags = (int)storeFlags; IADDatabase db = this.AdLookup.DatabaseLookup.FindAdObjectByGuidEx(mdbGuid, AdObjectLookupFlags.None); if (db == null) { throw new AmDatabaseNotFoundException(mdbGuid); } if (AmSystemManager.Instance.IsSystemShutdownInProgress) { ReplayCrimsonEvents.MountRejectedSinceSystemShutdownInProgress.Log <string, Guid, ExDateTime?>(db.Name, mdbGuid, AmSystemManager.Instance.SystemShutdownStartTime); throw new AmInvalidConfiguration(string.Empty); } ExTraceGlobals.FaultInjectionTracer.TraceTest(2198220093U); mountPerf.RunTimedOperation(MountDatabaseDirectOperation.AmPreMountCallback, delegate { this.m_replicaInstanceManager.AmPreMountCallback(mdbGuid, ref actualMountFlags, amMountFlags, mountPerf, out logReset, out replicaInstanceContext); }); mountPerf.RunTimedOperation(MountDatabaseDirectOperation.RegistryReplicatorCopy, delegate { this.m_registryMonitor.PreMountCopy(mdbGuid, db.IsPublicFolderDatabase); }); if (replicaInstanceContext != null) { replicaInstanceContext.IsReplayDatabaseDismountPending = false; } ExTraceGlobals.FaultInjectionTracer.TraceTest(2166762813U); try { mountPerf.RunTimedOperation(MountDatabaseDirectOperation.StoreMount, delegate { AmStoreHelper.Mount(mdbGuid, (MountFlags)actualMountFlags); }); } catch (MapiExceptionDismountInProgress mapiExceptionDismountInProgress) { AmTrace.Error("AmStoreHelper.Mount encountered exception {0}", new object[] { mapiExceptionDismountInProgress }); mountPerf.IsDismountInProgress = true; throw; } ((ReplicaInstanceManager)this.m_replicaInstanceManager).ClearLossyMountRecord(mdbGuid); ((ReplicaInstanceManager)this.m_replicaInstanceManager).ClearLastAcllRunWithSkipHealthChecksRecord(mdbGuid); AmTrace.Debug("MountDatabaseDirect initiating UpdateReplicationContentIndexing() asynchronously for DB '{0}'.", new object[] { mdbGuid }); ThreadPool.QueueUserWorkItem(delegate(object obj) { Exception ex = ReplicaInstance.UpdateReplicationContentIndexing(); if (ex != null) { AmTrace.Error("MountDatabaseDirect background call of UpdateReplicationContentIndexing() failed for DB '{0}'. Exception: {1}", new object[] { (Guid)obj, ex }); } }, mdbGuid); this.DetermineWorkerProcessId(mdbGuid); this.m_registryMonitor.PostMountCopy(); flag = true; return; } finally { if (replicaInstanceContext != null) { replicaInstanceContext.BestEffortDismountReplayDatabase(); } if (logReset != null && logReset.ResetPending) { if (flag) { mountPerf.RunTimedOperation(MountDatabaseDirectOperation.ConfirmLogReset, delegate { logReset.ConfirmLogReset(); }); Dependencies.ConfigurationUpdater.NotifyChangedReplayConfiguration(mdbGuid, false, true, true, true, ReplayConfigChangeHints.AmPreMountCallbackLogStreamReset, -1); } else { logReset.CancelLogReset(); } } mountPerf.LogEvent(); } } AmTrace.Error("MountDatabaseDirect: AmConfig is invalid!", new object[0]); throw new AmInvalidConfiguration(config.LastError); }
// Token: 0x06000492 RID: 1170 RVA: 0x00018736 File Offset: 0x00016936 internal static void Mount(Guid mdbGuid) { AmStoreHelper.Mount(mdbGuid, MountFlags.None); }