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);
+ }
}
}
}