-
Type:
Improvement
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: DHandles
-
Storage Engines, Storage Engines - Foundations
-
708.285
-
None
-
None
On a follower checkpoint pickup, rather than having all new layered cursors open the new stable tables at the same time, we'd "spin off" an open in the background and continue to use the old stable table.
Here's how it could work conceptually - we add two new flags on the dhandle: a ready flag and a wanted flag. They only apply to stable tables at a checkpoint. When about to open a new stable table, mark the dhandle as wanted, but don't wait - use the old stable table (which along with the ingest table, continues to satisfy correctness).
There's new server (background) thread(s) that look for wanted flags, and open those dhandles, marking them ready. Any layered open encountering a ready flag knows it is ready to open. That's the cooperative part - the use of flags between layered open threads and server threads.
This is conceptual to make it easy to understand - we may not need an explicit ready flag - there's a flag to indicate btree open that might be enough.
- is related to
-
WT-18313 Queued shared metadata entries have unlimited lifetime on a follower
-
- Backlog
-
-
WT-18028 Extend WT dhandle benchmark for disagg and add plateaus
-
- In Code Review
-
-
WT-18159 Lazily open the stable table on follower to fix lost tombstone on blind-delete miss (dup-key fasserts)
-
- Closed
-
-
WT-18270 Close the layered cursor's leftover ingest cursor only on step-up
-
- Closed
-
- related to
-
WT-18248 Dhandle scaling Perf: cooperative on demand background warming of stable tables btrees
-
- Open
-
-
WT-18060 Dhandle scaling Perf: On standby, do selective pickup of individual btree checkpoints
-
- Closed
-