diff options
author | Carl Mastrangelo <notcarl@google.com> | 2018-10-17 12:51:23 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-17 12:51:23 -0700 |
commit | e8cf3fa8eaca3abc61c066f67a94e62bdbb7322d (patch) | |
tree | 9d2d9d30ba8507aab7c7613873e2bcc5f5402db9 /core | |
parent | ddc3673591647166e9235f7fb04f3e446d2b0111 (diff) | |
download | grpc-grpc-java-e8cf3fa8eaca3abc61c066f67a94e62bdbb7322d.tar.gz |
core: throw exception on resolution failure and no jndi resolver
Backport of #4953
Updates #4951
Diffstat (limited to 'core')
-rw-r--r-- | core/src/main/java/io/grpc/internal/DnsNameResolver.java | 5 | ||||
-rw-r--r-- | core/src/test/java/io/grpc/internal/DnsNameResolverTest.java | 18 |
2 files changed, 22 insertions, 1 deletions
diff --git a/core/src/main/java/io/grpc/internal/DnsNameResolver.java b/core/src/main/java/io/grpc/internal/DnsNameResolver.java index 490bd8255..ccbce27db 100644 --- a/core/src/main/java/io/grpc/internal/DnsNameResolver.java +++ b/core/src/main/java/io/grpc/internal/DnsNameResolver.java @@ -21,6 +21,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import com.google.common.base.Stopwatch; +import com.google.common.base.Throwables; import com.google.common.base.Verify; import io.grpc.Attributes; import io.grpc.EquivalentAddressGroup; @@ -368,7 +369,9 @@ final class DnsNameResolver extends NameResolver { } } try { - if (addressesException != null && balancerAddressesException != null) { + if (addressesException != null + && (balancerAddressesException != null || balancerAddresses.isEmpty())) { + Throwables.throwIfUnchecked(addressesException); throw new RuntimeException(addressesException); } } finally { diff --git a/core/src/test/java/io/grpc/internal/DnsNameResolverTest.java b/core/src/test/java/io/grpc/internal/DnsNameResolverTest.java index 44bde2222..6bcd3ce68 100644 --- a/core/src/test/java/io/grpc/internal/DnsNameResolverTest.java +++ b/core/src/test/java/io/grpc/internal/DnsNameResolverTest.java @@ -42,6 +42,7 @@ import io.grpc.internal.DnsNameResolver.ResolutionResults; import io.grpc.internal.DnsNameResolver.ResourceResolver; import io.grpc.internal.DnsNameResolver.ResourceResolverFactory; import io.grpc.internal.SharedResourceHolder.Resource; +import java.io.IOException; import java.net.Inet4Address; import java.net.InetAddress; import java.net.InetSocketAddress; @@ -397,6 +398,23 @@ public class DnsNameResolverTest { } @Test + public void resolveAll_nullResourceResolver_addressFailure() throws Exception { + final String hostname = "addr.fake"; + + AddressResolver mockResolver = mock(AddressResolver.class); + when(mockResolver.resolveAddress(Matchers.anyString())) + .thenThrow(new IOException("no addr")); + ResourceResolver resourceResolver = null; + boolean resovleSrv = true; + boolean resolveTxt = true; + + thrown.expect(RuntimeException.class); + thrown.expectMessage("no addr"); + + DnsNameResolver.resolveAll(mockResolver, resourceResolver, resovleSrv, resolveTxt, hostname); + } + + @Test public void resolveAll_presentResourceResolver() throws Exception { final String hostname = "addr.fake"; final Inet4Address backendAddr = InetAddresses.fromInteger(0x7f000001); |