Fix race condition when tempState is deleted before loading flag is set to false #376
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.
Details
There is a small race condition. When calling setWithOnyxState we delete the
tempState
object that is used to hold temporary state updates while the HOC is gathering data. However the loading flag is only set on thesetState
callback down below. setState however is an async operation that is also batched, therefore there is a small window of time where the loading flag is not false but the tempState is already gone (while the update is queued and waiting to be applied). This simply bypasses the loading check if the tempState is gone and the update can be safely queued with a normalsetStateProxy
.Related Issues
GH_LINK Expensify/App#28419
Automated Tests
Linked PRs