A BufferedOutputStream is now given to Serializer implementations, probably as a fix for #7439 (also reported by me).
This causes the opposite problem: sending a message doesn't actually send the message, but only buffers it - causing delay under low message frequency conditions.
I have been unable to find if flushing the stream is the responsibility of the Serializer implementation. If this is not the case, then it looks like the BufferedOutputStream should be flushed in TcpNioConnection.send() and similar places.
Please note that we decided to issue the flush() in the connection; this will be available in 4.1.1; the work-around for 4.1.0 is to invoke flush() in a custom serializer; Also see #7540.
Dennis Thrysøe opened INT-3575 and commented
A BufferedOutputStream is now given to Serializer implementations, probably as a fix for #7439 (also reported by me).
This causes the opposite problem: sending a message doesn't actually send the message, but only buffers it - causing delay under low message frequency conditions.
I have been unable to find if flushing the stream is the responsibility of the Serializer implementation. If this is not the case, then it looks like the BufferedOutputStream should be flushed in TcpNioConnection.send() and similar places.
Affects: 4.1 GA
Issue Links:
Remove flush() from Serializers [INT-3577] #7540 Remove flush() from Serializers
Nagle's algorithm only applies to subsequent writes [INT-3507] #7439 Nagle's algorithm only applies to subsequent writes
Referenced from: pull request #1338
The text was updated successfully, but these errors were encountered: