You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by jg...@apache.org on 2010/12/14 21:00:46 UTC
svn commit: r1049237 - in /hbase/branches/0.90: CHANGES.txt
src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java
Author: jgray
Date: Tue Dec 14 20:00:45 2010
New Revision: 1049237
URL: http://svn.apache.org/viewvc?rev=1049237&view=rev
Log:
HBASE-3332 Regions stuck in transition after RS failure
Modified:
hbase/branches/0.90/CHANGES.txt
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java
Modified: hbase/branches/0.90/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/branches/0.90/CHANGES.txt?rev=1049237&r1=1049236&r2=1049237&view=diff
==============================================================================
--- hbase/branches/0.90/CHANGES.txt (original)
+++ hbase/branches/0.90/CHANGES.txt Tue Dec 14 20:00:45 2010
@@ -744,6 +744,7 @@ Release 0.90.0 - Unreleased
defaults to false
HBASE-3337 Restore HBCK fix of unassignment and dupe assignment for new
master
+ HBASE-3332 Regions stuck in transition after RS failure
IMPROVEMENTS
Modified: hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java?rev=1049237&r1=1049236&r2=1049237&view=diff
==============================================================================
--- hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (original)
+++ hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java Tue Dec 14 20:00:45 2010
@@ -1654,9 +1654,9 @@ public class AssignmentManager extends Z
/**
* Process shutdown server removing any assignments.
* @param hsi Server that went down.
- * @return set of regions on this server that are not in transition
+ * @return list of regions in transition on this server
*/
- public List<HRegionInfo> processServerShutdown(final HServerInfo hsi) {
+ public List<RegionState> processServerShutdown(final HServerInfo hsi) {
// Clean out any existing assignment plans for this server
synchronized (this.regionPlans) {
for (Iterator <Map.Entry<String, RegionPlan>> i =
@@ -1672,7 +1672,7 @@ public class AssignmentManager extends Z
// Remove this server from map of servers to regions, and remove all regions
// of this server from online map of regions.
Set<HRegionInfo> deadRegions = null;
- List<HRegionInfo> rits = new ArrayList<HRegionInfo>();
+ List<RegionState> rits = new ArrayList<RegionState>();
synchronized (this.regions) {
List<HRegionInfo> assignedRegions = this.servers.remove(hsi);
if (assignedRegions == null || assignedRegions.isEmpty()) {
@@ -1690,7 +1690,7 @@ public class AssignmentManager extends Z
synchronized (regionsInTransition) {
for (RegionState region : this.regionsInTransition.values()) {
if (deadRegions.remove(region.getRegion())) {
- rits.add(region.getRegion());
+ rits.add(region);
}
}
}
Modified: hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java?rev=1049237&r1=1049236&r2=1049237&view=diff
==============================================================================
--- hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java (original)
+++ hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java Tue Dec 14 20:00:45 2010
@@ -40,6 +40,7 @@ import org.apache.hadoop.hbase.master.As
import org.apache.hadoop.hbase.master.DeadServer;
import org.apache.hadoop.hbase.master.MasterServices;
import org.apache.hadoop.hbase.master.ServerManager;
+import org.apache.hadoop.hbase.master.AssignmentManager.RegionState;
import org.apache.hadoop.hbase.util.Pair;
import org.apache.hadoop.hbase.util.Writables;
import org.apache.zookeeper.KeeperException;
@@ -98,7 +99,7 @@ public class ServerShutdownHandler exten
// doing after log splitting. Could do some states before -- OPENING?
// OFFLINE? -- and then others after like CLOSING that depend on log
// splitting.
- List<HRegionInfo> regionsInTransition =
+ List<RegionState> regionsInTransition =
this.services.getAssignmentManager().processServerShutdown(this.hsi);
// Assign root and meta if we were carrying them.
@@ -133,11 +134,16 @@ public class ServerShutdownHandler exten
}
}
- // Remove regions that were in transition
- for (HRegionInfo rit : regionsInTransition) hris.remove(rit);
- LOG.info("Reassigning the " + hris.size() + " region(s) that " + serverName
+ // Skip regions that were in transition unless CLOSING or PENDING_CLOSE
+ for (RegionState rit : regionsInTransition) {
+ if (!rit.isClosing() && !rit.isPendingClose()) {
+ hris.remove(rit.getRegion());
+ }
+ }
+
+ LOG.info("Reassigning " + hris.size() + " region(s) that " + serverName
+ " was carrying (skipping " + regionsInTransition.size() +
- " regions(s) that are in transition)");
+ " regions(s) that are already in transition)");
// Iterate regions that were on this server and assign them
for (Map.Entry<HRegionInfo, Result> e: hris.entrySet()) {