Fix race condition in HandleUnusedOptimisticID flaky tests#90743
Closed
ykd007 wants to merge 1 commit into
Closed
Conversation
The two failing assertions both check fetch call counts after SequentialQueue.unpause(). The second fetch only fires after Onyx processes the first response (preexistingReportID update), which requires a full batched-update cycle. A single waitForNetworkPromises() sometimes completes before that Onyx cycle runs, causing the fetch count assertion to see only 1 call instead of 2. Awaiting waitForNetworkPromises() twice ensures: first round resolves the initial request and lets Onyx apply the preexistingReportID; second round waits for the queued follow-up request to complete. Fixes Expensify#90660
Contributor
|
👋 Hi @ykd007, thanks for your interest in contributing to Expensify! This PR has been automatically closed because it doesn't appear to meet our contribution requirements:
If you'd like to contribute, please make sure to:
Please review our contributing guidelines for more details. If you believe this was closed in error, please reach out in the #expensify-open-source Slack channel. |
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Root Cause
The two flaky tests in
MiddlewareTest.tsfail becausewaitForNetworkPromises()resolves before Onyx has fully processed thepreexistingReportIDupdate and queued the follow-up fetch. This creates a race where thefetchcall-count assertion runs with only 1 call registered instead of 2.Fix
Added a second
await waitForNetworkPromises()call at the relevant assertion points. First invocation resolves the initial request and lets Onyx apply the preexistingReportID side effect; second invocation drains the queued follow-up request — giving us a deterministic count before asserting.Also cleaned up an open handle warning by ensuring
SequentialQueueis paused/unpaused symmetrically in teardown.$ #90660