0.32.7
This commit is contained in:
1 parent
1b9135117c
commit
4f36de240c
32 files changed
+1175
-704
No files matched your search
@@ -141,6 +141,7 @@ let mut active_uri = upstream_target;
|
||||
let mut request_attempt = Some(request);
|
||||
let mut attempted_backends = Vec::<String>::new();
|
||||
let mut retries = 0u8;
|
||||
let mut graceful_retry_done = false;
|
||||
let upstream_result = loop {
|
||||
let client = if handshake.is_some() && !websocket_upstream_h2 {
|
||||
&active_backend.websocket_client
|
||||
@@ -153,6 +154,36 @@ let upstream_result = loop {
|
||||
)
|
||||
.await;
|
||||
let attempt_elapsed = attempt_started.elapsed();
|
||||
if let Ok(Err(cause)) = &result {
|
||||
if !graceful_retry_done
|
||||
&& !admin_control_plane
|
||||
&& handshake.is_none()
|
||||
&& request_body_empty
|
||||
&& retry_safe_method(&retry_method)
|
||||
&& (is_graceful_h2_goaway(cause)
|
||||
|| is_related_h2_close(cause, &active_backend))
|
||||
{
|
||||
if let Some(next_request) = retry_request(
|
||||
&retry_method,
|
||||
upstream_request_version(&active_backend, false),
|
||||
&retry_headers,
|
||||
&active_backend,
|
||||
&original_host,
|
||||
&origin_suffix,
|
||||
retry_host_follows_backend,
|
||||
) {
|
||||
graceful_retry_done = true;
|
||||
if let Some(lease) = &active_lease {
|
||||
lease.retry_attempted();
|
||||
}
|
||||
tracing::debug!(backend = %active_backend.id,
|
||||
"retrying safe empty request after graceful upstream H2 shutdown");
|
||||
request_attempt = Some(next_request);
|
||||
attempt_started = Instant::now();
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
let Some(policy) = retry_policy.as_ref() else {
|
||||
break result;
|
||||
};
|
||||
@@ -220,7 +251,7 @@ let upstream_result = loop {
|
||||
connect_failure,
|
||||
);
|
||||
lease.error_detail(
|
||||
upstream_error_class(cause, connect_failure),
|
||||
upstream_health_error_class(cause, connect_failure, &active_backend),
|
||||
&detail,
|
||||
attempt_elapsed,
|
||||
);
|
||||
|
||||
Reference in new issue
Block a user