hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jean-Daniel Cryans (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HBASE-919) Master and Region Server need to provide root region location if they are using HTable
Date Mon, 20 Oct 2008 02:48:44 GMT

    [ https://issues.apache.org/jira/browse/HBASE-919?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12640900#action_12640900
] 

Jean-Daniel Cryans commented on HBASE-919:
------------------------------------------

Friday I did a lot of debug to see what was going on and like I wrote on IRC, here's what's
happening without the sleep for the unit tests :

ROOT gets assigned
META reports it's opening but is still not processed
The HTable creation in HBaseClusterTestCase occurs
The creation requires the address of ROOT
The HMaster asks the RegionManager if all regions are assigned which calls the following code

{code}
public boolean allRegionsAssigned() {
    return isInitialMetaScanComplete() && unassignedRegions.size() == 0 &&
      pendingRegions.size() == 0;
  }
{code}
My debug shows me that the pendingRegions.size() equals 1
So, the HTable creation hangs because this verification is retried
In the mean time, the META table is being processed (so it's a pending region)
During it's opening, it onlines the region historian which tries to create a HTable
First thing it does is trying to find the ROOT region and goes into :
{code}
if (Bytes.equals(tableName, ROOT_TABLE_NAME)) {
        synchronized (rootRegionLock) {
          // This block guards against two threads trying to find the root
          // region at the same time. One will go do the find while the 
          // second waits. The second thread will not do find.
          
          if (!useCache || rootRegionLocation == null) {
            return locateRootRegion();
          }
          return rootRegionLocation;
        }        
{code}
Here the synchronized block is already taken by the first HTable I described (in HBaseClusterTestCase
)

deadlock

> Master and Region Server need to provide root region location if they are using HTable
> --------------------------------------------------------------------------------------
>
>                 Key: HBASE-919
>                 URL: https://issues.apache.org/jira/browse/HBASE-919
>             Project: Hadoop HBase
>          Issue Type: Sub-task
>          Components: master, regionserver
>    Affects Versions: 0.18.0
>            Reporter: Jim Kellerman
>            Assignee: Jim Kellerman
>            Priority: Blocker
>             Fix For: 0.19.0
>
>         Attachments: 919.patch, 919.patch
>
>
> There needs to be a mechanism by which master and region servers can provide the HServerAddress
for the root region to HConnectionManager so that they can use a HTable. 

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


Mime
View raw message