From df112679c58f0f36775fffb959969dc3328c5939 Mon Sep 17 00:00:00 2001 From: Jeff Jiang Date: Wed, 8 Apr 2026 05:56:03 -0700 Subject: [PATCH 1/4] ok should not be retried --- tonic-xds/src/client/retry.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tonic-xds/src/client/retry.rs b/tonic-xds/src/client/retry.rs index 5a4133503..9f7d09231 100644 --- a/tonic-xds/src/client/retry.rs +++ b/tonic-xds/src/client/retry.rs @@ -42,7 +42,7 @@ pub(crate) fn is_retryable_grpc_status_code( code: tonic::Code, retryable_codes: &[tonic::Code], ) -> bool { - retryable_codes.contains(&code) + code != tonic::Code::Ok && retryable_codes.contains(&code) } /// Check if a request should be retried, either because of a retryable connection error @@ -439,6 +439,11 @@ mod tests { assert!(!is_retryable_grpc_status_code(tonic::Code::Ok, &codes)); } + #[test] + fn test_ok_should_not_be_retried() { + assert!(!is_retryable_grpc_status_code(tonic::Code::Ok, &[])) + } + #[test] fn test_empty_retryable_codes() { assert!(!is_retryable_grpc_status_code( From a718258dfa9bf386776b65d957a64f885f1def52 Mon Sep 17 00:00:00 2001 From: Jeff Jiang Date: Wed, 8 Apr 2026 06:57:16 -0700 Subject: [PATCH 2/4] small fix to router --- tonic-xds/src/xds/resource/route_config.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/tonic-xds/src/xds/resource/route_config.rs b/tonic-xds/src/xds/resource/route_config.rs index 777535d56..3e0b2679c 100644 --- a/tonic-xds/src/xds/resource/route_config.rs +++ b/tonic-xds/src/xds/resource/route_config.rs @@ -268,6 +268,7 @@ fn validate_header_matcher( use envoy_types::pb::envoy::config::route::v3::header_matcher::HeaderMatchSpecifier; use envoy_types::pb::envoy::r#type::matcher::v3::string_matcher::MatchPattern; + #[allow(deprecated)] let match_specifier = match hm.header_match_specifier { Some(HeaderMatchSpecifier::ExactMatch(v)) => HeaderMatchSpecifierConfig::Exact { value: v, From 98338201ceffb9b93dcdfba48dd0daba6b5f528a Mon Sep 17 00:00:00 2001 From: Jeff Jiang Date: Wed, 8 Apr 2026 06:59:42 -0700 Subject: [PATCH 3/4] fix test --- tonic-xds/src/client/retry.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tonic-xds/src/client/retry.rs b/tonic-xds/src/client/retry.rs index 9f7d09231..e6ce453e0 100644 --- a/tonic-xds/src/client/retry.rs +++ b/tonic-xds/src/client/retry.rs @@ -441,7 +441,8 @@ mod tests { #[test] fn test_ok_should_not_be_retried() { - assert!(!is_retryable_grpc_status_code(tonic::Code::Ok, &[])) + let codes = vec![tonic::Code::Ok]; + assert!(!is_retryable_grpc_status_code(tonic::Code::Ok, &codes)) } #[test] From 4e5ad3dfe545e8ad488a30e961c2cee0bfd644fa Mon Sep 17 00:00:00 2001 From: Jeff Jiang Date: Wed, 8 Apr 2026 10:18:36 -0700 Subject: [PATCH 4/4] comment about deprecated --- tonic-xds/src/xds/resource/route_config.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/tonic-xds/src/xds/resource/route_config.rs b/tonic-xds/src/xds/resource/route_config.rs index 3e0b2679c..dbda5cf22 100644 --- a/tonic-xds/src/xds/resource/route_config.rs +++ b/tonic-xds/src/xds/resource/route_config.rs @@ -268,6 +268,7 @@ fn validate_header_matcher( use envoy_types::pb::envoy::config::route::v3::header_matcher::HeaderMatchSpecifier; use envoy_types::pb::envoy::r#type::matcher::v3::string_matcher::MatchPattern; + // It's common that some xDS features are marked as deprecated while they are still widely in-use. #[allow(deprecated)] let match_specifier = match hm.header_match_specifier { Some(HeaderMatchSpecifier::ExactMatch(v)) => HeaderMatchSpecifierConfig::Exact {