-
Type: Bug
-
Resolution: Gone away
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Write Ops
-
ALL
-
-
Execution Team 2019-10-07
The repro deadlocks in the following way:
- Statement 1 takes a lock on db.system.views in MODE_X.
- Statement 2 parses the $where, which causes a find to be run on db.system.js. Since there is no collection called db.system.js, we check if it is a view, which takes a mutex on the ViewCatalog.
- Statement 1 parses the $where, which causes a find to be run on db.system.js. It waits for the mutex on the ViewCatalog.
- Statement 2 attempts to iterate the DurableViewCatalog. It waits for a MODE_IS lock on db.system.views.
The deadlock was introduced in this commit, which changed DBClientCursor to use read commands by default, instead of OP_QUERY. When using OP_QUERY, if a collection does not exist, we do not check whether it is a view.
- is related to
-
SERVER-40630 Blacklist view_catalog FSM tests from running in concurrency_simultaneous suite
- Closed
- related to
-
SERVER-25890 Prevent user-initiated writes to the system.views collection
- Closed