-
Type:
Task
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Storage Execution
-
Storage Execution 2026-11-23
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Overview
Write a design note on staging writes in the RecoveryUnit instead of writing through to WiredTiger, and on merge cursors that present storage plus staged writes as a single view. This guides the staged-write prototype tickets in this epic.
Background
In the proposed architecture, writes on opted-in collections are buffered in the RecoveryUnit until commit and are not written to the storage engine on the primary. A transaction must still read its own writes, including through collection and index scans, so storage reads must merge the snapshot with the staged writes and produce the same results as a write-through transaction would.
Scope of Work
- Staged buffer structure: per-ident ordered map keyed by KeyString/RecordId with tombstones.
- Interaction with savepoints and statement-level rollback in multi-document transactions.
- RecordId allocation for inserts without writing to WiredTiger.
- Count and data-size delta tracking.
- Cursor semantics: seek, next/prev, save/restore, bounds, prepare conflicts.
- Inventory of every RecordStore, SortedDataInterface and Container entry point, including non-cursor ones (findRecord, dataFor, seekExact, numRecords, dup-key checks, Container get/insert). Classify each as: merge needed / buffer only / unsupported in prototype.
- Memory limits (reuse existing transaction size limits where possible).
Acceptance Criteria
- Design note recorded on this ticket or committed alongside code in the project branch.
- Inventory table complete, with open questions listed.
Technical Notes
- Prototype quality; not intended for commit to master.
- is depended on by
-
SERVER-138761 Prototype StagedWriteBuffer and staging hooks in the WiredTiger write helpers
-
- Open
-
-
SERVER-138772 Produce delivery plan and architecture update from conflict detection prototype findings
-
- Backlog
-