Uploaded image for project: 'JGroups'
  1. JGroups
  2. JGRP-1989

Bundlers: reuse send buffer when transport == sync.

    Details

    • Type: Enhancement
    • Status: Resolved (View Workflow)
    • Priority: Major
    • Resolution: Done
    • Affects Version/s: None
    • Fix Version/s: 3.6.7
    • Labels:
      None

      Description

      With the addition of TCP_NIO2, all bundlers now create new send buffers for every message (or message list). This generates a lot of memory allocations, perhaps it is better to revert this change for synchronous transports such as UDP and TCP, and still create new buffers for asynchronous transports such as TCP_NIO2.
      Synchronous transports guarantee a message has been put on the wire when TP.send() returns, whereas asynchronous transports may only have completed a partial write (so we cannot reuse the buffer).
      The code in the bundler should check for this, and copy if async or not copy if sync.
      Whether or not a transport is sync is determined by a new abstract method that needs to be overridden by every transport.

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  belaban Bela Ban
                  Reporter:
                  belaban Bela Ban
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  4 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: