Interrupt of a region open comes across as a successful open
------------------------------------------------------------

                 Key: HBASE-3381
                 URL: https://issues.apache.org/jira/browse/HBASE-3381
             Project: HBase
          Issue Type: Bug
            Reporter: stack
             Fix For: 0.90.0


Meta was offline when below happened:

{code}
2010-12-21 19:45:23,023 DEBUG org.apache.hadoop.hbase.zookeeper.ZKAssign: 
regionserver:60020-0x12d0a53c540000e Attempting to transition node 
337038b50e467fbd6b031f278bbd9c22 from RS_ZK_REGION_OPENING to 
RS_ZK_REGION_OPENING
2010-12-21 19:45:23,046 DEBUG org.apache.hadoop.hbase.zookeeper.ZKAssign: 
regionserver:60020-0x12d0a53c540000e Successfully transitioned node 
337038b50e467fbd6b031f278bbd9c22 from RS_ZK_REGION_OPENING to 
RS_ZK_REGION_OPENING
2010-12-21 19:45:26,379 DEBUG 
org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler: Interrupting 
thread Thread[PostOpenDeployTasks:337038b50e467fbd6b031f278bbd9c22,5,main]
2010-12-21 19:45:26,379 DEBUG org.apache.hadoop.hbase.zookeeper.ZKAssign: 
regionserver:60020-0x12d0a53c540000e Attempting to transition node 
337038b50e467fbd6b031f278bbd9c22 from RS_ZK_REGION_OPENING to 
RS_ZK_REGION_OPENED
2010-12-21 19:45:26,381 WARN 
org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler: Exception 
running postOpenDeployTasks; region=337038b50e467fbd6b031f278bbd9c22
org.apache.hadoop.hbase.NotAllMetaRegionsOnlineException: Interrupted
    at 
org.apache.hadoop.hbase.catalog.CatalogTracker.waitForMetaServerConnectionDefault(CatalogTracker.java:364)
    at 
org.apache.hadoop.hbase.catalog.MetaEditor.updateRegionLocation(MetaEditor.java:146)
    at 
org.apache.hadoop.hbase.regionserver.HRegionServer.postOpenDeployTasks(HRegionServer.java:1331)
    at 
org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler$PostOpenDeployTasksThread.run(OpenRegionHandler.java:195)
...
{code}

So, we timed out trying to open the region but rather than close the region 
because edit failed, we missed seeing the InterruptedException.

Here is suggested fix:

{code}
diff --git a/src/main/java/org/apache/hadoop/hbase/catalog/MetaReader.java 
b/src/main/java/org/apache/hadoop/hbase/catalog/MetaReader.java
index 7bf680d..2b0078c 100644
--- a/src/main/java/org/apache/hadoop/hbase/catalog/MetaReader.java
+++ b/src/main/java/org/apache/hadoop/hbase/catalog/MetaReader.java
@@ -339,7 +339,7 @@ public class MetaReader {
     get.addFamily(HConstants.CATALOG_FAMILY);
     byte [] meta = getCatalogRegionNameForRegion(regionName);
     Result r = catalogTracker.waitForMetaServerConnectionDefault().get(meta, 
get);
-    if(r == null || r.isEmpty()) {
+    if (r == null || r.isEmpty()) {
       return null;
     }
     return metaRowToRegionPair(r);
{code}

Let me try it.

W/o this, what we see is hbck showing that region is on server X but in .META. 
it shows as being on Y (its pre-balance server)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to