hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rishit Shroff (JIRA)" <j...@apache.org>
Subject [jira] [Created] (HBASE-8223) [89-FB] Fix race condition between append/sync and HLog.close() work flow.
Date Fri, 29 Mar 2013 19:21:15 GMT
Rishit Shroff created HBASE-8223:
------------------------------------

             Summary: [89-FB] Fix race condition between append/sync and HLog.close() work
flow.
                 Key: HBASE-8223
                 URL: https://issues.apache.org/jira/browse/HBASE-8223
             Project: HBase
          Issue Type: Bug
    Affects Versions: 0.89-fb
            Reporter: Rishit Shroff
            Priority: Minor


The RegionServer was performing a shutdown as it got YouAreDeadException. It closed the HLog
and was waiting to close all the regions where it got stuck.

The reason region close is stuck because it's trying to obtain a lock which is occupied by
the put op, which in turn is waiting for append to HLog to complete.

There is race condition here is between append/sync and HLog.close() work flow. 

Scenario:

Thread 1 => doing the append
Thread 2 => doing HregionServer shutdown

Timeline:

t1> 1: Verifies that LogSyncer is not shutting down and HLog is not closed and calls sync()
t2> 2: HRegionServer issued HLog.close()
t3> 2: In HLog.close(), it joins the LogSyncer thread, which signals all the threads waiting
on syncDone and exits.
t4> 1: In sync, it sees that the sync has not complete until its txd, hence adds itself
to the syncDone.await queue.

Note: at t4, it does not check whether the LogSyncer Thread is alive or not, which caused
this hang.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message