[ 
https://issues.apache.org/jira/browse/HBASE-15525?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Anoop Sam John updated HBASE-15525:
-----------------------------------
      Resolution: Fixed
    Hadoop Flags: Reviewed
    Release Note: 
Added a new ByteBufferPool which pools N ByteBuffers. By default it makes off 
heap ByteBuffers when getBuffer() is called. The size of each buffer defaults 
to 64KB. This can be configured using 
'hbase.ipc.server.reservoir.initial.buffer.size'.   The max number of buffers 
which can be pooled defaults to twice the number of handler threads in RS. This 
can be configured with key 'hbase.ipc.server.reservoir.initial.max'.  While 
responding to read requests and client support Codec, we will create CellBlocks 
and directly return it as PB payload. For making this block, we will use N 
ByteBuffers from pool as per the total size of the response cells. The default 
size of 64 KB for the buffer is inline with the number of bytes written to RPC 
layer in one short.(That is also 64KB).  When at point of time, the calle not 
able to get a free buffer from the pool (it returns null then), it will make on 
heap Buffer of same size (as that of Buffers in pool) and use that to create 
cell block.

          Status: Resolved  (was: Patch Available)

Pushed to master.  Thanks for finding the issue and testing in the cluster 
[~dvdreddy].  Thanks all for the reviews.
I fixed the white space issue on commit.

> OutOfMemory could occur when using BoundedByteBufferPool during RPC bursts
> --------------------------------------------------------------------------
>
>                 Key: HBASE-15525
>                 URL: https://issues.apache.org/jira/browse/HBASE-15525
>             Project: HBase
>          Issue Type: Sub-task
>          Components: IPC/RPC
>            Reporter: deepankar
>            Assignee: Anoop Sam John
>            Priority: Critical
>             Fix For: 2.0.0
>
>         Attachments: HBASE-15525_V1.patch, HBASE-15525_V2.patch, 
> HBASE-15525_V3.patch, HBASE-15525_V4.patch, HBASE-15525_V5.patch, 
> HBASE-15525_V6.patch, HBASE-15525_WIP.patch, WIP.patch
>
>
> After HBASE-13819 the system some times run out of direct memory whenever 
> there is some network congestion or some client side issues.
> This was because of pending RPCs in the RPCServer$Connection.responseQueue 
> and since all the responses in this queue hold a buffer for cellblock from 
> BoundedByteBufferPool this could takeup a lot of memory if the 
> BoundedByteBufferPool's moving average settles down towards a higher value 
> See the discussion here 
> [HBASE-13819-comment|https://issues.apache.org/jira/browse/HBASE-13819?focusedCommentId=15207822&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15207822]



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to