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"); }
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); }
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); } } }