[
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 <[email protected]>
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)