[ https://issues.apache.org/jira/browse/KAFKA-4089?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15438269#comment-15438269 ]
ASF GitHub Bot commented on KAFKA-4089: --------------------------------------- GitHub user sutambe opened a pull request: https://github.com/apache/kafka/pull/1791 KAFKA-4089: KafkaProducer expires batch when metadata is stale You can merge this pull request into a Git repository by running: $ git pull https://github.com/sutambe/kafka batch-expired Alternatively you can review and apply these changes as the patch at: https://github.com/apache/kafka/pull/1791.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 #1791 ---- commit aeab247716506ed226bf3bb118e7aedf9981e9a6 Author: Sumant Tambe <suta...@linkedin.com> Date: 2016-08-26T01:24:06Z KAFKA-4089: fixing batch expired when stale metadata commit 53f2a6e628c715efe14afebf3725d1a38f9632b9 Author: Sumant Tambe <suta...@yahoo.com> Date: 2016-08-26T01:24:06Z KAFKA-4089: fixing batch expired when stale metadata commit 8200d8b4822440fefa1a58a962bc746171b260eb Author: Sumant Tambe <suta...@linkedin.com> Date: 2016-08-26T01:30:41Z Merge branch 'batch-expired' of https://github.com/sutambe/kafka into batch-expired ---- > KafkaProducer raises Batch Expired exception > --------------------------------------------- > > Key: KAFKA-4089 > URL: https://issues.apache.org/jira/browse/KAFKA-4089 > Project: Kafka > Issue Type: Bug > Components: clients > Affects Versions: 0.10.0.1 > Reporter: Sumant Tambe > Assignee: Dong Lin > > The basic idea of batch expiration is that we don't expire batches when > producer thinks "it can make progress". Currently the notion of "making > progress" involves only in-flight requests (muted partitions). That's not > sufficient. The other half of the "making progress" is that if we have stale > metadata, we cannot trust it and therefore can't say we can't make progress. > Therefore, we don't expire batched when metadata is stale. This also implies > we don't want to expire batches when we can still make progress even if the > batch remains in the queue longer than the batch expiration time. > The current condition in {{abortExpiredBatches}} that bypasses muted > partitions is necessary but not sufficient. It should additionally restrict > ejection when metadata is stale. > Conversely, it should expire batches only when the following is true > # !muted AND > # meta-data is fresh AND > # batch remained in the queue longer than request timeout. -- This message was sent by Atlassian JIRA (v6.3.4#6332)