Fix the potential access to upsert metadata manager after it is closed #11692
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 the race condition which can cause access to the upsert metadata after the manager is closed:
_stopped
flag check but not invokingstartOperation()
yet (it might block on snapshot lock)startOperation()
and start accessing the metadataIn this PR, make
startOperation()
return false if the pending operations (reference count) already drops to 0, and also mergestopped
flag check intostartOperation()
to simplify the logic. This is not super performance sensitive, so using very tight synchronized block should be fine