You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by dd...@apache.org on 2014/03/14 00:37:25 UTC

svn commit: r1577384 - /hbase/branches/hbase-10070/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionStates.java

Author: ddas
Date: Thu Mar 13 23:37:25 2014
New Revision: 1577384

URL: http://svn.apache.org/r1577384
Log:
HBASE-10743. Replica map update is problematic in RegionStates

Modified:
    hbase/branches/hbase-10070/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionStates.java

Modified: hbase/branches/hbase-10070/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionStates.java
URL: http://svn.apache.org/viewvc/hbase/branches/hbase-10070/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionStates.java?rev=1577384&r1=1577383&r2=1577384&view=diff
==============================================================================
--- hbase/branches/hbase-10070/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionStates.java (original)
+++ hbase/branches/hbase-10070/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionStates.java Thu Mar 13 23:37:25 2014
@@ -412,6 +412,7 @@ public class RegionStates {
     if (!serverName.equals(oldServerName)) {
       LOG.info("Onlined " + hri.getShortNameToLog() + " on " + serverName);
       addToServerHoldings(serverName, hri);
+      addToReplicaMapping(hri);
       if (oldServerName != null) {
         LOG.info("Offlined " + hri.getShortNameToLog() + " from " + oldServerName);
         removeFromServerHoldings(oldServerName, hri);
@@ -426,7 +427,9 @@ public class RegionStates {
       serverHoldings.put(serverName, regions);
     }
     regions.add(hri);
+  }
 
+  private void addToReplicaMapping(HRegionInfo hri) {
     HRegionInfo defaultReplica = RegionReplicaUtil.getRegionInfoForDefaultReplica(hri);
     Set<HRegionInfo> replicas =
         defaultReplicaToOtherReplicas.get(defaultReplica);
@@ -443,6 +446,9 @@ public class RegionStates {
     if (oldRegions.isEmpty()) {
       serverHoldings.remove(serverName);
     }
+  }
+
+  private void removeFromReplicaMapping(HRegionInfo hri) {
     HRegionInfo defaultReplica = RegionReplicaUtil.getRegionInfoForDefaultReplica(hri);
     Set<HRegionInfo> replicas = defaultReplicaToOtherReplicas.get(defaultReplica);
     if (replicas != null) {
@@ -521,6 +527,7 @@ public class RegionStates {
     if (oldServerName != null) {
       LOG.info("Offlined " + hri.getShortNameToLog() + " from " + oldServerName);
       removeFromServerHoldings(oldServerName, hri);
+      removeFromReplicaMapping(hri);
     }
   }