This repository was archived by the owner on Jan 22, 2019. It is now read-only.
fix: a race condition causing settings to be overwritten #92
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.
jsonc-parser's
setProperty()
takes an object, path, and value, and sets the value at the path in the object. Along the way,setProperty()
mutates the path byArray.pop()
ping off each component until the path is empty. In browser-extensions,setProperty()
is called multiple times with the same path because a combineLatest reuses the latestviewerConfiguredExtensions
when the adjacentconfigurationCascade
emits. That was not a problem unless the user clicked the toggle button again beforeviewerConfiguredExtensions
emitted, which would create a new path. There was a window of time during which clicking the toggle button would apply the settings change with the old (mutated and empty) path. That would set the top level value of client settings to whatever the value of the toggle was (true or false).Now, the mutation happens on a copy of the array, so the original path is left intact.
This is a workaround until a fix is merged upstream: microsoft/node-jsonc-parser#12
Resolves https://github.com/sourcegraph/sourcegraph/issues/12972
cc @KattMingMing no need to work on that issue now