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

Ted Yu commented on HBASE-18085:
--------------------------------

>From 
>https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/ReentrantLock.html
> :

bq. Also note that the untimed tryLock method does not honor the fairness 
setting. It will succeed if the lock is available even if other threads are 
waiting.

Should the timed version of tryLock be used ?

> Prevent parallel purge in ObjectPool
> ------------------------------------
>
>                 Key: HBASE-18085
>                 URL: https://issues.apache.org/jira/browse/HBASE-18085
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Yu Li
>            Assignee: Yu Li
>         Attachments: e89l05465.st3.jstack, HBASE-18085.patch
>
>
> Parallel purge in ObjectPool is meaningless and will cause contention issue 
> since {{ReferenceQueue#poll}} has synchronization (source code shown below)
> {code}
>     public Reference<? extends T> poll() {
>         if (head == null)
>             return null;
>         synchronized (lock) {
>             return reallyPoll();
>         }
>     }
> {code}
> We observed threads blocking on the purge method while using offheap bucket 
> cache, and we could easily reproduce this by testing the 100% cache hit case 
> in bucket cache with enough reading threads.
> We propose to add a purgeLock and use tryLock to avoid parallel purge.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to