-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: 4.0.0-rc0
-
Component/s: Storage, Testing Infrastructure
-
None
-
Fully Compatible
-
ALL
-
v4.0
-
-
TIG 2018-06-04
-
0
SERVER-34778 allowed dbHash to be run inside of a multi-statement transaction. Multi-statement transactions convert all lock acquisition of database and collection locks to be MODE_IX (a higher level is used for determining whether the operation may be performed in a transaction).
However, the dbHash only performs lock conversion if the command specifies an atClusterTime as part of its read concern.
Thus a client can now:
- Start a transaction
- Perform a DBHash without using atClusterTime, taking a MODE_S lock on each database
- Perform a CRUD operation which is converted to MODE_IX
The server will crash on the CRUD operation when this invariant fires, noticing the MODE_IX request while the operation context already holds the lock in MODE_S.
- is caused by
-
SERVER-34778 Add support for specifying atClusterTime to the dbhash command
- Closed