Skip to content

Commit 6a7e47b

Browse files
authored
core, grpclb: change policy selection strategy for Grpclb policy (take two: move logic of querying SRV into Grpclb's own resolver) (#6723)
Eliminated the code path of resolving Grpclb balancer addresses in grpc-core and moved it into GrpclbNameResolver, which is a subclass of DnsNameResolver. Main changes: - Slightly changed ResourceResolver and its JNDI implementation. ResourceResolver#resolveSrv(String) returns a list of SrvRecord so that it only parse SRV records and does nothing more. It's gRPC's name resolver's logic to use information parsed from SRV records. - Created a GrpclbNameResolver class that extends DnsNameResolver. Logic of using information from SRV records to set balancer addresses as ResolutionResult attributes is implemented in GrpclbNameResolver only. - Refactored DnsNameResolver, mainly the resolveAll(...) method. Logics for resolving backend addresses and service config are modularized into resolveAddresses() and resolveServiceConfig() methods respectively. They are shared implementation for subclasses (i.e., GrpclbNameResolver).
1 parent 8f6ad67 commit 6a7e47b

14 files changed

+973
-546
lines changed

api/src/test/java/io/grpc/NameResolverRegistryTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import static org.mockito.Mockito.mock;
2222

2323
import io.grpc.NameResolver.ServiceConfigParser;
24-
import io.grpc.internal.BaseDnsNameResolverProvider;
2524
import io.grpc.internal.DnsNameResolverProvider;
2625
import java.lang.Thread.UncaughtExceptionHandler;
2726
import java.net.URI;
@@ -155,10 +154,11 @@ public void newNameResolver_noProvider() {
155154
public void baseProviders() {
156155
List<NameResolverProvider> providers = NameResolverRegistry.getDefaultRegistry().providers();
157156
assertThat(providers).hasSize(2);
158-
// 2 name resolvers from grpclb and core
159-
for (NameResolverProvider provider : providers) {
160-
assertThat(provider).isInstanceOf(BaseDnsNameResolverProvider.class);
161-
}
157+
// 2 name resolvers from grpclb and core, ordered with decreasing priorities.
158+
assertThat(providers.get(0).getClass().getName())
159+
.isEqualTo("io.grpc.grpclb.SecretGrpclbNameResolverProvider$Provider");
160+
assertThat(providers.get(1).getClass().getName())
161+
.isEqualTo("io.grpc.internal.DnsNameResolverProvider");
162162
assertThat(NameResolverRegistry.getDefaultRegistry().asFactory().getDefaultScheme())
163163
.isEqualTo("dns");
164164
}

core/src/main/java/io/grpc/internal/BaseDnsNameResolverProvider.java

Lines changed: 0 additions & 70 deletions
This file was deleted.

0 commit comments

Comments
 (0)