You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2011/12/02 06:53:27 UTC

svn commit: r1209366 - in /hbase/branches/0.92: CHANGES.txt src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java

Author: stack
Date: Fri Dec  2 05:53:26 2011
New Revision: 1209366

URL: http://svn.apache.org/viewvc?rev=1209366&view=rev
Log:
HBASE-4899 Region would be assigned twice easily with continually killing server and moving region in testing environment

Modified:
    hbase/branches/0.92/CHANGES.txt
    hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java

Modified: hbase/branches/0.92/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/branches/0.92/CHANGES.txt?rev=1209366&r1=1209365&r2=1209366&view=diff
==============================================================================
--- hbase/branches/0.92/CHANGES.txt (original)
+++ hbase/branches/0.92/CHANGES.txt Fri Dec  2 05:53:26 2011
@@ -454,6 +454,9 @@ Release 0.92.0 - Unreleased
                (Tom White)
    HBASE-4918  HTablePool Constructor may cause unintended behavior
                (Naoki Kitora)
+   HBASE-4899  Region would be assigned twice easily with continually killing
+               server and moving region in testing environment
+               (Chunhui Shen)
 
   TESTS
    HBASE-4492  TestRollingRestart fails intermittently

Modified: hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java?rev=1209366&r1=1209365&r2=1209366&view=diff
==============================================================================
--- hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java (original)
+++ hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java Fri Dec  2 05:53:26 2011
@@ -286,7 +286,22 @@ public class ServerShutdownHandler exten
           if (processDeadRegion(e.getKey(), e.getValue(),
               this.services.getAssignmentManager(),
               this.server.getCatalogTracker())) {
-            this.services.getAssignmentManager().assign(e.getKey(), true);
+            RegionState rit = this.services.getAssignmentManager().isRegionInTransition(e.getKey());
+            ServerName addressFromAM = this.services.getAssignmentManager()
+                .getRegionServerOfRegion(e.getKey());
+            if (rit != null && !rit.isClosing() && !rit.isPendingClose()) {
+              // Skip regions that were in transition unless CLOSING or
+              // PENDING_CLOSE
+              LOG.info("Skip assigning region " + rit.toString());
+            } else if (addressFromAM != null
+                && !addressFromAM.equals(this.serverName)) {
+              LOG.debug("Skip assigning region "
+                    + e.getKey().getRegionNameAsString()
+                    + " because it has been opened in "
+                    + addressFromAM.getServerName());
+              } else {
+                this.services.getAssignmentManager().assign(e.getKey(), true);
+              }
           }
         }
       }