-
Type: Build Failure
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Checkpoints
-
Storage Engines
-
5
-
StorEng - 2024-01-23
Automated testing uncovered a case where a user operation on a checkpoint cursor attempts to directly evict a page. That isn't currently safe - since the application thread transaction context is used for making visibility decisions.
There is an assertion in place here src/evict/evict_page.c@870: __evict_reconcile to detect if such an eviction is attempted:
WT_ASSERT(session, !F_ISSET(session->txn, WT_TXN_IS_CHECKPOINT));
Which fired in a test case. The assertion fired when attempting to evict a page from the WiredTiger metadata because a cursor was configured to aggressively remove content from the cache when finished with it.
We should update the code to no longer rely on the assertion, but instead to ensure that such a dirty page eviction is not attempted.