[fix][test] Fix flaky ResendRequestTest.testFailoverSingleAckedNormalTopic#25343
Merged
lhotari merged 2 commits intoapache:masterfrom Mar 18, 2026
Merged
[fix][test] Fix flaky ResendRequestTest.testFailoverSingleAckedNormalTopic#25343lhotari merged 2 commits intoapache:masterfrom
lhotari merged 2 commits intoapache:masterfrom
Conversation
…Topic The test assumes consumer-1 is the active failover consumer, but messages are produced before the dispatcher has settled the consumer assignment. Add an Awaitility wait for the dispatcher to have both consumers registered and consumer-1 as the active consumer before producing messages.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #25343 +/- ##
=============================================
+ Coverage 37.37% 72.78% +35.40%
- Complexity 13188 33882 +20694
=============================================
Files 1897 1954 +57
Lines 150557 154745 +4188
Branches 17215 17709 +494
=============================================
+ Hits 56276 112635 +56359
+ Misses 86612 33084 -53528
- Partials 7669 9026 +1357
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
lhotari
approved these changes
Mar 18, 2026
This was referenced Mar 18, 2026
Member
|
Remaining isssue: This happened after this PR was merged. |
merlimat
added a commit
to merlimat/pulsar
that referenced
this pull request
Mar 19, 2026
…Topic Follow-up to apache#25343. The previous fix waited for consumer-1 to become active before creating consumer-2, but the failover dispatcher re-evaluates active consumer assignment when consumer-2 subscribes (pickAndScheduleActiveConsumer), which can flip the active consumer. Instead of assuming consumer-1 is always active, dynamically identify which consumer is active after both are subscribed by querying the dispatcher. Assign the active consumer to the "consumer1" variable (used for receiving, acking, redelivery, close) and the standby to "consumer2" (expected to receive 0 messages until consumer1 closes). Verified 100/100 passes with invocationCount=100.
1 task
merlimat
added a commit
to merlimat/pulsar
that referenced
this pull request
Mar 19, 2026
…Topic Follow-up to apache#25343. The previous fix waited for consumer-1 to become active before creating consumer-2, but the failover dispatcher re-evaluates active consumer assignment when consumer-2 subscribes (pickAndScheduleActiveConsumer), which can flip the active consumer. Instead of assuming a specific consumer is active, use a ConsumerEventListener with an AtomicReference to track the latest active consumer. After both consumers are subscribed, read the reference to identify which is active and which is standby, then assign them to the test's consumer1 (active) and consumer2 (standby) variables accordingly. Verified 100/100 passes with invocationCount=100.
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.
Flaky test failure
Summary
ResendRequestTest.testFailoverSingleAckedNormalTopicwhich fails because messages are produced before the failover dispatcher has settled the consumer assignment.Documentation
doc-not-needed(Your PR doesn't need any doc update)
Matching PR in forked repository
No response
Tip
Add the labels
ready-to-testandarea/testto trigger the CI.