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

Rafael H. Schloming commented on PROTON-126:
--------------------------------------------

I don't think we should return void here because although it's useful for the 
engine to be able to buffer bytes on behalf of the application, I don't want 
the API to force it to accept all bytes all the time. I'd prefer the engine 
behaviour here to ultimately be a configurable choice.

Fundamentally there are three issues at play here: (1) how should the engine 
indicate when it is blocked from writing message data onto the wire, (2) should 
the engine be allowed to partially consume bytes it is given, and (3) if so how 
should this be exposed through the Java API.

My thoughts are for (1) we expose this through credit levels, for (2) we allow 
the engine to impose an optionally configurable limit for buffering, and (3) 
given the current API we would keep the original signature. It's possible we 
might revisit (3) in the context of a wider change such as using ByteBuffers in 
place of byte[], however I'd file that as a separate JIRA.
                
> Sender.send should return void
> ------------------------------
>
>                 Key: PROTON-126
>                 URL: https://issues.apache.org/jira/browse/PROTON-126
>             Project: Qpid Proton
>          Issue Type: Bug
>          Components: proton-j
>            Reporter: Hiram Chirino
>            Assignee: Rafael H. Schloming
>
> No flow control is in place.  You can easily OOM a JVM since Sender.send 
> continues to accept more bytes even if the peer is not accepting anymore data.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to