[jboss-jira] [JBoss JIRA] (JGRP-1989) Bundlers: reuse send buffer when transport == sync.

Sanne Grinovero (JIRA) issues at jboss.org
Fri Dec 11 06:30:00 EST 2015


    [ https://issues.jboss.org/browse/JGRP-1989?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13140120#comment-13140120 ] 

Sanne Grinovero commented on JGRP-1989:
---------------------------------------

That sound exciting!

Although it also sounds like you should reconsider wrapping them in some very light weight interface (rather than byte[]). I understand you want to keep the memory cost low, but this would be just an extremely small overhead compared to the size of the buffers itself. 
The reason would be to make it explicit when things are safe to be reused, as you are already pointing out with various challenging questions. Not sure how the API would look like, but I'm assuming a {{release()}} or {{close()}} method would work.


> Bundlers: reuse send buffer when transport == sync.
> ---------------------------------------------------
>
>                 Key: JGRP-1989
>                 URL: https://issues.jboss.org/browse/JGRP-1989
>             Project: JGroups
>          Issue Type: Enhancement
>            Reporter: Bela Ban
>            Assignee: Bela Ban
>             Fix For: 3.6.7
>
>
> 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.



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the jboss-jira mailing list