From 14c00df5a3a97a47f4d5c5869ac91ada5ea13dbd Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Mon, 1 May 2023 12:44:53 +0800 Subject: [PATCH 1/2] Remove host override from container sample --- .../Frontend/Balancer/ConfigurableResolverFactory.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/examples/Container/Frontend/Balancer/ConfigurableResolverFactory.cs b/examples/Container/Frontend/Balancer/ConfigurableResolverFactory.cs index bb52e31a5..d0cf53010 100644 --- a/examples/Container/Frontend/Balancer/ConfigurableResolverFactory.cs +++ b/examples/Container/Frontend/Balancer/ConfigurableResolverFactory.cs @@ -1,4 +1,4 @@ -#region Copyright notice and license +#region Copyright notice and license // Copyright 2019 The gRPC Authors // @@ -24,6 +24,8 @@ namespace Frontend.Balancer { public class ConfigurableResolverFactory : ResolverFactory { + private static readonly BalancerAttributesKey HostOverrideKey = new BalancerAttributesKey("HostOverride"); + private readonly ResolverFactory _innerResolverFactory; private readonly BalancerConfiguration _balancerConfiguration; @@ -101,6 +103,11 @@ private void RaiseResult(ResolverResult result) // DNS results change order between refreshes. // Explicitly order by host to keep result order consistent. var orderedAddresses = result.Addresses.OrderBy(a => a.EndPoint.Host).ToList(); + // Remove host override from addresses so the destination IP address is available. + foreach (var address in orderedAddresses) + { + ((IDictionary)address.Attributes).Remove(HostOverrideKey.Key); + } _listener(ResolverResult.ForResult(orderedAddresses, serviceConfig, Status.DefaultSuccess)); } else From e288f9f3d939abc0abdf02756647f478e9eb0bba Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Tue, 2 May 2023 06:51:52 +0800 Subject: [PATCH 2/2] Update examples/Container/Frontend/Balancer/ConfigurableResolverFactory.cs --- .../Container/Frontend/Balancer/ConfigurableResolverFactory.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/Container/Frontend/Balancer/ConfigurableResolverFactory.cs b/examples/Container/Frontend/Balancer/ConfigurableResolverFactory.cs index d0cf53010..d6cb38b77 100644 --- a/examples/Container/Frontend/Balancer/ConfigurableResolverFactory.cs +++ b/examples/Container/Frontend/Balancer/ConfigurableResolverFactory.cs @@ -104,6 +104,8 @@ private void RaiseResult(ResolverResult result) // Explicitly order by host to keep result order consistent. var orderedAddresses = result.Addresses.OrderBy(a => a.EndPoint.Host).ToList(); // Remove host override from addresses so the destination IP address is available. + // The sample does this because the server returns the IP address to the client. + // This makes it clear that gRPC calls are balanced between pods. foreach (var address in orderedAddresses) { ((IDictionary)address.Attributes).Remove(HostOverrideKey.Key);