You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by jd...@apache.org on 2010/08/18 21:40:50 UTC

svn commit: r986887 - in /hbase/trunk: CHANGES.txt src/main/java/org/apache/hadoop/hbase/master/BaseScanner.java

Author: jdcryans
Date: Wed Aug 18 19:40:49 2010
New Revision: 986887

URL: http://svn.apache.org/viewvc?rev=986887&view=rev
Log:
HBASE-2927  BaseScanner gets stale HRegionInfo in some race cases

Modified:
    hbase/trunk/CHANGES.txt
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/BaseScanner.java

Modified: hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/trunk/CHANGES.txt?rev=986887&r1=986886&r2=986887&view=diff
==============================================================================
--- hbase/trunk/CHANGES.txt (original)
+++ hbase/trunk/CHANGES.txt Wed Aug 18 19:40:49 2010
@@ -479,6 +479,7 @@ Release 0.21.0 - Unreleased
    HBASE-2919  initTableReducerJob: Unused method parameter
                (Libor Dener via Stack)
    HBASE-2923  Deadlock between HRegion.internalFlushCache and close
+   HBASE-2927  BaseScanner gets stale HRegionInfo in some race cases
 
   IMPROVEMENTS
    HBASE-1760  Cleanup TODOs in HTable

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/BaseScanner.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/BaseScanner.java?rev=986887&r1=986886&r2=986887&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/BaseScanner.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/BaseScanner.java Wed Aug 18 19:40:49 2010
@@ -538,7 +538,7 @@ abstract class BaseScanner extends Chore
    * @throws IOException
    */
   protected void checkAssigned(final HRegionInterface regionServer,
-    final MetaRegion meta, final HRegionInfo info,
+    final MetaRegion meta, HRegionInfo info,
     final String hostnameAndPort, final long startCode, boolean checkTwice)
   throws IOException {
     boolean tryAgain = false;
@@ -555,6 +555,7 @@ abstract class BaseScanner extends Chore
       if (r != null && !r.isEmpty()) {
         sa = getServerAddress(r);
         sc = getStartCode(r);
+        info = master.getHRegionInfo(r.getRow(), r);
       }
     }
     if (sa != null && sa.length() > 0) {
@@ -566,7 +567,7 @@ abstract class BaseScanner extends Chore
        * a dead server. Regions that were on a dead server will get reassigned
        * by ProcessServerShutdown
        */
-      if (info.isOffline() ||
+      if (info == null || info.isOffline() ||
         this.master.getRegionManager().regionIsInTransition(info.getRegionNameAsString()) ||
           (serverName != null && this.master.getServerManager().isDead(serverName))) {
         return;