[ 
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)

Reply via email to