|
This ticket originally had two parts:
- Add an invariant when we hit a prepare conflict and check that if the conflicting thread is an internal operation, it must be marked killable.
- Add an invariant at lock acquisition time that if a strong lock is acquired and the conflicting thread is an internal operation, it must be marked killable. It is okay to ignore the 'local', 'admin', and 'config' name spaces since we don't expect to conflict with locks held by prepared transactions for them.
Currently, the legacy MapReduce command grabs a CollectionLock in X mode when dropping temp collections. Since there doesn't seem like a good way to check that a collection/DB lock is acquired on a temporary collection at the lock acquisition layer, I don't think it would be worth it to make changes to the legacy MapReduce code that will be replaced soon. The Query test is in the process of switching the tests from using the legacy MapReduce to the new one where no strong locks are expected to be held. I think it would be better to hold off on (2) until SERVER-42511 is completed.
I created SERVER-44779 to push (1) which doesn't have any dependencies on MR.
|