You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ra...@apache.org on 2012/06/27 19:15:28 UTC
svn commit: r1354635 -
/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
Author: ramkrishna
Date: Wed Jun 27 17:15:27 2012
New Revision: 1354635
URL: http://svn.apache.org/viewvc?rev=1354635&view=rev
Log:
HBASE-6227 SSH and cluster startup causes data loss
Submitted by:Chunhui
Reviewed by:Ted, Ram
Modified:
hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java?rev=1354635&r1=1354634&r2=1354635&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java Wed Jun 27 17:15:27 2012
@@ -412,6 +412,13 @@ public class AssignmentManager extends Z
nodes.removeAll(regionsInTransition.keySet());
}
+ // If some dead servers are processed by ServerShutdownHandler, we shouldn't
+ // assign all user regions( some would be assigned by
+ // ServerShutdownHandler), consider it as a failover
+ if (!this.serverManager.getDeadServers().isEmpty()) {
+ this.failover = true;
+ }
+
// If we found user regions out on cluster, its a failover.
if (this.failover) {
LOG.info("Found regions out on cluster or in RIT; failover");
@@ -2671,6 +2678,9 @@ public class AssignmentManager extends Z
// skip regions of dead servers because SSH will process regions during rs expiration.
// see HBASE-5916
if (actualDeadServers.contains(deadServer.getKey())) {
+ for (Pair<HRegionInfo, Result> deadRegion : deadServer.getValue()) {
+ nodes.remove(deadRegion.getFirst().getEncodedName());
+ }
continue;
}
List<Pair<HRegionInfo, Result>> regions = deadServer.getValue();