[SERVER-84760] Violation of transaction snapshot isolation when collection concurrently dropped Created: 11/Jan/24  Updated: 06/Feb/24

Status: In Code Review
Project: Core Server
Component/s: None
Affects Version/s: 4.4.0, 5.0.0, 6.0.0
Fix Version/s: 5.0 Required, 4.4 Required

Type: Bug Priority: Major - P3
Reporter: Jordi Serra Torrens Assignee: Matthew Russotto
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: File repro-server-84760.js    
Issue Links:
Backports
Fix
Problem/Incident
Related
related to SERVER-84723 Sharded multi-document transactions c... Closed
Assigned Teams:
Replication
Operating System: ALL
Backport Requested:
v5.0, v4.4
Sprint: Repl 2024-01-22, Repl 2024-02-05, Repl 2024-02-19
Participants:

 Description   

On versions earlier than v7.0, there's the following anomaly on transactions with snapshot read concern. Consider the following scenario:
1. Insert two docs to coll1
2. Insert one doc to coll2
3. Start transaction with snapshot read concern and read from coll1. Expect to see 2 docs.
4. Outside the transaction, insert a third doc to coll1.
5. Outside the transaction, drop coll2.
6. Within the transaction, read coll2. Expect to see 1 doc. But it sees 0 (as if coll2 does not exist)

This is a violation of snapshot isolation because there never existed a snapshot where coll1 had 2 documents but coll2 didn't exist.

The same can happen exchanging 'drop' by 'rename'.

This does not reproduce on v7.0 and later thanks to PM-2218.


Generated at Thu Feb 08 06:55:55 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.