From 1ff701cfe5bc77e500c9edfc7a81c5f8b93821fd Mon Sep 17 00:00:00 2001 From: Ioannis Canellos Date: Wed, 6 Apr 2016 19:15:12 +0300 Subject: [PATCH] KubernetesDiscoveryClient catches throwables and falls back to default instance when fetches the local instance. --- .../discovery/KubernetesDiscoveryClient.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/spring-cloud-kubernetes-discovery/src/main/java/io/fabric8/spring/cloud/discovery/KubernetesDiscoveryClient.java b/spring-cloud-kubernetes-discovery/src/main/java/io/fabric8/spring/cloud/discovery/KubernetesDiscoveryClient.java index ccc3f92e..16b317eb 100644 --- a/spring-cloud-kubernetes-discovery/src/main/java/io/fabric8/spring/cloud/discovery/KubernetesDiscoveryClient.java +++ b/spring-cloud-kubernetes-discovery/src/main/java/io/fabric8/spring/cloud/discovery/KubernetesDiscoveryClient.java @@ -61,14 +61,17 @@ public class KubernetesDiscoveryClient implements DiscoveryClient { Endpoints endpoints = client.endpoints().withName(serviceName).get(); if (Utils.isNullOrEmpty(podName) || endpoints == null) { - //TODO: Fallback to something more meaningful. return defaultInstance; } - return endpoints.getSubsets() - .stream() - .filter(s -> s.getAddresses().iterator().next().getIp().equals(podName)) - .map(s -> (ServiceInstance) new KubernetesServiceInstance(serviceName, s.getPorts().iterator().next().getName(), s, false)) - .findFirst().orElse(defaultInstance); + try { + return endpoints.getSubsets() + .stream() + .filter(s -> s.getAddresses().get(0).getTargetRef().getName().equals(podName)) + .map(s -> (ServiceInstance) new KubernetesServiceInstance(serviceName, s.getPorts().iterator().next().getName(), s, false)) + .findFirst().orElse(defaultInstance); + } catch (Throwable t) { + return defaultInstance; + } } @Override