diff --git a/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/RandomRule.java b/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/RandomRule.java index debe21b6b..d2235511a 100644 --- a/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/RandomRule.java +++ b/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/RandomRule.java @@ -48,17 +48,18 @@ public Server choose(ILoadBalancer lb, Object key) { List upList = lb.getReachableServers(); List allList = lb.getAllServers(); + int upCount = upList.size(); int serverCount = allList.size(); - if (serverCount == 0) { + if (serverCount == 0 || upCount == 0) { /* - * No servers. End regardless of pass, because subsequent passes + * No servers or No servers available. End regardless of pass, because subsequent passes * only get more restrictive. */ return null; } int index = chooseRandomInt(serverCount); - server = upList.get(index); + server = allList.get(index); if (server == null) { /*