This commit is contained in:
Mateusz Gruszczyński committed 2026-10-14 16:07:58 +02:00
1 parent 4f36de240c
commit c41d1e00a2
18 files changed
+228 -336

No files matched your search

+18 -5
View File
@@ -22,16 +22,18 @@
let elapsed = upstream_started.elapsed();
let connect_failure = cause.is_connect();
let detail = upstream_failure_detail(&cause, &active_backend, elapsed, connect_failure);
let failure_class =
upstream_health_error_class(&cause, connect_failure, &active_backend);
let graceful_h2_close = matches!(
failure_class,
"h2_graceful_goaway" | "h2_graceful_close"
);
if let Some(exchange) = &exchange {
exchange.websocket_error("upstream_request_failed", "upstream_http_error");
*exchange.upstream_error.lock().unwrap_or_else(|e| e.into_inner()) = Some(detail.clone());
}
if let Some(lease) = &active_lease {
lease.error_detail(
upstream_health_error_class(&cause, connect_failure, &active_backend),
&detail,
final_attempt_elapsed,
);
lease.error_detail(failure_class, &detail, final_attempt_elapsed);
}
if connect_failure {
tracing::warn!(
@@ -43,6 +45,17 @@
error = %detail,
"upstream connection failed"
);
} else if graceful_h2_close {
// Correlated GOAWAY(NO_ERROR) is expected connection churn. Keep
// failed requests visible as 502/access-log entries, but avoid
// repeating their verbose diagnostic at DEBUG severity.
tracing::trace!(
backend = %active_backend.id,
origin = %active_backend.origin,
elapsed_ms = elapsed.as_millis(),
error = %detail,
"upstream H2 graceful close left an unrecovered request"
);
} else {
tracing::debug!(
backend = %active_backend.id,