[ https://issues.apache.org/jira/browse/HBASE-18085?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16020773#comment-16020773 ]
Anoop Sam John commented on HBASE-18085: ---------------------------------------- Atomic boolean and tryLock are so close now.. May be AtomicBoolean is good enough? Thanks for the efforts in doing the JMH multiple rounds. Appreciate u Yu Li. :-) > 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)