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

Anoop Sam John commented on HBASE-19496:
----------------------------------------

We already have a min size for reservoir usage
getMinSizeForReservoirUse(ByteBufferPool pool) {
    return pool.getBufferSize() / 6;
  }
So seems for ServerLoad, the request size is more and the PB data size may be 
more.  We should ideally have an inspection at a stage after the read at Rpc 
server (where we already know the request is for which method)  and take a call 
abt the copy to new data structure.  For methods like Serverload passing.  
Ideally in HM side, the BBpool itself should not get created.

> Reusing the ByteBuffer in rpc layer corrupt the ServerLoad and RegionLoad
> -------------------------------------------------------------------------
>
>                 Key: HBASE-19496
>                 URL: https://issues.apache.org/jira/browse/HBASE-19496
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Chia-Ping Tsai
>            Assignee: Chia-Ping Tsai
>            Priority: Blocker
>             Fix For: 2.0.0-beta-1
>
>         Attachments: HBASE-19496.wip.patch
>
>
> {{ServerLoad}} and {{RegionLoad}} store the pb object internally but the 
> bytebuffer of pb object may be reused in rpc layer. Hence, the {{ServerLoad}} 
> and {{RegionLoad}} which saved by {{HMaster}} will be corrupted if the 
> bytebuffer backed is modified.
> This issue doesn't happen on branch-1.
> # netty server was introduced in 2.0 (see HBASE-17263)
> # reusing bytebuffer to read RPC requests was introduced in 2.0 (see 
> HBASE-15788)



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to