public static void DeadSuccess(EndpointExecutorFsm fsm, ICollection <IMessage> messages) { Preconditions.CheckArgument(fsm.Status.LastFailedRevivalTime.HasValue); CultureInfo culture = CultureInfo.InvariantCulture; DateTime reviveAt = fsm.Status.LastFailedRevivalTime.GetOrElse(fsm.systemTime.UtcNow).SafeAdd(fsm.config.RevivePeriod); Log.LogWarning( (int)EventIds.DeadSuccess, "[DeadSuccess] Dropped {0} messages. BatchSize: {1}, LastFailedRevivalTime: {2}, UnhealthySince: {3}, ReviveAt: {4}, {5}", messages.Count, messages.Count, fsm.Status.LastFailedRevivalTime.GetOrElse(Checkpointers.Checkpointer.DateTimeMinValue).ToString(DateTimeFormat, culture), fsm.Status.UnhealthySince.GetOrElse(Checkpointers.Checkpointer.DateTimeMinValue).ToString(DateTimeFormat, culture), reviveAt.ToString(DateTimeFormat, culture), GetContextString(fsm)); SetProcessingInternalCounters(fsm, "Dropped", messages); SetDroppedEgressUserMetricCounter(fsm, messages); FailureKind failureKind = fsm.currentCheckpointCommand?.Result?.SendFailureDetails.GetOrElse(DefaultFailureDetails).FailureKind ?? FailureKind.InternalError; foreach (IMessage message in messages) { Routing.UserAnalyticsLogger.LogDroppedMessage(fsm.Endpoint.IotHubName, message, fsm.Endpoint.Name, failureKind); } }
static void LogUnhealthyEndpointOpMonError(EndpointExecutorFsm fsm, FailureKind failureKind) { if (!fsm.lastFailedRevivalTime.HasValue && fsm.unhealthySince.GetOrElse(DateTime.MaxValue) < fsm.systemTime.UtcNow.Subtract(LogUserAnalyticsErrorOnUnhealthySince)) { Routing.UserAnalyticsLogger.LogUnhealthyEndpoint(fsm.Endpoint.IotHubName, fsm.Endpoint.Name, failureKind); } }
public SendFailureDetails(FailureKind failureKind, Exception rawException) { this.FailureKind = failureKind; this.RawException = rawException; }
public void LogUnhealthyEndpoint(string iotHubName, string endpointName, FailureKind failureKind) { }
public void LogInvalidMessage(string iotHubName, IMessage message, FailureKind failureKind) { }
public void LogDroppedMessage(string iotHubName, IMessage message, string endpointName, FailureKind failureKind) { }
public InvalidDetails(T item, FailureKind failureKind) { this.Item = item; this.FailureKind = failureKind; }