[
https://issues.apache.org/jira/browse/GEODE-8506?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17198568#comment-17198568
]
ASF subversion and git services commented on GEODE-8506:
--------------------------------------------------------
Commit 709fe7b8c4c61eb610a73fcf71005fe93a4d6e1c in geode's branch
refs/heads/support/1.13 from Bruce Schuchardt
[ https://gitbox.apache.org/repos/asf?p=geode.git;h=709fe7b ]
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
>
>
> 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)