[
https://issues.apache.org/jira/browse/KAFKA-3236?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15153204#comment-15153204
]
ASF GitHub Bot commented on KAFKA-3236:
---------------------------------------
GitHub user knusbaum opened a pull request:
https://github.com/apache/kafka/pull/934
KAFKA-3236: Honor Producer Configuration "block.on.buffer.full"
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/knusbaum/kafka KAFKA-3236-master
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/kafka/pull/934.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 #934
----
commit e8b63f045ff5d854d3d3d4bc0751cbba0d37d69f
Author: Sanjiv Raj <[email protected]>
Date: 2016-02-11T22:20:26Z
[ADDHR-1240] Honor block.on.buffer.full producer configuration
commit 50e4f01bc5f2b004533ac60bad5d8c396508e762
Author: Sanjiv Raj <[email protected]>
Date: 2016-02-18T18:43:20Z
Fix failing producer integration test
commit 836afe6159ee3b902a4c809cefd0345f61e6b026
Author: Kyle Nusbaum <[email protected]>
Date: 2016-02-17T17:05:38Z
Updating config documentation.
commit 6009eccb3a65c0a8cc8f441c89d902708475271e
Author: Kyle Nusbaum <[email protected]>
Date: 2016-02-18T21:45:39Z
Fixing TestUtils
----
> Honor Producer Configuration "block.on.buffer.full"
> ---------------------------------------------------
>
> Key: KAFKA-3236
> URL: https://issues.apache.org/jira/browse/KAFKA-3236
> Project: Kafka
> Issue Type: Improvement
> Components: producer
> Affects Versions: 0.9.0.0
> Reporter: Thomas Graves
> Assignee: Thomas Graves
>
> In Kafka-0.9, "max.block.ms" is used to control how long the following
> methods will block.
> KafkaProducer.send() when
> * Buffer is full
> * Metadata is unavailable
> KafkaProducer.partitionsFor() when
> * Metadata is unavailable
> However when "block.on.buffer.full" is set to false, "max.block.ms" is in
> effect whenever a buffer is requested/allocated from the Producer BufferPool.
> Instead it should throw a BufferExhaustedException without waiting for
> "max.block.ms"
> This is particulary useful if a producer application does not wish to block
> at all on KafkaProducer.send() . We avoid waiting on KafkaProducer.send()
> when metadata is unavailable by invoking send() only if the producer instance
> has fetched the metadata for the topic in a different thread using the same
> producer instance. However "max.block.ms" is still required to specify a
> timeout for bootstrapping the metadata fetch.
> We should resolve this limitation by decoupling "max.block.ms" and
> "block.on.buffer.full".
> * "max.block.ms" will be used exclusively for fetching metadata when
> "block.on.buffer.full" = false (in pure non-blocking mode )
> * "max.block.ms" will be applicable to both fetching metadata as well as
> buffer allocation when "block.on.buffer.full = true
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)