From 2de01669f2af6b761f77eebfcba7d3af743a6980 Mon Sep 17 00:00:00 2001 From: yifeizhuang Date: Thu, 4 Nov 2021 14:10:03 -0700 Subject: [PATCH] xds: remove filter chain uuid name generator (#8663) Generating a uuid in filterChain breaks the de-duplication detection which causes XdsServer to cycle connections, so removing it. An empty name is now allowed. The name is currently only used for debug purpose. --- xds/src/main/java/io/grpc/xds/ClientXdsClient.java | 7 +------ xds/src/main/java/io/grpc/xds/EnvoyServerProtoData.java | 2 +- xds/src/test/java/io/grpc/xds/ClientXdsClientDataTest.java | 4 ++-- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/xds/src/main/java/io/grpc/xds/ClientXdsClient.java b/xds/src/main/java/io/grpc/xds/ClientXdsClient.java index 8a43717f97e..216fcfc1703 100644 --- a/xds/src/main/java/io/grpc/xds/ClientXdsClient.java +++ b/xds/src/main/java/io/grpc/xds/ClientXdsClient.java @@ -104,7 +104,6 @@ import java.util.Map; import java.util.Objects; import java.util.Set; -import java.util.UUID; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import javax.annotation.Nullable; @@ -376,14 +375,10 @@ static FilterChain parseFilterChain( validateDownstreamTlsContext(downstreamTlsContextProto, certProviderInstances)); } - String name = proto.getName(); - if (name.isEmpty()) { - name = UUID.randomUUID().toString(); - } FilterChainMatch filterChainMatch = parseFilterChainMatch(proto.getFilterChainMatch()); checkForUniqueness(uniqueSet, filterChainMatch); return new FilterChain( - name, + proto.getName(), filterChainMatch, httpConnectionManager, downstreamTlsContext, diff --git a/xds/src/main/java/io/grpc/xds/EnvoyServerProtoData.java b/xds/src/main/java/io/grpc/xds/EnvoyServerProtoData.java index aa53d834d3b..09318a8c150 100644 --- a/xds/src/main/java/io/grpc/xds/EnvoyServerProtoData.java +++ b/xds/src/main/java/io/grpc/xds/EnvoyServerProtoData.java @@ -314,7 +314,7 @@ public String toString() { * Corresponds to Envoy proto message {@link io.envoyproxy.envoy.api.v2.listener.FilterChain}. */ static final class FilterChain { - // Unique name for the FilterChain. + // possibly empty private final String name; // TODO(sanjaypujare): flatten structure by moving FilterChainMatch class members here. private final FilterChainMatch filterChainMatch; diff --git a/xds/src/test/java/io/grpc/xds/ClientXdsClientDataTest.java b/xds/src/test/java/io/grpc/xds/ClientXdsClientDataTest.java index 0207c2b94e5..2dbab1bcb9d 100644 --- a/xds/src/test/java/io/grpc/xds/ClientXdsClientDataTest.java +++ b/xds/src/test/java/io/grpc/xds/ClientXdsClientDataTest.java @@ -1587,7 +1587,7 @@ public void parseFilterChain_unsupportedFilter() throws ResourceInvalidException } @Test - public void parseFilterChain_noName_generatedUuid() throws ResourceInvalidException { + public void parseFilterChain_noName() throws ResourceInvalidException { FilterChain filterChain1 = FilterChain.newBuilder() .setFilterChainMatch(FilterChainMatch.getDefaultInstance()) @@ -1615,7 +1615,7 @@ public void parseFilterChain_noName_generatedUuid() throws ResourceInvalidExcept EnvoyServerProtoData.FilterChain parsedFilterChain2 = ClientXdsClient.parseFilterChain( filterChain2, new HashSet(), null, filterRegistry, null, null, true /* does not matter */); - assertThat(parsedFilterChain1.getName()).isNotEqualTo(parsedFilterChain2.getName()); + assertThat(parsedFilterChain1.getName()).isEqualTo(parsedFilterChain2.getName()); } @Test