From 6f569976e816dc36effea8510d2b12d6402b1612 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Fri, 6 Feb 2015 17:54:50 +0000 Subject: [PATCH] Avoid NPE if discovery is not available yet --- .../netflix/turbine/EurekaInstanceDiscovery.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/spring-cloud-netflix-turbine/src/main/java/org/springframework/cloud/netflix/turbine/EurekaInstanceDiscovery.java b/spring-cloud-netflix-turbine/src/main/java/org/springframework/cloud/netflix/turbine/EurekaInstanceDiscovery.java index 8e257c44..5aade4ee 100644 --- a/spring-cloud-netflix-turbine/src/main/java/org/springframework/cloud/netflix/turbine/EurekaInstanceDiscovery.java +++ b/spring-cloud-netflix-turbine/src/main/java/org/springframework/cloud/netflix/turbine/EurekaInstanceDiscovery.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.Map; import lombok.extern.apachecommons.CommonsLog; + import org.springframework.expression.Expression; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.support.StandardEvaluationContext; @@ -33,6 +34,7 @@ import com.netflix.appinfo.InstanceInfo; import com.netflix.appinfo.InstanceInfo.InstanceStatus; import com.netflix.config.DynamicPropertyFactory; import com.netflix.config.DynamicStringProperty; +import com.netflix.discovery.DiscoveryClient; import com.netflix.discovery.DiscoveryManager; import com.netflix.discovery.shared.Application; import com.netflix.turbine.discovery.Instance; @@ -111,14 +113,19 @@ public class EurekaInstanceDiscovery implements InstanceDiscovery { private List getInstancesForApp(String appName) throws Exception { List instances = new ArrayList(); log.info("Fetching instances for app: " + appName); - Application app = DiscoveryManager.getInstance().getDiscoveryClient() - .getApplication(appName); + DiscoveryClient client = DiscoveryManager.getInstance().getDiscoveryClient(); + if (client == null) { + log.info("Discovery client not ready for: " + appName); + return instances; + } + Application app = client.getApplication(appName); if (app == null) { log.warn("Eureka returned null for app: " + appName); } List instancesForApp = app.getInstances(); if (instancesForApp != null) { - log.info("Received instance list for app: "+appName+" = " + instancesForApp.size()); + log.info("Received instance list for app: " + appName + " = " + + instancesForApp.size()); for (InstanceInfo iInfo : instancesForApp) { Instance instance = marshallInstanceInfo(iInfo); if (instance != null) {