summaryrefslogtreecommitdiff
path: root/src/conn/conn_cache.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/conn/conn_cache.c')
-rw-r--r--src/conn/conn_cache.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/conn/conn_cache.c b/src/conn/conn_cache.c
index 6a8d3430aa1..7e94e9e87dc 100644
--- a/src/conn/conn_cache.c
+++ b/src/conn/conn_cache.c
@@ -43,13 +43,28 @@ __cache_config_local(WT_SESSION_IMPL *session, bool shared, const char *cfg[])
cache->eviction_trigger = (u_int)cval.val;
if (F_ISSET(conn, WT_CONN_IN_MEMORY))
- cache->eviction_dirty_target =
+ cache->eviction_checkpoint_target =
+ cache->eviction_dirty_target =
cache->eviction_dirty_trigger = 100U;
else {
WT_RET(__wt_config_gets(
+ session, cfg, "eviction_checkpoint_target", &cval));
+ cache->eviction_checkpoint_target = (u_int)cval.val;
+
+ WT_RET(__wt_config_gets(
session, cfg, "eviction_dirty_target", &cval));
cache->eviction_dirty_target = (u_int)cval.val;
+ /*
+ * Sanity check the checkpoint target: don't allow a value
+ * lower than the dirty target.
+ */
+ if (cache->eviction_checkpoint_target > 0 &&
+ cache->eviction_checkpoint_target <
+ cache->eviction_dirty_target)
+ cache->eviction_checkpoint_target =
+ cache->eviction_dirty_target;
+
WT_RET(__wt_config_gets(
session, cfg, "eviction_dirty_trigger", &cval));
cache->eviction_dirty_trigger = (u_int)cval.val;