Failing unit test for infinite render issue #26746
Draft
+98
−20
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.
I can't figure out what reproduces this via e2e tests, but this is the root data structure that causes it so I wrote a unit test to demonstrate it. It happens when
root === workInProgressand theworkInProgressRootRenderLanesis the sync lane.In that case, the
nextLaneis the sync lane for the work in progress, so we go intoperformSyncWorkOnRoot:But inside
performSyncWorkOnRoot, these lines early return and do not account for the work in progress lanes:So the do/while loop never ends, we just keep detecting that there's sync work to do in the outter function but early returning without doing any work in the inner function.
I think the fix is to complete the TODOs and ensure the same
nextLanesare used to flush the sync work.