private void ReportFailureInternal(AmServerName server, AmBcsServerFailureLogger.AmBcsCheckInfo checkInfo, string errorMessage, bool overwriteAllowed, ReplayCrimsonEvent evt, params object[] evtArgs) { OrderedDictionary orderedDictionary; if (this.m_failureTable.ContainsKey(server)) { orderedDictionary = this.m_failureTable[server]; } else { orderedDictionary = new OrderedDictionary(10); this.m_failureTable.Add(server, orderedDictionary); } string str; bool flag = !this.TryGetErrorFromCheckTable(orderedDictionary, checkInfo, out str) || (overwriteAllowed && !SharedHelper.StringIEquals(str, errorMessage)); if (flag) { this.AddErrorIntoCheckTable(orderedDictionary, checkInfo, errorMessage); if (this.IsEventLoggingEnabled) { evt.LogGeneric(evtArgs); return; } } else { AmTrace.Debug("BCS: Failure for server '{0}' and check [{1}] has already been recorded. Suppressing raising another event.", new object[] { server, checkInfo }); } }
public void ReportServerFailure(AmServerName server, string serverCheckThatFailed, string errorMessage, bool overwriteAllowed) { AmBcsServerFailureLogger.AmBcsCheckInfo checkInfo = new AmBcsServerFailureLogger.AmBcsCheckInfo(AmBcsServerFailureLogger.AmBcsCheckType.ServerLevel, serverCheckThatFailed); this.ReportFailureInternal(server, checkInfo, errorMessage, overwriteAllowed, ReplayCrimsonEvents.BcsDbNodeActivationBlocked, new object[] { this.m_dbName, this.m_dbGuid, server, errorMessage }); }
private bool TryGetErrorFromCheckTable(OrderedDictionary checkTable, AmBcsServerFailureLogger.AmBcsCheckInfo checkInfo, out string errorMessage) { errorMessage = null; bool flag = checkTable.Contains(checkInfo); if (flag) { errorMessage = (string)checkTable[checkInfo]; return(true); } return(false); }
public void ReportServerFailure(AmServerName server, string serverCheckThatFailed, string errorMessage, ReplayCrimsonEvent evt, params object[] evtArgs) { AmBcsServerFailureLogger.AmBcsCheckInfo checkInfo = new AmBcsServerFailureLogger.AmBcsCheckInfo(AmBcsServerFailureLogger.AmBcsCheckType.ServerLevel, serverCheckThatFailed); this.ReportFailureInternal(server, checkInfo, errorMessage, true, evt, evtArgs); }
private void AddErrorIntoCheckTable(OrderedDictionary checkTable, AmBcsServerFailureLogger.AmBcsCheckInfo checkInfo, string errorMessage) { checkTable[checkInfo] = errorMessage; }