-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Storage Execution
-
ALL
-
Storage Execution 2025-07-21, Storage Execution 2025-08-04, Storage Execution 2025-08-18, Storage Execution 2025-09-01
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Set the record store insert overwrite setting (allowOverwrite) to false for all non-clustered collections on attached storage, so a replicated-rid insert colliding with an existing key fails with WT_DUPLICATE_KEY instead of silently overwriting a different document.
Details
- Today we use allowOverwrite=false only for clustered and recordIdsReplicated collections and true for everything else (see getRecordStoreOptions).
- Under the set-wide design, a collection's effective rid-mode changes with node membership, so the setting cannot remain derived from a per-collection property.
- The setting is runtime-only (RecordStore cursor params), not baked into the WiredTiger table config, so the flip requires no on-disk migration and applies to existing collections.
- The blind-write optimization that motivates overwrite=true is disagg-only (AttachedPersistenceProvider::shouldUseBlindWriteWhenSafe returns false for ASC).
Performance
Measured with paired sys-perf patches (change vs comment-only baseline at the same commit): flat on all realistic insert workloads; residual 1-2.5% regression only under extreme single-collection insert contention (parallel_insert_replica, 32-1024 threads). See the allowOverwrite decision tab in the technical design.
Acceptance criteria
- All non-clustered collections on attached storage are created/opened with allowOverwrite=false.
- No behaviour change for Disagg.
- Paired sys-perf validation included.
- is related to
-
SERVER-90341 Use compiled configurations for open_cursor
-
- Backlog
-