Remove CrossProcessReaderWriteLock #3549
Merged
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.
Change
Remove
CrossProcessReaderWriteLock
, as it has caused more problems than it likely ever solved.The current issue is that the mutexes can potentially be released on a different thread than they were acquired in the COM server. This led to initially removing them from being stored for the entire lifetime of the index file, after confirming that even in immutable mode, SQLite is opening the file and not sharing delete.
After that, the massive complexity of the code is unnecessary, since we ever only hold the lock shared to open the index. So rather than keep it, I swapped out all usage for the simple wrapper around a named mutex. I also added a
FAIL_FAST_IF
the current thread was not the one that we had originally acquired the lock on.This might lead to slightly more waiting while other callers are opening files, but it might just as easily lead to less waiting due to the single mutex.
Validation
By existing tests.
Microsoft Reviewers: Open in CodeFlow