Exemplo n.º 1
0
        public void TriggerTruncation(Guid dbGuid)
        {
            ReplicaInstanceManager replicaInstanceManager = Dependencies.ReplayCoreManager.ReplicaInstanceManager;
            ReplicaInstance        replicaInstance;

            if (replicaInstanceManager.TryGetReplicaInstance(dbGuid, out replicaInstance))
            {
                LogTruncater component = replicaInstance.GetComponent <LogTruncater>();
                component.TimerCallback(null);
                return;
            }
            throw new ArgumentException("Unable to find a ReplicaInstance with a DB Guid of " + dbGuid, "dbGuid");
        }
Exemplo n.º 2
0
        public LogCopier FindLogCopier(string nodeName, Guid dbGuid)
        {
            ReplicaInstanceManager replicaInstanceManager = Dependencies.ReplayCoreManager.ReplicaInstanceManager;
            ReplicaInstance        replicaInstance        = null;
            LogCopier logCopier = null;

            if (replicaInstanceManager.TryGetReplicaInstance(dbGuid, out replicaInstance))
            {
                logCopier = replicaInstance.GetComponent <LogCopier>();
                if (logCopier == null)
                {
                    ComponentFinder.Tracer.TraceError <Guid>(0L, "FindLogCopier failed to find LogCopier for database {0}", dbGuid);
                }
            }
            else
            {
                ComponentFinder.Tracer.TraceError <Guid>(0L, "FindLogCopier failed to find RI database {0}", dbGuid);
            }
            return(logCopier);
        }
Exemplo n.º 3
0
 public void ProcessSourceLogCorruption(long badGeneration, Exception ex)
 {
     if (Monitor.TryEnter(this.m_sourceLogCorruptionLock))
     {
         try
         {
             long num = this.EndOfLogGeneration - badGeneration;
             if (num >= (long)RegistryParameters.CorruptLogRequiredRange)
             {
                 if (badGeneration > this.m_mostRecentSourceLogCorruptionGen)
                 {
                     this.m_mostRecentSourceLogCorruptionGen = badGeneration;
                     FailureItemPublisherHelper.PublishAction(FailureTag.SourceLogCorruptionOutsideRequiredRange, this.DatabaseGuid, this.DatabaseName, null);
                 }
             }
             else
             {
                 ReplicaInstanceManager replicaInstanceManager = Dependencies.ReplayCoreManager.ReplicaInstanceManager;
                 ReplicaInstance        replicaInstance        = null;
                 if (replicaInstanceManager.TryGetReplicaInstance(this.DatabaseGuid, out replicaInstance) && replicaInstance.CurrentContext.IsBroken)
                 {
                     MonitoredDatabase.Tracer.TraceError((long)this.GetHashCode(), "ProcessSourceLogCorruption ignores error since copy is already broken");
                 }
                 else
                 {
                     this.m_mostRecentSourceLogCorruptionGen = badGeneration;
                     this.DismountForSourceLogCorruption(ex);
                     FailureItemPublisherHelper.PublishAction(FailureTag.SourceLogCorruption, this.DatabaseGuid, this.DatabaseName, null);
                 }
             }
         }
         finally
         {
             Monitor.Exit(this.m_sourceLogCorruptionLock);
         }
     }
 }