aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorCarl Mastrangelo <notcarl@google.com>2018-10-17 12:51:23 -0700
committerGitHub <noreply@github.com>2018-10-17 12:51:23 -0700
commite8cf3fa8eaca3abc61c066f67a94e62bdbb7322d (patch)
tree9d2d9d30ba8507aab7c7613873e2bcc5f5402db9 /core
parentddc3673591647166e9235f7fb04f3e446d2b0111 (diff)
downloadgrpc-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.java5
-rw-r--r--core/src/test/java/io/grpc/internal/DnsNameResolverTest.java18
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);