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

Zheng Hu commented on HBASE-21957:
----------------------------------

Now we have three kinds of BucketEntry: 
1.  BucketEntry : which maintain the offset/len for an block;
2. SharedMemoryBucketEntry:  it extends from BucketEntry, but with an extra 
AtomicInteger referenceCount;
3. UnsafeSharedMemoryBucketEntry:  it also extends from BucketEntry, but with 
an extra volatile int refCount, incr or decr by using unsafe methods,  which is 
faster than the AtomicInteger.

After HBASE-22005,  we introduced an new refCnt which extends from netty's 
AbstractReferenceCounted and handle unsafe or safe case in its internal 
implementation, so in theory,  the above  three BucketEntry can be unified into 
one BucketEntry again now. 

> Unify refCount of BucketEntry and refCount of hbase.nio.ByteBuff into one
> -------------------------------------------------------------------------
>
>                 Key: HBASE-21957
>                 URL: https://issues.apache.org/jira/browse/HBASE-21957
>             Project: HBase
>          Issue Type: Sub-task
>            Reporter: Zheng Hu
>            Assignee: Zheng Hu
>            Priority: Major
>
> After HBASE-12295, we have block with MemoryType.SHARED or 
> MemoryType.EXCLUSIVE, the block in offheap BucketCache will be shared, and 
> have an reference count to track its life cycle.  If no rpc reference to the 
> shared block, then the block can be evicted. 
> while after the HBASE-21916,  we introduced an refcount for ByteBuff,  then I 
> think we can unify the two into one.  tried to fix this when preparing patch 
> for HBASE-21879, but seems can be different sub-task, and it won't affect the 
> main logic of HBASE-21879,  so create a seperate one. 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to