KubernetesDiscoveryClient catches throwables and falls back to default instance when fetches the local instance.

This commit is contained in:
Ioannis Canellos
2016-04-06 19:15:12 +03:00
parent e29eed3f5d
commit 1ff701cfe5

View File

@@ -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