-
Type:
Task
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Cursors, Layered Tables
-
None
-
Storage Engines - Foundations
-
455.528
-
None
-
None
Problem 1: possibly dead branch in __clayered_modify_try_ingest (src/cursor/cur_layered.c)
- When the ingest value for the key is a tombstone or delete-encoded, the branch forces a full update because such a value cannot serve as a modify base.
- A lookup returns WT_NOTFOUND for a deleted key, so the branch is only reachable if the modify skips the lookup on an already-positioned cursor.
- __clayered_modify_ingest skips the lookup only when both WT_CURSTD_KEY_INT and WT_CURSTD_VALUE_INT are set and a positioned remove clears VALUE_INT. No known path positions a cursor on a tombstone with VALUE_INT set.
- Outcome: either prove the branch unreachable and replace it with an assertion or identify the reaching path and cover it with a Python test.
Problem 2: no modify operation in test/suite/test_layered_cursor_stress.py
- The stress workload exercises insert, update, remove, search and iteration on plain, leader and follower layered cursors but never modify.
- Add a modify op, including modify on a just-removed slot and give it non-zero weight in the workload profiles.
Goal:
- The branch in __clayered_modify_try_ingest is either asserted unreachable or tested.