This repository has been archived by the owner on Mar 3, 2023. It is now read-only.
Fix race condition between opening new files and restoring window state #16530
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.
Description of the Change
This pull request fixes a race condition in the
attemptRestoreProjectStateForPaths
function that could cause a file to be opened more than once within the same workspace pane.In particular, when opening some file into an empty window, Atom tries to recover the state for the project containing the file (if there is one). However, we were previously not waiting until the
AtomEnvironment
's state had been fully deserialized before trying to load the requested file into the workspace. If the same file also existed in the serialized representation of the workspace, it could end up being opened twice.With this pull request we will now wait until the environment has been fully deserialized before honoring the user's request of loading new files into an empty window.
Alternate Designs
None.
Benefits
Other than fixing #16364, these changes also improve tests, which now verify more thoroughly the behavior of
attemptRestoreProjectStateForPaths
.Possible Drawbacks
None.
Verification Process
See reproduction steps in #16364.
Applicable Issues
Fixes #16364