diff --git a/core/src/main/java/io/grpc/internal/DnsNameResolver.java b/core/src/main/java/io/grpc/internal/DnsNameResolver.java index 7e7373325d..490bd8255a 100644 --- a/core/src/main/java/io/grpc/internal/DnsNameResolver.java +++ b/core/src/main/java/io/grpc/internal/DnsNameResolver.java @@ -95,16 +95,13 @@ final class DnsNameResolver extends NameResolver { * *

Default value is -1 (cache forever) if security manager is installed. If security manager is * not installed, the ttl value is {@code null} which falls back to {@link - * #DEFAULT_NETWORK_CACHE_TTL_SECONDS gRPC default value} or {@link - * #DEFAULT_ANDROID_NETWORK_CACHE_TTL_SECONDS android default value}. + * #DEFAULT_NETWORK_CACHE_TTL_SECONDS gRPC default value}. */ @VisibleForTesting static final String NETWORKADDRESS_CACHE_TTL_PROPERTY = "networkaddress.cache.ttl"; /** Default DNS cache duration if network cache ttl value is not specified ({@code null}). */ @VisibleForTesting static final long DEFAULT_NETWORK_CACHE_TTL_SECONDS = 30; - @VisibleForTesting - static final long DEFAULT_ANDROID_NETWORK_CACHE_TTL_SECONDS = 2; @VisibleForTesting static boolean enableJndi = Boolean.parseBoolean(JNDI_PROPERTY); @@ -147,7 +144,7 @@ final class DnsNameResolver extends NameResolver { DnsNameResolver(@Nullable String nsAuthority, String name, Attributes params, Resource executorResource, ProxyDetector proxyDetector, - Stopwatch stopwatch, boolean isAndroid) { + Stopwatch stopwatch) { // TODO: if a DNS server is provided as nsAuthority, use it. // https://www.captechconsulting.com/blogs/accessing-the-dusty-corners-of-dns-with-java this.executorResource = executorResource; @@ -171,7 +168,7 @@ final class DnsNameResolver extends NameResolver { } this.proxyDetector = proxyDetector; this.stopwatch = Preconditions.checkNotNull(stopwatch, "stopwatch"); - this.networkAddressCacheTtlNanos = getNetworkAddressCacheTtlNanos(isAndroid); + this.networkAddressCacheTtlNanos = getNetworkAddressCacheTtlNanos(); } @Override @@ -288,10 +285,9 @@ final class DnsNameResolver extends NameResolver { }; /** Returns value of network address cache ttl property. */ - private static long getNetworkAddressCacheTtlNanos(boolean isAndroid) { + private static long getNetworkAddressCacheTtlNanos() { String cacheTtlPropertyValue = System.getProperty(NETWORKADDRESS_CACHE_TTL_PROPERTY); - long cacheTtl = - isAndroid ? DEFAULT_ANDROID_NETWORK_CACHE_TTL_SECONDS : DEFAULT_NETWORK_CACHE_TTL_SECONDS; + long cacheTtl = DEFAULT_NETWORK_CACHE_TTL_SECONDS; if (cacheTtlPropertyValue != null) { try { cacheTtl = Long.parseLong(cacheTtlPropertyValue); diff --git a/core/src/main/java/io/grpc/internal/DnsNameResolverProvider.java b/core/src/main/java/io/grpc/internal/DnsNameResolverProvider.java index eda7754477..d0db539d41 100644 --- a/core/src/main/java/io/grpc/internal/DnsNameResolverProvider.java +++ b/core/src/main/java/io/grpc/internal/DnsNameResolverProvider.java @@ -19,7 +19,6 @@ package io.grpc.internal; import com.google.common.base.Preconditions; import com.google.common.base.Stopwatch; import io.grpc.Attributes; -import io.grpc.InternalServiceProviders; import io.grpc.NameResolverProvider; import java.net.URI; @@ -55,8 +54,7 @@ public final class DnsNameResolverProvider extends NameResolverProvider { params, GrpcUtil.SHARED_CHANNEL_EXECUTOR, GrpcUtil.getDefaultProxyDetector(), - Stopwatch.createUnstarted(), - InternalServiceProviders.isAndroid(getClass().getClassLoader())); + Stopwatch.createUnstarted()); } else { return null; } diff --git a/core/src/test/java/io/grpc/internal/DnsNameResolverTest.java b/core/src/test/java/io/grpc/internal/DnsNameResolverTest.java index 38f98625e9..44bde22222 100644 --- a/core/src/test/java/io/grpc/internal/DnsNameResolverTest.java +++ b/core/src/test/java/io/grpc/internal/DnsNameResolverTest.java @@ -112,13 +112,7 @@ public class DnsNameResolverTest { private String networkaddressCacheTtlPropertyValue; private DnsNameResolver newResolver(String name, int port) { - return - newResolver(name, port, GrpcUtil.NOOP_PROXY_DETECTOR, Stopwatch.createUnstarted(), false); - } - - private DnsNameResolver newResolver(String name, int port, boolean isAndroid) { - return newResolver( - name, port, GrpcUtil.NOOP_PROXY_DETECTOR, Stopwatch.createUnstarted(), isAndroid); + return newResolver(name, port, GrpcUtil.NOOP_PROXY_DETECTOR, Stopwatch.createUnstarted()); } private DnsNameResolver newResolver( @@ -126,23 +120,13 @@ public class DnsNameResolverTest { int port, ProxyDetector proxyDetector, Stopwatch stopwatch) { - return newResolver(name, port, proxyDetector, stopwatch, false); - } - - private DnsNameResolver newResolver( - String name, - int port, - ProxyDetector proxyDetector, - Stopwatch stopwatch, - boolean isAndroid) { DnsNameResolver dnsResolver = new DnsNameResolver( null, name, Attributes.newBuilder().set(NameResolver.Factory.PARAMS_DEFAULT_PORT, port).build(), fakeExecutorResource, proxyDetector, - stopwatch, - isAndroid); + stopwatch); return dnsResolver; } @@ -215,16 +199,12 @@ public class DnsNameResolverTest { @Test public void resolve_neverCache() throws Exception { - resolve_neverCache(false); - } - - private void resolve_neverCache(boolean isAndroid) throws Exception { System.setProperty(DnsNameResolver.NETWORKADDRESS_CACHE_TTL_PROPERTY, "0"); final List answer1 = createAddressList(2); final List answer2 = createAddressList(1); String name = "foo.googleapis.com"; - DnsNameResolver resolver = newResolver(name, 81, isAndroid); + DnsNameResolver resolver = newResolver(name, 81); AddressResolver mockResolver = mock(AddressResolver.class); when(mockResolver.resolveAddress(Matchers.anyString())).thenReturn(answer1).thenReturn(answer2); resolver.setAddressResolver(mockResolver); @@ -246,29 +226,15 @@ public class DnsNameResolverTest { verify(mockResolver, times(2)).resolveAddress(Matchers.anyString()); } - @Test - public void resolve_androidNeverCache() throws Exception { - resolve_neverCache(true); - } - @Test public void resolve_cacheForever() throws Exception { - resolve_cacheForever(false); - } - - private void resolve_cacheForever(boolean isAndroid) throws Exception { System.setProperty(DnsNameResolver.NETWORKADDRESS_CACHE_TTL_PROPERTY, "-1"); final List answer1 = createAddressList(2); String name = "foo.googleapis.com"; FakeTicker fakeTicker = new FakeTicker(); DnsNameResolver resolver = - newResolver( - name, - 81, - GrpcUtil.NOOP_PROXY_DETECTOR, - Stopwatch.createUnstarted(fakeTicker), - isAndroid); + newResolver(name, 81, GrpcUtil.NOOP_PROXY_DETECTOR, Stopwatch.createUnstarted(fakeTicker)); AddressResolver mockResolver = mock(AddressResolver.class); when(mockResolver.resolveAddress(Matchers.anyString())) .thenReturn(answer1) @@ -293,17 +259,8 @@ public class DnsNameResolverTest { verify(mockResolver).resolveAddress(Matchers.anyString()); } - @Test - public void resolve_androidCacheForever() throws Exception { - resolve_cacheForever(true); - } - @Test public void resolve_usingCache() throws Exception { - resolve_usingCache(false); - } - - private void resolve_usingCache(boolean isAndroid) throws Exception { long ttl = 60; System.setProperty(DnsNameResolver.NETWORKADDRESS_CACHE_TTL_PROPERTY, Long.toString(ttl)); final List answer = createAddressList(2); @@ -311,12 +268,7 @@ public class DnsNameResolverTest { FakeTicker fakeTicker = new FakeTicker(); DnsNameResolver resolver = - newResolver( - name, - 81, - GrpcUtil.NOOP_PROXY_DETECTOR, - Stopwatch.createUnstarted(fakeTicker), - isAndroid); + newResolver(name, 81, GrpcUtil.NOOP_PROXY_DETECTOR, Stopwatch.createUnstarted(fakeTicker)); AddressResolver mockResolver = mock(AddressResolver.class); when(mockResolver.resolveAddress(Matchers.anyString())) .thenReturn(answer) @@ -342,17 +294,8 @@ public class DnsNameResolverTest { verify(mockResolver).resolveAddress(Matchers.anyString()); } - @Test - public void resolve_androidUsingCache() throws Exception { - resolve_usingCache(true); - } - @Test public void resolve_cacheExpired() throws Exception { - resolve_cacheExpired(false); - } - - private void resolve_cacheExpired(boolean isAndroid) throws Exception { long ttl = 60; System.setProperty(DnsNameResolver.NETWORKADDRESS_CACHE_TTL_PROPERTY, Long.toString(ttl)); final List answer1 = createAddressList(2); @@ -361,12 +304,7 @@ public class DnsNameResolverTest { FakeTicker fakeTicker = new FakeTicker(); DnsNameResolver resolver = - newResolver( - name, - 81, - GrpcUtil.NOOP_PROXY_DETECTOR, - Stopwatch.createUnstarted(fakeTicker), - isAndroid); + newResolver(name, 81, GrpcUtil.NOOP_PROXY_DETECTOR, Stopwatch.createUnstarted(fakeTicker)); AddressResolver mockResolver = mock(AddressResolver.class); when(mockResolver.resolveAddress(Matchers.anyString())).thenReturn(answer1).thenReturn(answer2); resolver.setAddressResolver(mockResolver); @@ -389,48 +327,26 @@ public class DnsNameResolverTest { verify(mockResolver, times(2)).resolveAddress(Matchers.anyString()); } - @Test - public void resolve_androidCacheExpired() throws Exception { - resolve_cacheExpired(true); - } - @Test public void resolve_invalidTtlPropertyValue() throws Exception { System.setProperty(DnsNameResolver.NETWORKADDRESS_CACHE_TTL_PROPERTY, "not_a_number"); - resolveDefaultValue(false); - } - - @Test - public void resolve_androidInvalidTtlPropertyValue() throws Exception { - System.setProperty(DnsNameResolver.NETWORKADDRESS_CACHE_TTL_PROPERTY, "not_a_number"); - resolveDefaultValue(true); + resolveDefaultValue(); } @Test public void resolve_noPropertyValue() throws Exception { System.clearProperty(DnsNameResolver.NETWORKADDRESS_CACHE_TTL_PROPERTY); - resolveDefaultValue(false); + resolveDefaultValue(); } - @Test - public void resolve_androidNoPropertyValue() throws Exception { - System.clearProperty(DnsNameResolver.NETWORKADDRESS_CACHE_TTL_PROPERTY); - resolveDefaultValue(true); - } - - private void resolveDefaultValue(boolean isAndroid) throws Exception { + private void resolveDefaultValue() throws Exception { final List answer1 = createAddressList(2); final List answer2 = createAddressList(1); String name = "foo.googleapis.com"; FakeTicker fakeTicker = new FakeTicker(); DnsNameResolver resolver = - newResolver( - name, - 81, - GrpcUtil.NOOP_PROXY_DETECTOR, - Stopwatch.createUnstarted(fakeTicker), - isAndroid); + newResolver(name, 81, GrpcUtil.NOOP_PROXY_DETECTOR, Stopwatch.createUnstarted(fakeTicker)); AddressResolver mockResolver = mock(AddressResolver.class); when(mockResolver.resolveAddress(Matchers.anyString())).thenReturn(answer1).thenReturn(answer2); resolver.setAddressResolver(mockResolver); @@ -441,11 +357,7 @@ public class DnsNameResolverTest { assertAnswerMatches(answer1, 81, resultCaptor.getValue()); assertEquals(0, fakeClock.numPendingTasks()); - long defaultTtl = - isAndroid - ? DnsNameResolver.DEFAULT_ANDROID_NETWORK_CACHE_TTL_SECONDS - : DnsNameResolver.DEFAULT_NETWORK_CACHE_TTL_SECONDS; - fakeTicker.advance(defaultTtl, TimeUnit.SECONDS); + fakeTicker.advance(DnsNameResolver.DEFAULT_NETWORK_CACHE_TTL_SECONDS, TimeUnit.SECONDS); resolver.refresh(); assertEquals(1, fakeExecutor.runDueTasks()); verifyNoMoreInteractions(mockListener);