[ https://issues.apache.org/jira/browse/KAFKA-3996?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15395055#comment-15395055 ]
ASF GitHub Bot commented on KAFKA-3996: --------------------------------------- GitHub user ijuma opened a pull request: https://github.com/apache/kafka/pull/1669 KAFKA-3996: ByteBufferMessageSet.writeTo() should be non-blocking Also: * Introduce a blocking variant to be used by `FileMessageSet.append`, * Add tests * Minor clean-ups You can merge this pull request into a Git repository by running: $ git pull https://github.com/ijuma/kafka kafka-3996-byte-buffer-message-set-write-to-non-blocking Alternatively you can review and apply these changes as the patch at: https://github.com/apache/kafka/pull/1669.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #1669 ---- commit c057a92a6f296d0b54946452626c2d5aba9513ee Author: Ismael Juma <ism...@juma.me.uk> Date: 2016-07-27T05:13:32Z KAFKA-3996: ByteBufferMessageSet.writeTo() should be non-blocking Also: * Introduce a blocking variant to be used by `FileMessageSet.append`, * Add tests * Minor clean-ups ---- > ByteBufferMessageSet.writeTo() should be non-blocking > ----------------------------------------------------- > > Key: KAFKA-3996 > URL: https://issues.apache.org/jira/browse/KAFKA-3996 > Project: Kafka > Issue Type: Bug > Affects Versions: 0.10.0.0 > Reporter: Jun Rao > Assignee: Ismael Juma > Priority: Blocker > Fix For: 0.10.0.1 > > > Currently, in ByteBufferMessageSet.writeTo(), we try to finish writing all > bytes in the buffer in a single call. The code has been like that since 0.8. > This hasn't been a problem historically since the broker uses zero-copy to > send fetch responses and only use ByteBufferMessageSet to send produce > responses, which are small. However, in 0.10.0, if a consumer is before > 0.10.0, the broker has to down convert the message and use > ByteBufferMessageSet to send a fetch response to the consumer. If the client > is slow and there are lots of bytes in the ByteBufferMessageSet, we may not > be able to completely send all the bytes in the buffer for a long period of > time. When this happens, the Processor will be blocked and can't handle other > connections, which is bad. -- This message was sent by Atlassian JIRA (v6.3.4#6332)