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

ASF subversion and git services commented on GEODE-8506:
--------------------------------------------------------

Commit caf1c4783478c2b5c5e5c239874092346316f4fe in geode's branch 
refs/heads/support/1.12 from Bruce Schuchardt
[ https://gitbox.apache.org/repos/asf?p=geode.git;h=caf1c47 ]

GEODE-8506: BufferPool returns byte buffers that may be much larger t… (#5525)

* GEODE-8506: BufferPool returns byte buffers that may be much larger than 
requested

Create a "slice" of the acquired buffer to return to the caller instead
of returning a buffer larger than what was requested.  On return we fish
out the parent buffer and put it back in the pool.

* cache reflection method, remove magic numbers in test and BufferPool

(cherry picked from commit a11b9c076a72609ff00802c010b6e32262228776)


> BufferPool returns byte buffers that may be much larger than requested
> ----------------------------------------------------------------------
>
>                 Key: GEODE-8506
>                 URL: https://issues.apache.org/jira/browse/GEODE-8506
>             Project: Geode
>          Issue Type: Improvement
>          Components: membership
>            Reporter: Bruce J Schuchardt
>            Assignee: Bruce J Schuchardt
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.14.0, 1.13.1
>
>
> BufferPool manages several pools of direct-memory ByteBuffers.  When asked 
> for a ByteBuffer of size X you may receive a buffer that is any size greater 
> than or equal to X.  For users of this pool this is unexpected behavior and 
> is causing some trouble.
> MessageStreamer, for instance, performs message "chunking" based on the size 
> of a socket's buffer size.  It requests a byte buffer of that size and then 
> fills it over and over again with message chunks to be written to the socket. 
>  But it does this based on the buffer's capacity, which may be much larger 
> than the expected buffer size.  This results in incorrect chunking and 
> requires larger buffers in the receiver of these message chunks.
> BufferPool should always return a buffer that has exactly the requested 
> capacity.  It could be a _slice_ of a pooled buffer, for instance.  That 
> would let it hand out a larger buffer while not confusing the code that 
> requested the buffer.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to