feat: add runner failover policies and traces

This commit is contained in:
2026-05-12 02:16:42 +08:00
parent be31923e74
commit 05632172d0
26 changed files with 2033 additions and 140 deletions
+11 -1
View File
@@ -182,9 +182,12 @@ func failureMetrics(err error, simulated bool) (string, map[string]any, time.Tim
metrics := map[string]any{
"simulated": simulated,
}
retryable := clients.IsRetryable(err)
if err != nil {
info := failureInfoFromError(err)
metrics["error"] = err.Error()
metrics["retryable"] = clients.IsRetryable(err)
metrics["errorCategory"] = info.Category
metrics["retryable"] = retryable
}
if meta.StatusCode > 0 {
metrics["statusCode"] = meta.StatusCode
@@ -195,6 +198,9 @@ func failureMetrics(err error, simulated bool) (string, map[string]any, time.Tim
if meta.ResponseDurationMS > 0 {
metrics["responseDurationMs"] = meta.ResponseDurationMS
}
if err != nil {
metrics["trace"] = []any{failureTraceEntry(err, retryable)}
}
return meta.RequestID, metrics, meta.ResponseStartedAt, meta.ResponseFinishedAt, meta.ResponseDurationMS
}
@@ -227,12 +233,16 @@ func summarizeAttempts(attempts []store.TaskAttempt) []map[string]any {
"requestId": attempt.RequestID,
"retryable": attempt.Retryable,
"simulated": attempt.Simulated,
"statusCode": attempt.StatusCode,
"errorCode": attempt.ErrorCode,
"errorMessage": attempt.ErrorMessage,
"responseDurationMs": attempt.ResponseDurationMS,
"startedAt": attempt.StartedAt,
"finishedAt": attempt.FinishedAt,
}
if trace, ok := attempt.Metrics["trace"]; ok {
item["trace"] = trace
}
items = append(items, item)
}
return items