At the moment eviction threads use checks based on global visibility rules - which means that they don't evict anything that isn't globally visible (based on transaction ID checks, not timestamp checks).
We should update eviction so that it can evict anything that is committed or prepared. A possible way to do that is to allocate a transaction snapshot when doing evictions, but that requires care because application threads might be doing the eviction and we need to be careful not to use or disrupt their snapshot.
See WT-6444 for more context and a workload where this change is beneficial.
- causes
-
WT-7995 Fix the global visibility so that it cannot go beyond checkpoint visibility
- Closed
-
WT-6725 Skip checking visibility for updates restored from disk
- Closed
-
WT-6740 Fix unintentionally releasing the snapshot by mistreating the recovery session as an eviction session
- Closed
- has to be done before
-
WT-6624 Use transaction snapshot for applications performing eviction
- Closed
- is depended on by
-
SERVER-47681 Background validation uses the kNoOverlap read source instead of kAllDurableSnapshot to prevent us from having to take the PBWM lock on secondaries
- Closed
-
WT-6726 test_txn24.test_snapshot_isolation_and_eviction failed with WT_ROLLBACK
- Closed
- is duplicated by
-
WT-6503 Cache stuck: eviction couldn't able to progress triggered by number of updates in cache
- Closed
- related to
-
WT-6444 Abort a transaction if it is force evicting and oldest
- Closed
-
WT-6524 Data mismatch between primary and secondaries in mongodb
- Closed
-
WT-6707 Allow eviction to operate with snapshot when checkpoint is running
- Closed