Liu Shaohui created HBASE-11707: ----------------------------------- Summary: Using Map instead of list in FailedServers of RpcClient Key: HBASE-11707 URL: https://issues.apache.org/jira/browse/HBASE-11707 Project: HBase Issue Type: Improvement Components: Client Reporter: Liu Shaohui Assignee: Liu Shaohui Priority: Minor
Currently, FailedServers uses a list to record the black list of servers and iterate the list to check if a server is in list. It's not efficient when the list is very large. And the list is not thread safe for the add and iteration operations. RpcClient.java#175 {code} // iterate, looking for the search entry and cleaning expired entries Iterator<Pair<Long, String>> it = failedServers.iterator(); while (it.hasNext()) { Pair<Long, String> cur = it.next(); if (cur.getFirst() < now) { it.remove(); } else { if (lookup.equals(cur.getSecond())) { return true; } } {code} A simple change is to change this list to ConcurrentHashMap. -- This message was sent by Atlassian JIRA (v6.2#6252)