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:55:26 UTC
svn commit: r1209367 -
/hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java
Author: stack
Date: Fri Dec 2 05:55:25 2011
New Revision: 1209367
URL: http://svn.apache.org/viewvc?rev=1209367&view=rev
Log:
HBASE-4899 Region would be assigned twice easily with continually killing server and moving region in testing environment
Modified:
hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java
Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java?rev=1209367&r1=1209366&r2=1209367&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java Fri Dec 2 05:55:25 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);
+ }
}
}
}