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

zhangduo commented on HBASE-13530:
----------------------------------

[~victorunique] So we need to find the real operation that locks region for a 
long time?

The ReentrantReadWriteLock in java does have the problem as what you said, if 
one thread is waiting on getting WriteLock, then all following operations of 
getting ReadLock will be blocked even in unfair mode.

But there are lots of other operations other than bulkload that need to hold 
WriteLock and lots of them do not have a timeout. So this is a general problem, 
we need to find a general way to solve it.

Thanks.

> Add param for bulkload wait duration in HRegion.
> ------------------------------------------------
>
>                 Key: HBASE-13530
>                 URL: https://issues.apache.org/jira/browse/HBASE-13530
>             Project: HBase
>          Issue Type: Improvement
>          Components: regionserver
>    Affects Versions: 0.98.12
>            Reporter: Victor Xu
>            Priority: Minor
>             Fix For: 2.0.0, 0.98.13
>
>         Attachments: HBASE-13530-0.98-v2.patch, HBASE-13530-0.98.patch, 
> HBASE-13530-master-v2.patch, HBASE-13530-master.patch, HBASE-13530-v1.patch
>
>
> In our scenario, incremental read/write operations and complete bulkload 
> operations are mixed together. Bulkload needs write lock while read/write and 
> flush/compact need read lock. When a region is compacting, the bulkload could 
> hang at writeLock.tryLock(waitDuration, TimeUnit) method. The original 
> default waitDuration is 60sec (from 'hbase.busy.wait.duration'), and this 
> could block all read/writes operations from acquiring read lock for 1 minute. 
> The chances of this scenario become high when compaction speed limit 
> feature(HBASE-8329) is used.
> Maybe we need to decrease the wait duration ONLY for bulkload, and let 
> read/write keep theirs. So I add this param('hbase.bulkload.wait.duration') 
> to tune wait duration for bulkloading. Of course, it is a table level 
> setting, and the default value is from original logic.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to