Hi Team:
In servicecomb-java-chassis, when calling RetryLoadBalancer#chooseServer, the method will call LoadBalancer#chooseServer and 17 duplicate logs may be printed when all of the following happen: 1. There are 1 or more ServiceCombServer after getting servers from local context; 2. There are no ServiceCombServer remained after getting filtered list of servers. Some code in LoadBalancer#chooseServer shown as following: public ServiceCombServer chooseServer(Invocation invocation) { List<ServiceCombServer> servers = invocation.getLocalContext(LoadbalanceHandler.CONTEXT_KEY_SERVER_LIST); int serversCount = servers.size(); for (ServerListFilterExt filterExt : filters) { servers = filterExt.getFilteredListOfServers(servers, invocation); if (servers.isEmpty() && serversCount > 0) { LOGGER.warn("There are not servers exist after filtered by {}.", filterExt.getClass()); break; } } Related code in RetryLoadBalancer#chooseServer shown as following: public Server chooseServer(Object key) { boolean isRetry = null != lastServer; for (int i = 0; i < COUNT; i++) { Server s = delegate.chooseServer((Invocation) key); if (s != null && !s.equals(lastServer)) { lastServer = s; break; } } It seems that the goal of retrying server seventeen times is to make sure accessing some server which is different from the current server. But if there are no any servers after getting filter list of servers, it makes no sense to retry more servers. I want to add conditional statement to stop retrying another server when no server available in RetryLoadBalancer#chooseServer to solve it but not sure whether I am correct. -------------------------------------------------------Ang Li