Fix race condition checking if event mutex exists #54430
Draft
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.
Fix issue #50330 a race condition checking if lock already exists.
It's possible for a race condition to occur if we acquire the lock just to check if it's free.
The exists check interferes with the actual lock acquisition at event startup. As a result it's possible to miss an event run.
Imagine following scenario:
thread A goes inside the exists method and lock the mutex.
All other threads conclude that the event will be run by thread A and skip the event run to avoid overlapping
thread A releases the lock by returning from the exists methog
thread A proceeds to acquire the lock "for real" but the lock has already been locked by another thread running the exists method.
Thread A bails out thinking the event is being run by another thread but in fact it's not.