From 334bc7fdf70b08928150484b7a5f2f5e83b1c46a Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Wed, 30 Dec 2015 16:35:57 +0100 Subject: [PATCH] Avoiding NPE in DiscoveryClientEndpointLocator --- .../sleuth/zipkin/DiscoveryClientEndpointLocator.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/DiscoveryClientEndpointLocator.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/DiscoveryClientEndpointLocator.java index 083facc0a..64f355ba2 100644 --- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/DiscoveryClientEndpointLocator.java +++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/DiscoveryClientEndpointLocator.java @@ -16,14 +16,12 @@ package org.springframework.cloud.sleuth.zipkin; -import java.net.InetAddress; - +import com.twitter.zipkin.gen.Endpoint; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.DiscoveryClient; -import org.springframework.cloud.sleuth.Span; import org.springframework.cloud.util.InetUtils; -import com.twitter.zipkin.gen.Endpoint; +import java.net.InetAddress; /** * An {@link EndpointLocator} that tries to find local service information from a @@ -43,6 +41,9 @@ public class DiscoveryClientEndpointLocator implements EndpointLocator { @Override public Endpoint local() { ServiceInstance instance = this.client.getLocalServiceInstance(); + if (instance == null) { + throw new NoServiceInstanceAvailableException(); + } return new Endpoint(getIpAddress(instance), new Integer(instance.getPort()).shortValue(), instance.getServiceId()); } @@ -57,4 +58,5 @@ public class DiscoveryClientEndpointLocator implements EndpointLocator { } } + static class NoServiceInstanceAvailableException extends RuntimeException { } }