Details
-
Bug
-
Resolution: Fixed
-
Critical - P2
-
4.2.0, 4.4.0, 5.0.0, 6.0.0, 7.0.0-rc0
-
None
-
Fully Compatible
-
ALL
-
v7.1, v7.0, v6.0, v5.0, v4.4
-
-
Sharding EMEA 2023-06-12, Sharding EMEA 2023-06-26, Sharding EMEA 2023-07-10, Sharding EMEA 2023-07-24
-
135
-
2
Description
The second and following statements of a multi-document transaction can operate on an already opened storage engine snapshot whose data doesn't match the ShardVersion indicated by the router.
e.g:
Consider a sharded multi-document transactions with read concern 'local' or 'majority'. The first statement targets collectionA which exists on shard0. This opens a storage engine snapshot on shard0 at T100.
At T100, shard0 owned half the range of collectionB. Later, a chunk migration happens and shard0 becomes owner of the whole range and its ShardVersion is SV2.
A second statement of the transaction will target collectionB. The router routes according to the post-migration placement (that shard0 owns the whole range) thus it will only target shard0 with SV2.
The shard will check the SV and see that it matches. However, the storage snapshot at which the transaction is operating does not include the documents for the newly received chunk. So the query will miss documents.
Attachments
Issue Links
- causes
-
SERVER-80279 Commit on non-existing transaction then proceed to continue can trigger an invariant
-
- Closed
-
- is depended on by
-
SERVER-78952 Revert SERVER-78855 after SERVER-77506
-
- Closed
-
- is related to
-
SERVER-84723 Sharded multi-document transactions can observe partial effects of concurrent DDL operations
-
- Closed
-
-
SERVER-82353 Multi-document transactions can miss documents when movePrimary runs concurrently
-
- Closed
-
-
SERVER-78855 Use snapshot isolation for Queryable Encryption transactions
-
- Closed
-
- related to
-
SERVER-79193 Investigate if workload added in TIG-4444 catches other bugs
-
- Backlog
-
-
SERVER-80525 Investigate ClusterBulkWriteCmd not clearing autocommit field
-
- Backlog
-
-
SERVER-80523 Expose OperationSessionInfoFromClient as a decoration
-
- Backlog
-
-
SERVER-80524 Move OperationSessionInfo to oplog idl files
-
- Backlog
-
-
SERVER-80526 Refactor appendFieldsForStartTransaction
-
- Backlog
-