KAFKA-20586: Fix flaky LeaderElectionCommandTest.testPreferredReplicaElection#22303
Open
majialoong wants to merge 2 commits into
Open
KAFKA-20586: Fix flaky LeaderElectionCommandTest.testPreferredReplicaElection#22303majialoong wants to merge 2 commits into
majialoong wants to merge 2 commits into
Conversation
| private void assertLeader(Admin client, TopicPartition topicPartition, int expectedLeader) throws Exception { | ||
| int leader = AdminUtils.fetchOrWaitForLeader(client, topicPartition.topic(), topicPartition.partition(), 30000); | ||
| int leader = AdminUtils.fetchOrWaitForExpectedLeader(client, topicPartition.topic(), topicPartition.partition(), expectedLeader, 30000); | ||
| assertEquals(expectedLeader, leader); |
Contributor
There was a problem hiding this comment.
fetchOrWaitForExpectedLeader method already returns when leader == expectedLEader. This assertion seems redundancy
| /** | ||
| * Fetch the partition leader or wait until the expected leader is observed using the provided admin client. | ||
| */ | ||
| public static int fetchOrWaitForExpectedLeader(Admin admin, |
Contributor
There was a problem hiding this comment.
This new method and existing method fetchOrWaitForLeader
are almost identical. There seems to be scope for reducing the duplicate code.
Contributor
muralibasani
left a comment
There was a problem hiding this comment.
Thanks for the PR. Have a couple of minor comments.
Contributor
Author
|
@muralibasani Thanks for the review. Your suggestions make sense. Updated! |
muralibasani
approved these changes
May 18, 2026
Contributor
muralibasani
left a comment
There was a problem hiding this comment.
LGTM, thanks for addressing the feedback.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
LeaderElectionCommandsuccess only indicates thecontrollerhaswritten the metadata change, but brokers may not have synced the
corresponding update yet.
The previous helper
fetchOrWaitForLeaderonly waited for any leader(not the expected one), so assertions could still observe stale leader
state and become flaky.
This change adds
waitForExpectedLeaderto poll until the expectedleader is observed, eliminating the race in the test path.