-
Type:
Technical Debt
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: DHandles
-
None
-
Storage Engines - Foundations
-
12.927
-
None
-
None
Issue Summary
WT-15242 identifies shared (disaggregated) trees by the block_manager=disagg configuration, and open handles by a flag, instead of the ".wt_stable" file name. Ingest btrees of layered tables are still identified by the ".wt_ingest" name suffix.
Context
- Ingest btrees are recognized by name in the btree open path, in the shared-tree creation assertion and in other places that need to tell an ingest tree from a stable one.
- Unlike a shared tree, an ingest tree carries no configuration setting that identifies it. It is created in memory with logging disabled and no page log, and none of those settings is unique to it.
- The name-based check keeps the naming convention as an assumption and cannot be told from a local file that happens to end in ".wt_ingest".
Proposed Solution
- Mark the ingest constituent explicitly when it is created, with a configuration setting persisted in the metadata, and set a handle or btree flag from it at open.
- Classify an open ingest tree from that flag, and a tree known only by name from its metadata entry, in the same split as the shared-tree helpers (flags for open trees, metadata for names).
- Replace the remaining ".wt_ingest" name checks, with the legacy name kept as a fallback for entries written by earlier releases until WT-18866 removes the shared-tree one.
Definition of Done
- No code decides that a tree is an ingest tree from its file name alone, apart from the legacy fallback.
- Existing databases with unmarked ingest entries keep working.