// Token: 0x0600037C RID: 892 RVA: 0x00013718 File Offset: 0x00011918 public void RecordFailure(AmServerName failingServer) { if (RegistryParameters.ListMdbStatusMonitorDisabled) { AmListMdbStatusMonitor.Tracer.TraceDebug(0L, "AmListMdbStatusMonitor disabled via regkey"); return; } AmListMdbStatusMonitor.StatusRecord statusRecord = null; if (this.records.TryGetValue(failingServer, out statusRecord)) { statusRecord.FailCount++; if (statusRecord.TimeOfFirstFailure == null) { statusRecord.TimeOfFirstFailure = new DateTime?(DateTime.UtcNow); return; } if (DateTime.UtcNow > statusRecord.TimeOfFirstFailure.Value + this.FailureSuppressionWindow) { this.AttemptRecovery(statusRecord); return; } } else { statusRecord = new AmListMdbStatusMonitor.StatusRecord(); statusRecord.ServerName = failingServer; statusRecord.FailCount = 1; statusRecord.TimeOfFirstFailure = new DateTime?(DateTime.UtcNow); this.records[failingServer] = statusRecord; } }
// Token: 0x0600037D RID: 893 RVA: 0x000137E0 File Offset: 0x000119E0 public void RecordSuccess(AmServerName succeedingServer) { AmListMdbStatusMonitor.StatusRecord statusRecord = null; if (this.records.TryGetValue(succeedingServer, out statusRecord)) { statusRecord.FailCount = 0; statusRecord.TimeOfFirstFailure = null; } }
// Token: 0x0600037E RID: 894 RVA: 0x0001383C File Offset: 0x00011A3C private void AttemptRecovery(AmListMdbStatusMonitor.StatusRecord rec) { DateTime curTime = DateTime.UtcNow; if (rec.TimeOfLastRecoveryAction == null || curTime > rec.TimeOfLastRecoveryAction.Value + TimeSpan.FromSeconds((double)RegistryParameters.ListMdbStatusRecoveryLimitInSec)) { rec.TimeOfLastRecoveryAction = new DateTime?(curTime); if (rec.ServerName.IsLocalComputerName) { ReplayCrimsonEvents.AmListMdbStatusMonitorLocalRecoveryStarts.Log(); ThreadPool.QueueUserWorkItem(delegate(object param0) { this.killStoreDelegate(curTime, "ListMdbStatusMonitor"); }); return; } } else { AmListMdbStatusMonitor.Tracer.TraceDebug(0L, "AmListMdbStatusMonitor skipped recovery"); } }