-
Type: Bug
-
Resolution: Works as Designed
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Cache and Eviction
-
Storage Engines
-
StorEng - Defined Pipeline
When calling some internal functions, the execution flow can sometimes divert to page eviction.
If page eviction is not a directly requested operation but rather a side activity, it should remain hidden from the caller just as if it never happened. If eviction failed for any reason, the function should try and perform it's intended operation and never leak any eviction-related error codes or states to the caller.
Some functions to pay attention to:
- __wt_page_release
- __wti_delete_page and __tree_walk_internal
- __wt_sync_file
- __cursor_reset (hello
WT-11871) - Functions calling __wt_cache_eviction_check (maybe this function should return void to prevent error propagation?):
- __wt_txn_rollback
- __wt_txn_idle_cache_check
- __wt_txn_commit
- __wt_txn_begin
- __wt_page_in_func
- __wt_compact
- __cursor_enter
- Review functions calling __wt_evict_file:
- __wt_verify
- __wt_session_lock_checkpoint
- __wt_conn_dhandle_close
- __wt_checkpoint_close
- __checkpoint_tree
- Review salvage:
- __slvg_row_build_leaf
- __slvg_checkpoint
Note that some inner function may need to be modified to either retry on some errors and/or add a page to the urgent eviction queue.
- related to
-
WT-11871 Define whether or not cursor reset can throw WT_ROLLBACK
- Closed