Skip to content

Commit 322e41f

Browse files
authored
[vs17.12] Fixing the contention condition caused by RegisterResolversManifests (#11612)
Fixes #11079 Work item (Internal use): https://dev.azure.com/devdiv/DevDiv/_workitems/edit/2400156 Summary: **Backport of #11079 to vs17.12** There was a contention condition described #7927 (comment): One thread enters and locks, then initializes a list, starts pushing things onto the list, which is now no longer null. Second thread then checks, sees the list is not empty and bypasses the lock, acquires enumerator. First thread pushes additional item into the list. Second thread throws. We want to backport it to 17.12 (which is 9.0.100) so it is a part of the source build. That means that a large part of our Linux userbase which runs on source builds SDKs is exposed to the problem and they could experience failures at any time - and they won't have the fix unless we backport. Customer Impact: It is an annoying error that occasionally kills a multiprocessed pipeline due to a contention condition. Fortunately it only manifests occassionaly, however it happens often enough to be noticeable. We have at least two well documented cases as of recently and even more if we extend the time window. Regression: No, it is a long standing bug. Testing src/Build.UnitTests/BackEnd/SdkResolverService_Tests.cs test to validate the error is no longer there. (See the original ticket for discussion) Risk Low, the change is already rolled out and tested in the main branch.
2 parents 12f78aa + 3d5403b commit 322e41f

File tree

2 files changed

+175
-57
lines changed

2 files changed

+175
-57
lines changed

0 commit comments

Comments
 (0)