hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "HBase Review Board (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HBASE-2915) Deadlock between HRegion.ICV and HRegion.close
Date Sat, 21 Aug 2010 01:01:16 GMT

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

HBase Review Board commented on HBASE-2915:
-------------------------------------------

Message from: "Jean-Daniel Cryans" <jdcryans@apache.org>

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://review.cloudera.org/r/691/
-----------------------------------------------------------

(Updated 2010-08-20 17:43:52.668799)


Review request for hbase.


Changes
-------

Updated patch with "closing" handling and ICV locking, still needs more javadoc.


Summary
-------

This patch removes newScannerLock and renames splitAndClose lock to just "lock". Every operation
is now required to obtain the read lock on "lock" before doing anything (including getting
a row lock). This is done by calling openRegionTransaction inside a try statement and by calling
closeRegionTransaction in finally.

flushcache got refactored some more in order to do the locking in the proper order; first
get the read lock, then do the writestate handling.

Finally, it removes the need to have a writeLock when flushing when subclassers give atomic
work do to via internalPreFlushcacheCommit. This means that this patch breaks external contribs.
This is required to keep our whole locking mechanism simpler.


This addresses bug HBASE-2915.
    http://issues.apache.org/jira/browse/HBASE-2915


Diffs (updated)
-----

  /trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java 987355 
  /trunk/src/main/java/org/apache/hadoop/hbase/regionserver/SplitTransaction.java 987355 
  /trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransaction.java 987355


Diff: http://review.cloudera.org/r/691/diff


Testing
-------

5 concurrent ICV threads + randomWrite 3 + scans on a single RS. I'm also in the process of
deploying it on a cluster.


Thanks,

Jean-Daniel




> Deadlock between HRegion.ICV and HRegion.close
> ----------------------------------------------
>
>                 Key: HBASE-2915
>                 URL: https://issues.apache.org/jira/browse/HBASE-2915
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Jean-Daniel Cryans
>            Assignee: Jean-Daniel Cryans
>            Priority: Blocker
>             Fix For: 0.90.0
>
>
> HRegion.ICV gets a row lock then gets a newScanner lock.
> HRegion.close gets a newScanner lock, slitCloseLock and finally waits for all row locks
to finish.
> If the ICV got the row lock and then close got the newScannerLock, both end up waiting
on the other. This was introduced when Get became a Scan.
> Stack thinks we can get rid of the newScannerLock in close since we setClosing to true.

-- 
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