[
https://issues.apache.org/jira/browse/KAFKA-3996?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ismael Juma updated KAFKA-3996:
-------------------------------
Reviewer: Jun Rao
Status: Patch Available (was: In Progress)
> 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)