Yu Li created HBASE-18085:
-----------------------------

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


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