From 50ff5704d0f443d6753b8beab1f0234d652799a6 Mon Sep 17 00:00:00 2001 From: "Mark D. Roth" Date: Sat, 1 Mar 2025 00:31:46 +0000 Subject: [PATCH 1/3] A61 update: remove special case for LOGICAL_DNS clusters --- A61-IPv4-IPv6-dualstack-backends.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/A61-IPv4-IPv6-dualstack-backends.md b/A61-IPv4-IPv6-dualstack-backends.md index 1ac8111de..bb3ef647f 100644 --- a/A61-IPv4-IPv6-dualstack-backends.md +++ b/A61-IPv4-IPv6-dualstack-backends.md @@ -4,7 +4,7 @@ A61: IPv4 and IPv6 Dualstack Backend Support * Approver: @ejona86, @dfawley * Status: Ready for Implementation * Implemented in: C-core -* Last updated: 2025-02-13 +* Last updated: 2025-02-28 * Discussion at: https://groups.google.com/g/grpc-io/c/VjORlKP97cE/m/ihqyN32TAQAJ ## Abstract @@ -53,6 +53,7 @@ for session affinity behavior in xDS. * [gRFC A56: Priority LB Policy][A56] * [gRFC A55: xDS-Based Stateful Session Affinity][A55] * [gRFC A60: xDS-Based Stateful Session Affinity for Weighted Clusters][A60] +* [gRFC A37: xDS Aggregate and Logical DNS Clusters][A37] * [gRFC A62: pick_first: Sticky TRANSIENT_FAILURE and address order randomization][A62] * [gRFC A50: Outlier Detection Support][A50] @@ -791,6 +792,19 @@ def Pick(pick_args): return result ``` +#### Changes to Logical DNS Clusters + +Currently, as per [gRFC A37][A37], we handle LOGICAL_DNS clusters by +hard-coding the cluster's LB policy to pick_first, so that we get the +proper semantics of connecting to only one address for the cluster at a +time. However, now that we have the ability to encode multiple +addresses per endpoint, we can do away with that special case. Instead, +we will encode all addresses returned by the DNS resolver as a single +endpoint. Regardless of which LB policy is configured for the cluster, +this will result in all addresses being passed down to the same +pick_first child policy, thus providing the desired behavior without the +special case. + ### Temporary environment variable protection The code that reads the new EDS fields will be initially guarded by an @@ -904,6 +918,8 @@ Reporting Mechanism](#generic-health-reporting-mechanism). (https://github.com/grpc/grpc/pull/34526) - change stateful session affinity to handle multiple addresses per endpoint (https://github.com/grpc/grpc/pull/34472) +- remove special case for LOGICAL_DNS behavior + (https://github.com/grpc/grpc/pull/38248) ### Java @@ -933,6 +949,7 @@ N/A [envoy-design]: https://docs.google.com/document/d/1AjmTcMWwb7nia4rAgqE-iqIbSbfiXCI4h1vk-FONFdM/edit [A17]: A17-client-side-health-checking.md [A27]: A27-xds-global-load-balancing.md +[A37]: A37-xds-aggregate-and-logical-dns-clusters.md [A42]: A42-xds-ring-hash-lb-policy.md [A48]: A48-xds-least-request-lb-policy.md [A50]: A50-xds-outlier-detection.md From 495500a3dbbfc5fabcfc04ac293e32b1ac2d982b Mon Sep 17 00:00:00 2001 From: "Mark D. Roth" Date: Sat, 1 Mar 2025 00:32:53 +0000 Subject: [PATCH 2/3] add updated-by to A37 --- A37-xds-aggregate-and-logical-dns-clusters.md | 1 + 1 file changed, 1 insertion(+) diff --git a/A37-xds-aggregate-and-logical-dns-clusters.md b/A37-xds-aggregate-and-logical-dns-clusters.md index 9fa2eb7c3..0ff44199a 100644 --- a/A37-xds-aggregate-and-logical-dns-clusters.md +++ b/A37-xds-aggregate-and-logical-dns-clusters.md @@ -6,6 +6,7 @@ A37: xDS Aggregate and Logical DNS Clusters * Implemented in: C-core, Java * Last updated: 2021-05-06 * Discussion at: https://groups.google.com/g/grpc-io/c/bZ7wLIdNCVY +* Updated by: [A61: IPv4 and IPv6 Dualstack Backend Support](A61-IPv4-IPv6-dualstack-backends.md) ## Abstract From bf0cecaf150a7b2439ec2b335a2e87b03608df0f Mon Sep 17 00:00:00 2001 From: "Mark D. Roth" Date: Thu, 6 Mar 2025 20:13:34 +0000 Subject: [PATCH 3/3] review comment --- A61-IPv4-IPv6-dualstack-backends.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/A61-IPv4-IPv6-dualstack-backends.md b/A61-IPv4-IPv6-dualstack-backends.md index bb3ef647f..6eb690b41 100644 --- a/A61-IPv4-IPv6-dualstack-backends.md +++ b/A61-IPv4-IPv6-dualstack-backends.md @@ -4,7 +4,7 @@ A61: IPv4 and IPv6 Dualstack Backend Support * Approver: @ejona86, @dfawley * Status: Ready for Implementation * Implemented in: C-core -* Last updated: 2025-02-28 +* Last updated: 2025-03-06 * Discussion at: https://groups.google.com/g/grpc-io/c/VjORlKP97cE/m/ihqyN32TAQAJ ## Abstract @@ -796,14 +796,14 @@ def Pick(pick_args): Currently, as per [gRFC A37][A37], we handle LOGICAL_DNS clusters by hard-coding the cluster's LB policy to pick_first, so that we get the -proper semantics of connecting to only one address for the cluster at a -time. However, now that we have the ability to encode multiple +proper semantics of connecting to only one address for the cluster +at a time. However, now that we have the ability to encode multiple addresses per endpoint, we can do away with that special case. Instead, -we will encode all addresses returned by the DNS resolver as a single -endpoint. Regardless of which LB policy is configured for the cluster, -this will result in all addresses being passed down to the same -pick_first child policy, thus providing the desired behavior without the -special case. +the xds_cluster_resolver LB policy will encode all addresses returned by +the DNS resolver as a single endpoint. Regardless of which LB policy +is configured for the cluster, this will result in all addresses being +passed down to the same pick_first child policy, thus providing the +desired behavior without the special case. ### Temporary environment variable protection