You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2013/02/21 19:34:32 UTC
svn commit: r1448767 -
/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
Author: tedyu
Date: Thu Feb 21 18:34:32 2013
New Revision: 1448767
URL: http://svn.apache.org/r1448767
Log:
HBASE-7800 RegionMovedException can cause servers to play ping pong with client (Sergey)
Modified:
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=1448767&r1=1448766&r2=1448767&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Thu Feb 21 18:34:32 2013
@@ -2532,7 +2532,6 @@ public class HRegionServer implements Cl
}
addToMovedRegions(r.getRegionInfo().getEncodedName(), destination, closeSeqNum);
}
-
return toReturn != null;
}
@@ -3480,6 +3479,10 @@ public class HRegionServer implements Cl
" - ignoring this new request for this region.");
}
+ // We are opening this region. If it moves back and forth for whatever reason, we don't
+ // want to keep returning the stale moved record while we are opening/if we close again.
+ removeFromMovedRegions(region.getEncodedName());
+
if (previous == null) {
// If there is no action in progress, we can submit a specific handler.
// Need to pass the expected version in the constructor.
@@ -3967,9 +3970,11 @@ public class HRegionServer implements Cl
LOG.info("Adding moved region record: " + encodedName + " to "
+ destination.getServerName() + ":" + destination.getPort()
+ " as of " + closeSeqNum);
- movedRegions.put(
- encodedName,
- new MovedRegionInfo(destination, closeSeqNum));
+ movedRegions.put(encodedName, new MovedRegionInfo(destination, closeSeqNum));
+ }
+
+ private void removeFromMovedRegions(String encodedName) {
+ movedRegions.remove(encodedName);
}
private MovedRegionInfo getMovedRegion(final String encodedRegionName) {
@@ -3990,7 +3995,7 @@ public class HRegionServer implements Cl
/**
* Remove the expired entries from the moved regions list.
*/
- protected void cleanMovedRegions(){
+ protected void cleanMovedRegions() {
final long cutOff = System.currentTimeMillis() - TIMEOUT_REGION_MOVED;
Iterator<Entry<String, MovedRegionInfo>> it = movedRegions.entrySet().iterator();