Anastasia Braginsky commented on HBASE-18375:

bq. It is the ChunkMap impl which need to keep the ref to Chunks for longer. So 
I think it should be responsibility of that class to act. 
This is impossible, because chunks mapping need to be saved since the chunk was 
created and this is before any CellChunkMap exists.

How common is the scenario of HBASE-16195 ?

I see two options
1. StrongMap for pool and only when CCM is defined then for other chunks
2. Make CCM to work only with chunks from pool and throw exception when there 
are no more chunks in pool. The user will be requested to put all its memory to 
the pool in this case.

I believe that the first option is much better.

> The pool chunks from ChunkCreator are deallocated while in pool because there 
> is no reference to them
> -----------------------------------------------------------------------------------------------------
>                 Key: HBASE-18375
>                 URL: https://issues.apache.org/jira/browse/HBASE-18375
>             Project: HBase
>          Issue Type: Sub-task
>    Affects Versions: 2.0.0-alpha-1
>            Reporter: Anastasia Braginsky
>            Assignee: Anastasia Braginsky
>            Priority: Critical
>             Fix For: 2.0.0, 3.0.0, 2.0.0-alpha-2
>         Attachments: HBASE-18375-V01.patch, HBASE-18375-V02.patch, 
> HBASE-18375-V03.patch, HBASE-18375-V04.patch
> Because MSLAB list of chunks was changed to list of chunk IDs, the chunks 
> returned back to pool can be deallocated by JVM because there is no reference 
> to them. The solution is to protect pool chunks from GC by the strong map of 
> ChunkCreator introduced by HBASE-18010. Will prepare the patch today.

This message was sent by Atlassian JIRA

Reply via email to