Commit 6f569976 by Dave Syer

Avoid NPE if discovery is not available yet

parent 06d0bbe7
...@@ -23,6 +23,7 @@ import java.util.List; ...@@ -23,6 +23,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import lombok.extern.apachecommons.CommonsLog; import lombok.extern.apachecommons.CommonsLog;
import org.springframework.expression.Expression; import org.springframework.expression.Expression;
import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext; import org.springframework.expression.spel.support.StandardEvaluationContext;
...@@ -33,6 +34,7 @@ import com.netflix.appinfo.InstanceInfo; ...@@ -33,6 +34,7 @@ import com.netflix.appinfo.InstanceInfo;
import com.netflix.appinfo.InstanceInfo.InstanceStatus; import com.netflix.appinfo.InstanceInfo.InstanceStatus;
import com.netflix.config.DynamicPropertyFactory; import com.netflix.config.DynamicPropertyFactory;
import com.netflix.config.DynamicStringProperty; import com.netflix.config.DynamicStringProperty;
import com.netflix.discovery.DiscoveryClient;
import com.netflix.discovery.DiscoveryManager; import com.netflix.discovery.DiscoveryManager;
import com.netflix.discovery.shared.Application; import com.netflix.discovery.shared.Application;
import com.netflix.turbine.discovery.Instance; import com.netflix.turbine.discovery.Instance;
...@@ -111,14 +113,19 @@ public class EurekaInstanceDiscovery implements InstanceDiscovery { ...@@ -111,14 +113,19 @@ public class EurekaInstanceDiscovery implements InstanceDiscovery {
private List<Instance> getInstancesForApp(String appName) throws Exception { private List<Instance> getInstancesForApp(String appName) throws Exception {
List<Instance> instances = new ArrayList<Instance>(); List<Instance> instances = new ArrayList<Instance>();
log.info("Fetching instances for app: " + appName); log.info("Fetching instances for app: " + appName);
Application app = DiscoveryManager.getInstance().getDiscoveryClient() DiscoveryClient client = DiscoveryManager.getInstance().getDiscoveryClient();
.getApplication(appName); if (client == null) {
log.info("Discovery client not ready for: " + appName);
return instances;
}
Application app = client.getApplication(appName);
if (app == null) { if (app == null) {
log.warn("Eureka returned null for app: " + appName); log.warn("Eureka returned null for app: " + appName);
} }
List<InstanceInfo> instancesForApp = app.getInstances(); List<InstanceInfo> instancesForApp = app.getInstances();
if (instancesForApp != null) { 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) { for (InstanceInfo iInfo : instancesForApp) {
Instance instance = marshallInstanceInfo(iInfo); Instance instance = marshallInstanceInfo(iInfo);
if (instance != null) { if (instance != null) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment