This repository was archived by the owner on Jun 5, 2025. It is now read-only.
Fix race condition when storing GitConfiguration to disk #3949
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 of the pull request
The
GitConfigurationclass is thread-safe, but it still resulted in multiple threads trying to store the configuration file concurrently. This concurrent access mostly hit when browsing to a folder in File Explorer for the first time in the Git extension process life, as multiple threads tried to perform the initial Git detection concurrently. Making the_fileLockfield static ensures that only one thread can access the file at a time.Validation steps performed
Prior to fix, when using a debug build, multiple file IO exceptions were logged in the git integration console window when first browsing to a registered folder. After fix, these IO exceptions are no longer encountered.
PR checklist