[
https://issues.apache.org/jira/browse/KAFKA-2058?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15062083#comment-15062083
]
ASF GitHub Bot commented on KAFKA-2058:
---------------------------------------
GitHub user ZoneMayor opened a pull request:
https://github.com/apache/kafka/pull/689
KAFKA-2058: ProducerTest.testSendWithDeadBroker transient failure
I reproduced this transient failure;
It turns that waitUntilMetadataIsPropagated is not enough;
in "onBrokerStartup", methods below will send send both LeaderAndIsrRequest
and UpdateMetadataRequest to KafkaApis:
replicaStateMachine.handleStateChanges(allReplicasOnNewBrokers,
OnlineReplica)
partitionStateMachine.triggerOnlinePartitionStateChange()
The two kinds of request are handled seperately and we are not sure about
the order;
If UpdateMetadataRequest is handled first, metadataCache of kafkaApis will
be updated, thus TestUtils.waitUntilMetadataIsPropagated will be satisfied, and
consumer can(will) start fetching data;
But if the LeaderAndIsrRequest is not handled at this moment,
"becomeLeaderOrFollower" cannot be called , thus structures like
"leaderReplicaOpt" cannot be updated, which leads to failure of consumer's
fetching data;
To fix above, consumer should start fetching data after partition's
leaderReplica is refreshed, not just the leader is elected;
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/ZoneMayor/kafka trunk-KAFKA-2058
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/kafka/pull/689.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 #689
----
commit 95374147a28208d4850f6e73f714bf418935fc2d
Author: ZoneMayor <[email protected]>
Date: 2015-11-27T03:49:34Z
Merge pull request #1 from apache/trunk
merge
commit cec5b48b651a7efd3900cfa3c1fd0ab1eeeaa3ec
Author: ZoneMayor <[email protected]>
Date: 2015-12-01T10:44:02Z
Merge pull request #2 from apache/trunk
2015-12-1
commit a119d547bf1741625ce0627073c7909992a20f15
Author: ZoneMayor <[email protected]>
Date: 2015-12-04T13:42:27Z
Merge pull request #3 from apache/trunk
2015-12-04#KAFKA-2893
commit b767a8dff85fc71c75d4cf5178c3f6f03ff81bfc
Author: ZoneMayor <[email protected]>
Date: 2015-12-09T10:42:30Z
Merge pull request #5 from apache/trunk
2015-12-9
commit 0070c2d71d06ee8baa1cddb3451cd5af6c6b1d4a
Author: ZoneMayor <[email protected]>
Date: 2015-12-11T14:50:30Z
Merge pull request #8 from apache/trunk
2015-12-11
commit 09908ac646d4c84f854dad63b8c99213b74a7063
Author: ZoneMayor <[email protected]>
Date: 2015-12-13T14:17:19Z
Merge pull request #9 from apache/trunk
2015-12-13
commit 30b26b2d3c714bff11f4c58f00f5d1b075a592e9
Author: ZoneMayor <[email protected]>
Date: 2015-12-17T12:27:27Z
Merge pull request #10 from apache/trunk
2015-12-17
commit 6b1790b2742fa1244d3ba44aef459d8d5a6d3b55
Author: jinxing <[email protected]>
Date: 2015-12-17T12:30:38Z
KAFKA-2058: 30b26b2d3c714bff11f4c58f00f5d1b075a592e9
----
> ProducerTest.testSendWithDeadBroker transient failure
> -----------------------------------------------------
>
> Key: KAFKA-2058
> URL: https://issues.apache.org/jira/browse/KAFKA-2058
> Project: Kafka
> Issue Type: Sub-task
> Reporter: Guozhang Wang
> Assignee: Bill Bejeck
> Labels: newbie
>
> {code}
> kafka.producer.ProducerTest > testSendWithDeadBroker FAILED
> java.lang.AssertionError: Message set should have 1 message
> at org.junit.Assert.fail(Assert.java:92)
> at org.junit.Assert.assertTrue(Assert.java:44)
> at
> kafka.producer.ProducerTest.testSendWithDeadBroker(ProducerTest.scala:260)
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)