summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/src/evict/evict_page.c
diff options
context:
space:
mode:
authorLuke Chen <luke.chen@mongodb.com>2021-05-11 09:45:01 +1000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-05-10 23:58:13 +0000
commit94b923a9900f81e750e3d69dc9e27ae573fd16e6 (patch)
treed49203307b6b6abbc9c62085449f46ce1978bfec /src/third_party/wiredtiger/src/evict/evict_page.c
parent521e05db88e1e1c89dfd8313500322bb90828a35 (diff)
downloadmongo-94b923a9900f81e750e3d69dc9e27ae573fd16e6.tar.gz
Import wiredtiger: aadac222429faa9b20d9344e3648a19be97811b9 from branch mongodb-4.4
ref: 03c93998a7..aadac22242 for: 4.4.7 WT-6204 Possible race between backup and checkpoint at file close WT-6362 Ensure that history store operations in user session context are correct WT-6387 Remove unused WT_CURSTD_UPDATE_LOCAL flag WT-6538 Fix onpage prepare visibility check if the start and stop are from the same prepared transaction WT-6893 Disable huffman config in compatibility test WT-6956 Cut WiredTiger 10.0.0 release WT-7076 Data placement for tiered storage in WiredTiger WT-7092 Reduce calls to hash URI when opening/closing cached cursors by one WT-7105 Add recovery error messages to include the URI WT-7133 Fix bug in stat collection when target pages are reduced due to high HS cache pressure WT-7173 Devise object naming scheme for tiered storage WT-7176 Adding Ubuntu 18.04 ASAN variant to wiredtiger build WT-7185 Avoid aborting a transaction if it is force evicting and oldest WT-7186 Correct expected in-memory abort updates in prepare scenario WT-7190 Limit eviction of non-history store pages when checkpoint is operating on history store WT-7191 Replace FNV hash with City hash WT-7229 Align out of order and mixed mode handling WT-7230 CMake build system support for x86 POSIX targets WT-7241 Add asserts to verify if prepared transaction abort mechanism is working as expected WT-7253 Add import functionality to test/format WT-7264 Creating a new configuration for search near that allows it to exit quickly when searching for prefixes WT-7266 Test to validate re-reading files that were closed with active history WT-7281 Add metric to record total sessions scanned WT-7282 Make backup debugging messages into verbose messages WT-7297 Fix search_near assertion WT-7312 Keys/Values updated to String type and save the created keys WT-7315 Implementation of the update thread operation in the test framework WT-7316 Adding operation throttles, and modifying component functionality to separate core loop WT-7329 Add hook capability to Python testing WT-7332 Add ability to cycle through create and drop tables in workgen WT-7345 Update incorrect copyright notices format WT-7346 Connect new API changes to local storage extension WT-7355 Create python hooks to validate tiered cursor implementation WT-7356 Implement bulk load for tiered tables WT-7365 Change the configuration file format WT-7367 Do not remove unstable updates of an in-memory database btree page WT-7368 Add WT_STORAGE_SOURCE.customize_file_system in place of locations WT-7374 Add missing branch checking logic for doc-update task WT-7376 Initialize tiered cursor name WT-7380 Fix wiredtiger connection string to clear statistics WT-7384 Fix an assert fire when inserting to the history store WT-7385 Remove 'auth_token' from being reconfigurable WT-7387 Replace cluster/member with hostid WT-7388 Add parens to assignment in conditional WT-7389 Remove on positioned tiered cursor should leave cursor positioned WT-7390 Add --noremove flag to Python test runner WT-7394 Coverity analysis defect 118020: Uninitialized scalar variable WT-7395 Coverity analysis defect 118042: Dereference after null check WT-7400 Set WT_HS_READ_ALL flag for the search before fixing the out of order timestamps WT-7403 Random cursor on empty tiered table loops forever WT-7409 Remove dead code WT-7410 Split session flags into two to accommodate more session flags in future WT-7413 Add an option to wtperf to run a backup operation WT-7414 Create a python test to ensure that all tables that are dropped during backup are exists in the backup WT-7415 Add new configuration files with backup option WT-7419 Tiered local storage changes to use WT file system WT-7420 Tiered local storage changed to flush files to bucket directory WT-7423 Clear checkpoint LSN and backup metadata on import WT-7425 Fix for the -C command line option WT-7428 Move bucket storage to tiered structure WT-7429 Set readonly metadata when switching tiered objects WT-7447 Fix the assert fire because onpage out of order update is not popped from the stack WT-7453 Coverity analysis defect 119968: Continue has no effect WT-7454 Coverity analysis defect 119967: Continue has no effect WT-7455 Coverity analysis defect 119966: Redundant test WT-7456 Coverity analysis defect 119965: Uninitialized pointer read WT-7457 Coverity: fix error in local store rename WT-7458 Coverity analysis defect 119949: Redundant test WT-7459 Coverity analysis defect 119947: Redundant test WT-7463 Use wt_off_t to avoid incompatible pointer types WT-7468 Fix tiered file and object metadata configuration WT-7474 Reset cursor-order checks whenever a search is performed WT-7475 Update format to use the new history-store cursor type WT-7476 Update configuration handling to allow for optional configuration settings WT-7477 Fix coverity bug: possible NULL dereference WT-7478 Fix coverity printf arg type to match format WT-7481 Fix the wrong assert of disk image write gen comparison with btree base write gen WT-7484 Coverity analysis defect 120014: Uninitialized scalar variable WT-7485 Coverity analysis defect 120018: Resource leak WT-7488 Coverity analysis defect 120015: Dereference after null check WT-7489 Avoid running RTS concurrently with checkpoint WT-7496 Add operations each tier can support to data structure WT-7500 Refactor tiered thread start code
Diffstat (limited to 'src/third_party/wiredtiger/src/evict/evict_page.c')
-rw-r--r--src/third_party/wiredtiger/src/evict/evict_page.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/third_party/wiredtiger/src/evict/evict_page.c b/src/third_party/wiredtiger/src/evict/evict_page.c
index 5d6954cb594..26b38dc5996 100644
--- a/src/third_party/wiredtiger/src/evict/evict_page.c
+++ b/src/third_party/wiredtiger/src/evict/evict_page.c
@@ -576,6 +576,20 @@ __evict_review(WT_SESSION_IMPL *session, WT_REF *ref, uint32_t evict_flags, bool
return (0);
/*
+ * If we are trying to evict a dirty page that does not belong to history store(HS) and
+ * checkpoint is processing the HS file, then avoid evicting the dirty non-HS page for now if
+ * the cache is already dominated by dirty HS content.
+ *
+ * Evicting a non-HS dirty page can generate even more HS content. As we can not evict HS pages
+ * while checkpoint is operating on the HS file, we can end up in a situation where we exceed
+ * the cache size limits.
+ */
+ if (conn->txn_global.checkpoint_running_hs && !WT_IS_HS(btree->dhandle) &&
+ __wt_cache_hs_dirty(session) && __wt_cache_full(session)) {
+ WT_STAT_CONN_INCR(session, cache_eviction_blocked_checkpoint_hs);
+ return (__wt_set_return(session, EBUSY));
+ }
+ /*
* If reconciliation is disabled for this thread (e.g., during an eviction that writes to the
* history store), give up.
*/