Skip to content
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

Merged
merged 2 commits into from Jan 10, 2018

Conversation

as-cii
Copy link
Contributor

@as-cii as-cii commented Jan 10, 2018

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

Antonio Scandurra added 2 commits January 10, 2018 13:11
This commit 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 commit 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. Also, tests have been restructured to test more
thoroughly this interaction.
@as-cii as-cii merged commit 64f4625 into master Jan 10, 2018
@as-cii as-cii deleted the as-fix-state-loading-race-condition branch January 10, 2018 13:33
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Atom can open the same file twice in the same pane
1 participant