[
https://issues.apache.org/jira/browse/HBASE-2915?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12901482#action_12901482
]
HBase Review Board commented on HBASE-2915:
-------------------------------------------
Message from: "Jean-Daniel Cryans" <[email protected]>
bq. On 2010-08-20 20:49:15, stack wrote:
bq. > /trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java,
line 716
bq. > <http://review.cloudera.org/r/691/diff/2/?file=7680#file7680line716>
bq. >
bq. > Any reason this does not follow the pattern used elsewhere? You are
not testing closing before getting the read lock?
mmm didn't want to copy the same chunk of code over there, but yeah it will
also give us a fail-fast behavior which will speed up flushing.
bq. On 2010-08-20 20:49:15, stack wrote:
bq. > /trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java,
line 785
bq. > <http://review.cloudera.org/r/691/diff/2/?file=7680#file7680line785>
bq. >
bq. > ditto
ditto
bq. On 2010-08-20 20:49:15, stack wrote:
bq. > /trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java,
line 2960
bq. > <http://review.cloudera.org/r/691/diff/2/?file=7680#file7680line2960>
bq. >
bq. > Is this supposed to be inside the try?
Per that method's javadoc, no. The reason is that if it's all in a try block,
and that closing is true, then you won't hold a readLock and you can't do a
isHeldByCurrent thread on that lock. So I thought we could catch
IllegalStateException in closeRegionOperation, but that would be really ugly.
This leaves us to the current situation where if an exception is thrown when we
are on this line:
if (this.closed.get()) {
that it would leave the readLock locked by the thread, although in this case
the region is closing so we're getting rid of it anyways. Although, thinking
about it, I should probably do this instead:
if (this.closed.get()) {
lock.readLock().unlock();
throw new NotServingRegionException(regionInfo.getRegionNameAsString() +
" is closed");
}
- Jean-Daniel
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://review.cloudera.org/r/691/#review988
-----------------------------------------------------------
> 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.