Fix dropped React revision when merging commit branches#57424
Closed
j-piasecki wants to merge 1 commit into
Closed
Fix dropped React revision when merging commit branches#57424j-piasecki wants to merge 1 commit into
j-piasecki wants to merge 1 commit into
Conversation
Summary: With commit branching (enableFabricCommitBranching), commits from React land on a separate revision (currentReactRevision_) that is later merged into the main tree. React-branch revisions are numbered off the main revision, so two React commits that occur before the main revision advances get the SAME revision number. mergeReactRevision decided whether to clear currentReactRevision_ by comparing revision *numbers*. When a newer React revision landed before the merge of the previous one completed, its coincidentally-equal number caused it to be cleared, silently dropping a pending update. It also cleared the revision even when the merge commit did not succeed. Fix: - Clear currentReactRevision_ by comparing root shadow node identity instead of the revision number, and only when the merge commit actually succeeded. - Compute the React-branch revision number from the snapshot taken under the shared lock instead of reading currentRevision_ without the (deferred) unique lock. Changelog: [General][Fixed] Fixed potential revision drop during merge Differential Revision: D110577969
|
@j-piasecki has exported this pull request. If you are a Meta employee, you can view the originating Diff in D110577969. |
|
This pull request has been merged in c65845c. |
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.
Summary:
With commit branching (enableFabricCommitBranching), commits from React land on
a separate revision (currentReactRevision_) that is later merged into the main
tree. React-branch revisions are numbered off the main revision, so two React
commits that occur before the main revision advances get the SAME revision
number.
mergeReactRevision decided whether to clear currentReactRevision_ by comparing
revision numbers. When a newer React revision landed before the merge of the
previous one completed, its coincidentally-equal number caused it to be cleared,
silently dropping a pending update. It also cleared the revision even when the
merge commit did not succeed.
Fix:
the revision number, and only when the merge commit actually succeeded.
shared lock instead of reading currentRevision_ without the (deferred) unique
lock.
Changelog: [General][Fixed] Fixed potential revision drop during merge
Differential Revision: D110577969