-
Type:
Technical Debt
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Reconciliation
-
None
-
Storage Engines - Transactions
-
141.444
-
None
-
None
Right now rec_write_wrapup works out a disagg_page_free_required flag itself and then relies on it in a few places, it passes it to wt_ref_block_free to decide whether the block actually gets freed, it gates the tree size accounting on it (we only decrease the size when !disagg_page_free_required), and theres a separate disagg_page_free_required branch further down. A lot of the branching in wrapup only exists because we compute this in reconcile and then conditionally skip the free call.
The idea is instead of figuring it out in reconcile and skipping wt_ref_block_free, we pass the flag down and dont skip the call. The block manager already takes a disagg_free_block arg so it can own the free plus the size accounting that comes off the back of it, and I think that lets us drop most of the conditional logic in rec_write_wrapup.
Definition of done:
- stop gating the wt_ref_block_free call on {{disagg_page_free_required }}in wrapup, always call it and let the block manager act on the flag
- move the size decrease we do when the delta chain terminates to sit with the free in the block manager
- remove the now redundant branches in rec_write_wrapup
Came out of the WT-16666 review, thanks luke.pearson@mongodb.com for raising it.
- is related to
-
WT-16666
Refactor __rec_write_wrapup callers to __wt_btree_decrease_size.
-
- In Code Review
-