Repository: hbase
Updated Branches:
  refs/heads/branch-1 968e464ae -> 7983d2f45
  refs/heads/master 64804a049 -> 66fb697f8


HBASE-16275 Change ServerManager#onlineServers from ConcurrentHashMap to 
ConcurrentSkipListMap (Huaxiang Sun)


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/66fb697f
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/66fb697f
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/66fb697f

Branch: refs/heads/master
Commit: 66fb697f816cc94030079ce9f3c60aea5b3a6a0c
Parents: 64804a0
Author: Matteo Bertozzi <[email protected]>
Authored: Thu Jul 28 11:13:58 2016 -0700
Committer: Matteo Bertozzi <[email protected]>
Committed: Thu Jul 28 11:13:58 2016 -0700

----------------------------------------------------------------------
 .../org/apache/hadoop/hbase/master/ServerManager.java | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/66fb697f/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
index 612a8d0..531883a 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
@@ -135,8 +135,8 @@ public class ServerManager {
     new ConcurrentSkipListMap<byte[], ConcurrentNavigableMap<byte[], 
Long>>(Bytes.BYTES_COMPARATOR);
 
   /** Map of registered servers to their current load */
-  private final ConcurrentHashMap<ServerName, ServerLoad> onlineServers =
-    new ConcurrentHashMap<ServerName, ServerLoad>();
+  private final ConcurrentNavigableMap<ServerName, ServerLoad> onlineServers =
+    new ConcurrentSkipListMap<ServerName, ServerLoad>();
 
   /**
    * Map of admin interfaces per registered regionserver; these interfaces we 
use to control
@@ -439,8 +439,14 @@ public class ServerManager {
    */
   private ServerName findServerWithSameHostnamePortWithLock(
       final ServerName serverName) {
-    for (ServerName sn: this.onlineServers.keySet()) {
-      if (ServerName.isSameHostnameAndPort(serverName, sn)) return sn;
+    ServerName end = ServerName.valueOf(serverName.getHostname(), 
serverName.getPort(),
+        Long.MAX_VALUE);
+
+    ServerName r = onlineServers.lowerKey(end);
+    if (r != null) {
+      if (ServerName.isSameHostnameAndPort(r, serverName)) {
+        return r;
+      }
     }
     return null;
   }

Reply via email to