Uploaded image for project: 'Geode'
  1. Geode
  2. GEODE-8506

BufferPool returns byte buffers that may be much larger than requested

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    Description

      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.

      MsgStreamer, 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.

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            bschuchardt Bruce J Schuchardt
            bschuchardt Bruce J Schuchardt
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment