summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/third_party/wiredtiger/dist/stat_data.py18
-rw-r--r--src/third_party/wiredtiger/import.data8
-rw-r--r--src/third_party/wiredtiger/src/async/async_api.c9
-rw-r--r--src/third_party/wiredtiger/src/btree/bt_curnext.c4
-rw-r--r--src/third_party/wiredtiger/src/btree/bt_curprev.c4
-rw-r--r--src/third_party/wiredtiger/src/btree/bt_discard.c2
-rw-r--r--src/third_party/wiredtiger/src/btree/bt_walk.c9
-rw-r--r--src/third_party/wiredtiger/src/conn/conn_api.c47
-rw-r--r--src/third_party/wiredtiger/src/conn/conn_handle.c8
-rw-r--r--src/third_party/wiredtiger/src/conn/conn_open.c27
-rw-r--r--src/third_party/wiredtiger/src/evict/evict_lru.c2
-rw-r--r--src/third_party/wiredtiger/src/evict/evict_page.c126
-rw-r--r--src/third_party/wiredtiger/src/include/btmem.h29
-rw-r--r--src/third_party/wiredtiger/src/include/btree.i7
-rw-r--r--src/third_party/wiredtiger/src/include/cache.h5
-rw-r--r--src/third_party/wiredtiger/src/include/cursor.i4
-rw-r--r--src/third_party/wiredtiger/src/include/extern.h4
-rw-r--r--src/third_party/wiredtiger/src/include/stat.h18
-rw-r--r--src/third_party/wiredtiger/src/include/txn.i6
-rw-r--r--src/third_party/wiredtiger/src/include/wiredtiger.in710
-rw-r--r--src/third_party/wiredtiger/src/lsm/lsm_manager.c6
-rw-r--r--src/third_party/wiredtiger/src/support/hazard.c4
-rw-r--r--src/third_party/wiredtiger/src/support/stat.c70
-rw-r--r--src/third_party/wiredtiger/test/checkpoint/test_checkpoint.h2
-rwxr-xr-xsrc/third_party/wiredtiger/test/evergreen.yml4
25 files changed, 630 insertions, 503 deletions
diff --git a/src/third_party/wiredtiger/dist/stat_data.py b/src/third_party/wiredtiger/dist/stat_data.py
index 92008c8f7e0..846525d69b7 100644
--- a/src/third_party/wiredtiger/dist/stat_data.py
+++ b/src/third_party/wiredtiger/dist/stat_data.py
@@ -220,13 +220,15 @@ connection_stats = [
CacheStat('cache_eviction_dirty', 'modified pages evicted'),
CacheStat('cache_eviction_empty_score', 'eviction empty score', 'no_clear,no_scale'),
CacheStat('cache_eviction_fail', 'pages selected for eviction unable to be evicted'),
- CacheStat('cache_eviction_force', 'pages evicted because they exceeded the in-memory maximum count'),
- CacheStat('cache_eviction_force_delete', 'pages evicted because they had chains of deleted items count'),
- CacheStat('cache_eviction_force_delete_time', 'pages evicted because they had chains of deleted items time (usecs)'),
- CacheStat('cache_eviction_force_fail', 'failed eviction of pages that exceeded the in-memory maximum count'),
- CacheStat('cache_eviction_force_fail_time', 'failed eviction of pages that exceeded the in-memory maximum time (usecs)'),
+ CacheStat('cache_eviction_force', 'forced eviction - pages selected count'),
+ CacheStat('cache_eviction_force_clean', 'forced eviction - pages evicted that were clean count'),
+ CacheStat('cache_eviction_force_clean_time', 'forced eviction - pages evicted that were clean time (usecs)'),
+ CacheStat('cache_eviction_force_delete', 'forced eviction - pages selected because of too many deleted items count'),
+ CacheStat('cache_eviction_force_dirty', 'forced eviction - pages evicted that were dirty count'),
+ CacheStat('cache_eviction_force_dirty_time', 'forced eviction - pages evicted that were dirty time (usecs)'),
+ CacheStat('cache_eviction_force_fail', 'forced eviction - pages selected unable to be evicted count'),
+ CacheStat('cache_eviction_force_fail_time', 'forced eviction - pages selected unable to be evicted time'),
CacheStat('cache_eviction_force_retune', 'force re-tuning of eviction workers once in a while'),
- CacheStat('cache_eviction_force_time', 'pages evicted because they exceeded the in-memory maximum time (usecs)'),
CacheStat('cache_eviction_get_ref', 'eviction calls to get a page'),
CacheStat('cache_eviction_get_ref_empty', 'eviction calls to get a page found queue empty'),
CacheStat('cache_eviction_get_ref_empty2', 'eviction calls to get a page found queue empty after locking'),
@@ -235,6 +237,7 @@ connection_stats = [
CacheStat('cache_eviction_maximum_page_size', 'maximum page size at eviction', 'no_clear,no_scale,size'),
CacheStat('cache_eviction_pages_queued', 'pages queued for eviction'),
CacheStat('cache_eviction_pages_queued_oldest', 'pages queued for urgent eviction during walk'),
+ CacheStat('cache_eviction_pages_queued_post_lru', 'pages queued for eviction post lru sorting'),
CacheStat('cache_eviction_pages_queued_urgent', 'pages queued for urgent eviction'),
CacheStat('cache_eviction_pages_seen', 'pages seen by eviction walk'),
CacheStat('cache_eviction_queue_empty', 'eviction server candidate queue empty when topping up'),
@@ -253,6 +256,9 @@ connection_stats = [
CacheStat('cache_eviction_target_page_lt64', 'eviction walk target pages histogram - 32-63'),
CacheStat('cache_eviction_walk', 'pages walked for eviction'),
CacheStat('cache_eviction_walk_from_root', 'eviction walks started from root of tree'),
+ CacheStat('cache_eviction_walk_internal_yield', 'eviction server waiting for an internal page yields'),
+ CacheStat('cache_eviction_walk_internal_wait', 'eviction server waiting for an internal page sleep (usec)'),
+ CacheStat('cache_eviction_walk_leaf_notfound', 'eviction server waiting for a leaf page'),
CacheStat('cache_eviction_walk_passes', 'eviction passes of a file'),
CacheStat('cache_eviction_walk_saved_pos', 'eviction walks started from saved location in tree'),
CacheStat('cache_eviction_walks_abandoned', 'eviction walks abandoned'),
diff --git a/src/third_party/wiredtiger/import.data b/src/third_party/wiredtiger/import.data
index a6acafb20cb..5e4ee3db6a4 100644
--- a/src/third_party/wiredtiger/import.data
+++ b/src/third_party/wiredtiger/import.data
@@ -1,6 +1,6 @@
{
- "commit": "b50d65e8560446e2cd205594e07bbcaa2305b144",
- "github": "wiredtiger/wiredtiger.git",
- "vendor": "wiredtiger",
- "branch": "mongodb-4.2"
+ "vendor": "wiredtiger",
+ "github": "wiredtiger/wiredtiger.git",
+ "branch": "mongodb-4.2",
+ "commit": "99e0760cc5f11440b21184874d8dd2ae5bde23d6"
}
diff --git a/src/third_party/wiredtiger/src/async/async_api.c b/src/third_party/wiredtiger/src/async/async_api.c
index e879067bbbb..9f9aa979139 100644
--- a/src/third_party/wiredtiger/src/async/async_api.c
+++ b/src/third_party/wiredtiger/src/async/async_api.c
@@ -345,7 +345,7 @@ __wt_async_reconfig(WT_SESSION_IMPL *session, const char *cfg[])
return (ret);
}
if (!conn->async_cfg && run) /* Case 2 */
- return (__async_start(session));
+ return (__wt_async_create(session, cfg));
if (!conn->async_cfg) /* Case 3 */
return (0);
@@ -578,22 +578,25 @@ __async_runtime_config(WT_ASYNC_OP_IMPL *op, const char *cfg[])
*/
int
__wt_async_new_op(WT_SESSION_IMPL *session, const char *uri,
- const char *config, const char *cfg[], WT_ASYNC_CALLBACK *cb,
- WT_ASYNC_OP_IMPL **opp)
+ const char *config, WT_ASYNC_CALLBACK *cb, WT_ASYNC_OP_IMPL **opp)
{
WT_ASYNC_OP_IMPL *op;
WT_CONNECTION_IMPL *conn;
WT_DECL_RET;
+ const char *cfg[] = { S2C(session)->cfg, NULL, NULL };
*opp = NULL;
conn = S2C(session);
if (!conn->async_cfg)
+ WT_RET(__wt_async_create(session, cfg));
+ if (!conn->async_cfg)
WT_RET_MSG(
session, ENOTSUP, "Asynchronous operations not configured");
op = NULL;
WT_ERR(__async_new_op_alloc(session, uri, config, &op));
+ cfg[1] = config;
WT_ERR(__async_runtime_config(op, cfg));
op->cb = cb;
*opp = op;
diff --git a/src/third_party/wiredtiger/src/btree/bt_curnext.c b/src/third_party/wiredtiger/src/btree/bt_curnext.c
index 6a85ccf6c17..94fe29d468d 100644
--- a/src/third_party/wiredtiger/src/btree/bt_curnext.c
+++ b/src/third_party/wiredtiger/src/btree/bt_curnext.c
@@ -711,8 +711,10 @@ __wt_btcur_next(WT_CURSOR_BTREE *cbt, bool truncating)
*/
if (page != NULL &&
(cbt->page_deleted_count > WT_BTREE_DELETE_THRESHOLD ||
- (newpage && cbt->page_deleted_count > 0)))
+ (newpage && cbt->page_deleted_count > 0))) {
__wt_page_evict_soon(session, cbt->ref);
+ WT_STAT_CONN_INCR(session, cache_eviction_force_delete);
+ }
cbt->page_deleted_count = 0;
if (F_ISSET(cbt, WT_CBT_READ_ONCE))
diff --git a/src/third_party/wiredtiger/src/btree/bt_curprev.c b/src/third_party/wiredtiger/src/btree/bt_curprev.c
index 1b8df0008b9..5ac53cb2036 100644
--- a/src/third_party/wiredtiger/src/btree/bt_curprev.c
+++ b/src/third_party/wiredtiger/src/btree/bt_curprev.c
@@ -665,8 +665,10 @@ __wt_btcur_prev(WT_CURSOR_BTREE *cbt, bool truncating)
*/
if (page != NULL &&
(cbt->page_deleted_count > WT_BTREE_DELETE_THRESHOLD ||
- (newpage && cbt->page_deleted_count > 0)))
+ (newpage && cbt->page_deleted_count > 0))) {
__wt_page_evict_soon(session, cbt->ref);
+ WT_STAT_CONN_INCR(session, cache_eviction_force_delete);
+ }
cbt->page_deleted_count = 0;
if (F_ISSET(cbt, WT_CBT_READ_ONCE))
diff --git a/src/third_party/wiredtiger/src/btree/bt_discard.c b/src/third_party/wiredtiger/src/btree/bt_discard.c
index f2899e38ab0..a3cbd6a2101 100644
--- a/src/third_party/wiredtiger/src/btree/bt_discard.c
+++ b/src/third_party/wiredtiger/src/btree/bt_discard.c
@@ -276,7 +276,7 @@ __wt_free_ref(
__wt_free(session, ref->page_del);
}
- __wt_overwrite_and_free(session, ref);
+ __wt_overwrite_and_free_len(session, ref, WT_REF_CLEAR_SIZE);
}
/*
diff --git a/src/third_party/wiredtiger/src/btree/bt_walk.c b/src/third_party/wiredtiger/src/btree/bt_walk.c
index a7cb433b56a..30cdaf2225a 100644
--- a/src/third_party/wiredtiger/src/btree/bt_walk.c
+++ b/src/third_party/wiredtiger/src/btree/bt_walk.c
@@ -447,6 +447,13 @@ restart: /*
WT_ERR_NOTFOUND_OK(ret);
__wt_spin_backoff(&swap_yield, &swap_sleep);
+ if (swap_yield < 1000)
+ WT_STAT_CONN_INCR(session,
+ cache_eviction_walk_internal_yield);
+ if (swap_sleep != 0)
+ WT_STAT_CONN_INCRV(session,
+ cache_eviction_walk_internal_wait,
+ swap_sleep);
}
/* NOTREACHED */
}
@@ -560,6 +567,8 @@ descend: /*
* An expected error, so "couple" is unchanged.
*/
if (ret == WT_NOTFOUND) {
+ WT_STAT_CONN_INCR(session,
+ cache_eviction_walk_leaf_notfound);
WT_NOT_READ(ret, 0);
break;
}
diff --git a/src/third_party/wiredtiger/src/conn/conn_api.c b/src/third_party/wiredtiger/src/conn/conn_api.c
index e68fb6c15f8..24df42b45f1 100644
--- a/src/third_party/wiredtiger/src/conn/conn_api.c
+++ b/src/third_party/wiredtiger/src/conn/conn_api.c
@@ -725,7 +725,9 @@ __conn_async_new_op(WT_CONNECTION *wt_conn, const char *uri, const char *config,
conn = (WT_CONNECTION_IMPL *)wt_conn;
CONNECTION_API_CALL(conn, session, async_new_op, config, cfg);
- WT_ERR(__wt_async_new_op(session, uri, config, cfg, callback, &op));
+ WT_UNUSED(cfg);
+
+ WT_ERR(__wt_async_new_op(session, uri, config, callback, &op));
*asyncopp = &op->iface;
@@ -1047,22 +1049,13 @@ __conn_close(WT_CONNECTION *wt_conn, const char *config)
const char *ckpt_cfg;
conn = (WT_CONNECTION_IMPL *)wt_conn;
- ckpt_cfg = "use_timestamp=false";
CONNECTION_API_CALL(conn, session, close, config, cfg);
-
- /* The default session is used to access data handles during close. */
- F_CLR(session, WT_SESSION_NO_DATA_HANDLES);
+err:
WT_TRET(__wt_config_gets(session, cfg, "leak_memory", &cval));
if (cval.val != 0)
F_SET(conn, WT_CONN_LEAK_MEMORY);
- WT_TRET(__wt_config_gets(session, cfg, "use_timestamp", &cval));
- if (cval.val != 0) {
- ckpt_cfg = "use_timestamp=true";
- if (conn->txn_global.has_stable_timestamp)
- F_SET(conn, WT_CONN_CLOSING_TIMESTAMP);
- }
/*
* Ramp the eviction dirty target down to encourage eviction threads to
@@ -1071,7 +1064,7 @@ __conn_close(WT_CONNECTION *wt_conn, const char *config)
conn->cache->eviction_dirty_trigger = 1.0;
conn->cache->eviction_dirty_target = 0.1;
-err: /*
+ /*
* Rollback all running transactions.
* We do this as a separate pass because an active transaction in one
* session could cause trouble when closing a file, even if that
@@ -1102,7 +1095,8 @@ err: /*
WT_TRET(wt_session->close(wt_session, config));
}
- WT_TRET(__wt_async_flush(session));
+ /* Wait for in-flight operations to complete. */
+ WT_TRET(__wt_txn_activity_drain(session));
/*
* Disable lookaside eviction: it doesn't help us shut down and can
@@ -1111,8 +1105,24 @@ err: /*
*/
F_SET(conn, WT_CONN_EVICTION_NO_LOOKASIDE);
- /* Wait for in-flight operations to complete. */
- WT_TRET(__wt_txn_activity_drain(session));
+ /*
+ * Clear any pending async operations and shut down the async worker
+ * threads and system before closing LSM.
+ */
+ WT_TRET(__wt_async_flush(session));
+ WT_TRET(__wt_async_destroy(session));
+
+ WT_TRET(__wt_lsm_manager_destroy(session));
+
+ /*
+ * After the async and LSM threads have exited, we shouldn't opening
+ * any more files.
+ */
+ F_SET(conn, WT_CONN_CLOSING_NO_MORE_OPENS);
+ WT_FULL_BARRIER();
+
+ /* The default session is used to access data handles during close. */
+ F_CLR(session, WT_SESSION_NO_DATA_HANDLES);
/*
* Perform a system-wide checkpoint so that all tables are consistent
@@ -1121,6 +1131,13 @@ err: /*
* shutting down all the subsystems. We have shut down all user
* sessions, but send in true for waiting for internal races.
*/
+ WT_TRET(__wt_config_gets(session, cfg, "use_timestamp", &cval));
+ ckpt_cfg = "use_timestamp=false";
+ if (cval.val != 0) {
+ ckpt_cfg = "use_timestamp=true";
+ if (conn->txn_global.has_stable_timestamp)
+ F_SET(conn, WT_CONN_CLOSING_TIMESTAMP);
+ }
if (!F_ISSET(conn, WT_CONN_IN_MEMORY | WT_CONN_READONLY)) {
s = NULL;
WT_TRET(__wt_open_internal_session(
diff --git a/src/third_party/wiredtiger/src/conn/conn_handle.c b/src/third_party/wiredtiger/src/conn/conn_handle.c
index faee6216ed7..6f61d10afbe 100644
--- a/src/third_party/wiredtiger/src/conn/conn_handle.c
+++ b/src/third_party/wiredtiger/src/conn/conn_handle.c
@@ -65,7 +65,7 @@ __wt_connection_init(WT_CONNECTION_IMPL *conn)
WT_RET(__wt_rwlock_init(session, &conn->hot_backup_lock));
WT_RWLOCK_INIT_TRACKED(session, &conn->table_lock, table);
- /* Setup the spin locks for the LSM manager queues. */
+ /* Setup serialization for the LSM manager queues. */
WT_RET(__wt_spin_init(session,
&conn->lsm_manager.app_lock, "LSM application queue lock"));
WT_RET(__wt_spin_init(session,
@@ -130,6 +130,12 @@ __wt_connection_destroy(WT_CONNECTION_IMPL *conn)
__wt_rwlock_destroy(session, &conn->table_lock);
__wt_spin_destroy(session, &conn->turtle_lock);
+ /* Free LSM serialization resources. */
+ __wt_spin_destroy(session, &conn->lsm_manager.switch_lock);
+ __wt_spin_destroy(session, &conn->lsm_manager.app_lock);
+ __wt_spin_destroy(session, &conn->lsm_manager.manager_lock);
+ __wt_cond_destroy(session, &conn->lsm_manager.work_cond);
+
/* Free allocated memory. */
__wt_free(session, conn->cfg);
__wt_free(session, conn->debug_ckpt);
diff --git a/src/third_party/wiredtiger/src/conn/conn_open.c b/src/third_party/wiredtiger/src/conn/conn_open.c
index 3a1025fea1b..c9d34987df4 100644
--- a/src/third_party/wiredtiger/src/conn/conn_open.c
+++ b/src/third_party/wiredtiger/src/conn/conn_open.c
@@ -76,32 +76,24 @@ __wt_connection_close(WT_CONNECTION_IMPL *conn)
wt_conn = &conn->iface;
session = conn->default_session;
+ /*
+ * The LSM and async services are not shut down in this path (which is
+ * called when wiredtiger_open hits an error (as well as during normal
+ * shutdown). Assert they're not running.
+ */
+ WT_ASSERT(session,
+ !F_ISSET(conn, WT_CONN_SERVER_ASYNC | WT_CONN_SERVER_LSM));
+
/* Shut down the subsystems, ensuring workers see the state change. */
F_SET(conn, WT_CONN_CLOSING);
WT_FULL_BARRIER();
/*
- * Clear any pending async operations and shut down the async worker
- * threads and system before closing LSM.
- */
- WT_TRET(__wt_async_flush(session));
- WT_TRET(__wt_async_destroy(session));
-
- /*
* Shut down server threads other than the eviction server, which is
* needed later to close btree handles. Some of these threads access
* btree handles, so take care in ordering shutdown to make sure they
* exit before files are closed.
*/
- WT_TRET(__wt_lsm_manager_destroy(session));
-
- /*
- * Once the async and LSM threads exit, we shouldn't be opening any
- * more files.
- */
- F_SET(conn, WT_CONN_CLOSING_NO_MORE_OPENS);
- WT_FULL_BARRIER();
-
WT_TRET(__wt_capacity_server_destroy(session));
WT_TRET(__wt_checkpoint_server_destroy(session));
WT_TRET(__wt_statlog_destroy(session, true));
@@ -250,9 +242,6 @@ __wt_connection_workers(WT_SESSION_IMPL *session, const char *cfg[])
/* Start the handle sweep thread. */
WT_RET(__wt_sweep_create(session));
- /* Start the optional async threads. */
- WT_RET(__wt_async_create(session, cfg));
-
/* Start the optional capacity thread. */
WT_RET(__wt_capacity_server_create(session, cfg));
diff --git a/src/third_party/wiredtiger/src/evict/evict_lru.c b/src/third_party/wiredtiger/src/evict/evict_lru.c
index 931216376b9..b0b29942cb2 100644
--- a/src/third_party/wiredtiger/src/evict/evict_lru.c
+++ b/src/third_party/wiredtiger/src/evict/evict_lru.c
@@ -1373,6 +1373,8 @@ __evict_lru_walk(WT_SESSION_IMPL *session)
}
}
+ WT_STAT_CONN_INCRV(session,
+ cache_eviction_pages_queued_post_lru, queue->evict_candidates);
queue->evict_current = queue->evict_queue;
__wt_spin_unlock(session, &queue->evict_lock);
diff --git a/src/third_party/wiredtiger/src/evict/evict_page.c b/src/third_party/wiredtiger/src/evict/evict_page.c
index 26a51dfcca7..5df9b7ce9bb 100644
--- a/src/third_party/wiredtiger/src/evict/evict_page.c
+++ b/src/third_party/wiredtiger/src/evict/evict_page.c
@@ -55,16 +55,10 @@ __wt_page_release_evict(WT_SESSION_IMPL *session, WT_REF *ref, uint32_t flags)
{
WT_BTREE *btree;
WT_DECL_RET;
- WT_PAGE *page;
- uint64_t time_start, time_stop;
uint32_t evict_flags, previous_state;
- bool locked, too_big;
+ bool locked;
btree = S2BT(session);
- locked = false;
- page = ref->page;
- time_start = __wt_clock(session);
- evict_flags = LF_ISSET(WT_READ_NO_SPLIT) ? WT_EVICT_CALL_NO_SPLIT : 0;
/*
* This function always releases the hazard pointer - ensure that's
@@ -73,47 +67,20 @@ __wt_page_release_evict(WT_SESSION_IMPL *session, WT_REF *ref, uint32_t flags)
* without first locking the page, it could be evicted in between.
*/
previous_state = ref->state;
- if ((previous_state == WT_REF_MEM || previous_state == WT_REF_LIMBO) &&
- WT_REF_CAS_STATE(session, ref, previous_state, WT_REF_LOCKED))
- locked = true;
+ locked =
+ (previous_state == WT_REF_MEM || previous_state == WT_REF_LIMBO) &&
+ WT_REF_CAS_STATE(session, ref, previous_state, WT_REF_LOCKED);
if ((ret = __wt_hazard_clear(session, ref)) != 0 || !locked) {
if (locked)
WT_REF_SET_STATE(ref, previous_state);
return (ret == 0 ? EBUSY : ret);
}
- (void)__wt_atomic_addv32(&btree->evict_busy, 1);
-
- too_big = page->memory_footprint >= btree->splitmempage;
+ evict_flags = LF_ISSET(WT_READ_NO_SPLIT) ? WT_EVICT_CALL_NO_SPLIT : 0;
+ FLD_SET(evict_flags, WT_EVICT_CALL_URGENT);
- /*
- * Track how long the call to evict took. If eviction is successful then
- * we have one of two pairs of stats to increment.
- */
+ (void)__wt_atomic_addv32(&btree->evict_busy, 1);
ret = __wt_evict(session, ref, previous_state, evict_flags);
- time_stop = __wt_clock(session);
- if (ret == 0) {
- if (too_big) {
- WT_STAT_CONN_INCR(session, cache_eviction_force);
- WT_STAT_CONN_INCRV(session, cache_eviction_force_time,
- WT_CLOCKDIFF_US(time_stop, time_start));
- } else {
- /*
- * If the page isn't too big, we are evicting it because
- * it had a chain of deleted entries that make traversal
- * expensive.
- */
- WT_STAT_CONN_INCR(session, cache_eviction_force_delete);
- WT_STAT_CONN_INCRV(session,
- cache_eviction_force_delete_time,
- WT_CLOCKDIFF_US(time_stop, time_start));
- }
- } else {
- WT_STAT_CONN_INCR(session, cache_eviction_force_fail);
- WT_STAT_CONN_INCRV(session, cache_eviction_force_fail_time,
- WT_CLOCKDIFF_US(time_stop, time_start));
- }
-
(void)__wt_atomic_subv32(&btree->evict_busy, 1);
return (ret);
@@ -130,12 +97,14 @@ __wt_evict(WT_SESSION_IMPL *session,
WT_CONNECTION_IMPL *conn;
WT_DECL_RET;
WT_PAGE *page;
+ uint64_t time_start, time_stop;
bool clean_page, closing, inmem_split, local_gen, tree_dead;
conn = S2C(session);
page = ref->page;
closing = LF_ISSET(WT_EVICT_CALL_CLOSING);
local_gen = false;
+ time_start = time_stop = 0; /* [-Werror=maybe-uninitialized] */
__wt_verbose(session, WT_VERB_EVICT,
"page %p (%s)", (void *)page, __wt_page_type_string(page->type));
@@ -155,6 +124,16 @@ __wt_evict(WT_SESSION_IMPL *session,
}
/*
+ * Track how long forcible eviction took. Immediately increment the
+ * forcible eviction counter, we might do an in-memory split and not
+ * an eviction, which skips the other statistics.
+ */
+ if (LF_ISSET(WT_EVICT_CALL_URGENT)) {
+ time_start = __wt_clock(session);
+ WT_STAT_CONN_INCR(session, cache_eviction_force);
+ }
+
+ /*
* Get exclusive access to the page if our caller doesn't have the tree
* locked down.
*/
@@ -225,6 +204,21 @@ __wt_evict(WT_SESSION_IMPL *session,
else
WT_ERR(__evict_page_dirty_update(session, ref, flags));
+ if (LF_ISSET(WT_EVICT_CALL_URGENT)) {
+ time_stop = __wt_clock(session);
+ if (clean_page) {
+ WT_STAT_CONN_INCR(session, cache_eviction_force_clean);
+ WT_STAT_CONN_INCRV(session,
+ cache_eviction_force_clean_time,
+ WT_CLOCKDIFF_US(time_stop, time_start));
+ }
+ else {
+ WT_STAT_CONN_INCR(session, cache_eviction_force_dirty);
+ WT_STAT_CONN_INCRV(session,
+ cache_eviction_force_dirty_time,
+ WT_CLOCKDIFF_US(time_stop, time_start));
+ }
+ }
if (clean_page) {
WT_STAT_CONN_INCR(session, cache_eviction_clean);
WT_STAT_DATA_INCR(session, cache_eviction_clean);
@@ -237,6 +231,14 @@ __wt_evict(WT_SESSION_IMPL *session,
err: if (!closing)
__evict_exclusive_clear(session, ref, previous_state);
+ if (LF_ISSET(WT_EVICT_CALL_URGENT)) {
+ time_stop = __wt_clock(session);
+ WT_STAT_CONN_INCR(session, cache_eviction_force_fail);
+ WT_STAT_CONN_INCRV(session,
+ cache_eviction_force_fail_time,
+ WT_CLOCKDIFF_US(time_stop, time_start));
+ }
+
WT_STAT_CONN_INCR(session, cache_eviction_fail);
WT_STAT_DATA_INCR(session, cache_eviction_fail);
}
@@ -470,11 +472,46 @@ __evict_child_check(WT_SESSION_IMPL *session, WT_REF *parent)
WT_REF *child;
bool active;
+ /*
+ * There may be cursors in the tree walking the list of child pages.
+ * The parent is locked, so all we care about is cursors already in the
+ * child pages, no thread can enter them. Any cursor moving through the
+ * child pages must be hazard pointer coupling between pages, where the
+ * page on which it currently has a hazard pointer must be in a state
+ * other than on-disk. Walk the child list forward, then backward, to
+ * ensure we don't race with a cursor walking in the opposite direction
+ * from our check.
+ */
+ WT_INTL_FOREACH_BEGIN(session, parent->page, child) {
+ switch (child->state) {
+ case WT_REF_DISK: /* On-disk */
+ case WT_REF_DELETED: /* On-disk, deleted */
+ case WT_REF_LOOKASIDE: /* On-disk, lookaside */
+ break;
+ default:
+ return (__wt_set_return(session, EBUSY));
+ }
+ } WT_INTL_FOREACH_END;
+ WT_INTL_FOREACH_REVERSE_BEGIN(session, parent->page, child) {
+ switch (child->state) {
+ case WT_REF_DISK: /* On-disk */
+ case WT_REF_DELETED: /* On-disk, deleted */
+ case WT_REF_LOOKASIDE: /* On-disk, lookaside */
+ break;
+ default:
+ return (__wt_set_return(session, EBUSY));
+ }
+ } WT_INTL_FOREACH_END;
+
+ /*
+ * The fast check is done and there are no cursors in the child pages.
+ * Make sure the child WT_REF structures pages can be discarded.
+ */
WT_INTL_FOREACH_BEGIN(session, parent->page, child) {
switch (child->state) {
case WT_REF_DISK: /* On-disk */
break;
- case WT_REF_DELETED: /* Deleted */
+ case WT_REF_DELETED: /* On-disk, deleted */
/*
* If the child page was part of a truncate,
* transaction rollback might switch this page into its
@@ -498,7 +535,7 @@ __evict_child_check(WT_SESSION_IMPL *session, WT_REF *parent)
if (active)
return (__wt_set_return(session, EBUSY));
break;
- case WT_REF_LOOKASIDE:
+ case WT_REF_LOOKASIDE: /* On-disk, lookaside */
/*
* If the lookaside history is obsolete, the reference
* can be ignored.
@@ -520,9 +557,8 @@ __evict_child_check(WT_SESSION_IMPL *session, WT_REF *parent)
* for conditions that would block its eviction.
*/
static int
-__evict_review(
- WT_SESSION_IMPL *session, WT_REF *ref, uint32_t evict_flags,
- bool *inmem_splitp)
+__evict_review(WT_SESSION_IMPL *session,
+ WT_REF *ref, uint32_t evict_flags, bool *inmem_splitp)
{
WT_CACHE *cache;
WT_CONNECTION_IMPL *conn;
diff --git a/src/third_party/wiredtiger/src/include/btmem.h b/src/third_party/wiredtiger/src/include/btmem.h
index 73049bed16a..a7c289a7b7f 100644
--- a/src/third_party/wiredtiger/src/include/btmem.h
+++ b/src/third_party/wiredtiger/src/include/btmem.h
@@ -593,6 +593,14 @@ struct __wt_page {
for (__refp = __pindex->index, \
__entries = __pindex->entries; __entries > 0; --__entries) {\
(ref) = *__refp++;
+#define WT_INTL_FOREACH_REVERSE_BEGIN(session, page, ref) do { \
+ WT_PAGE_INDEX *__pindex; \
+ WT_REF **__refp; \
+ uint32_t __entries; \
+ WT_INTL_INDEX_GET(session, page, __pindex); \
+ for (__refp = __pindex->index + __pindex->entries, \
+ __entries = __pindex->entries; __entries > 0; --__entries) {\
+ (ref) = *--__refp;
#define WT_INTL_FOREACH_END \
} \
} while (0)
@@ -897,17 +905,19 @@ struct __wt_ref {
WT_PAGE_DELETED *page_del; /* Deleted page information */
WT_PAGE_LOOKASIDE *page_las; /* Lookaside information */
-/* A macro wrapper allowing us to remember the callers code location */
-#define WT_REF_CAS_STATE(session, ref, old_state, new_state) \
- __wt_ref_cas_state_int((session), (ref), (old_state), (new_state),\
- __FILE__, __LINE__)
+ /*
+ * In DIAGNOSTIC mode we overwrite the WT_REF on free to force failures.
+ * Don't clear the history in that case.
+ */
+#define WT_REF_CLEAR_SIZE (offsetof(WT_REF, hist))
+
#define WT_REF_SAVE_STATE_MAX 3
#ifdef HAVE_DIAGNOSTIC
/* Capture history of ref state changes. */
struct __wt_ref_hist {
WT_SESSION_IMPL *session;
const char *name;
- const char *file;
+ const char *func;
uint16_t line;
uint16_t state;
} hist[WT_REF_SAVE_STATE_MAX];
@@ -915,19 +925,24 @@ struct __wt_ref {
#define WT_REF_SAVE_STATE(ref, s, f, l) do { \
(ref)->hist[(ref)->histoff].session = session; \
(ref)->hist[(ref)->histoff].name = session->name; \
- (ref)->hist[(ref)->histoff].file = (f); \
+ (ref)->hist[(ref)->histoff].func = (f); \
(ref)->hist[(ref)->histoff].line = (uint16_t)(l); \
(ref)->hist[(ref)->histoff].state = (uint16_t)(s); \
(ref)->histoff = \
((ref)->histoff + 1) % WT_ELEMENTS((ref)->hist); \
} while (0)
#define WT_REF_SET_STATE(ref, s) do { \
- WT_REF_SAVE_STATE(ref, s, __FILE__, __LINE__); \
+ WT_REF_SAVE_STATE(ref, s, __func__, __LINE__); \
WT_PUBLISH((ref)->state, s); \
} while (0)
#else
#define WT_REF_SET_STATE(ref, s) WT_PUBLISH((ref)->state, s)
#endif
+
+/* A macro wrapper allowing us to remember the callers code location */
+#define WT_REF_CAS_STATE(session, ref, old_state, new_state) \
+ __wt_ref_cas_state_int( \
+ session, ref, old_state, new_state, __func__, __LINE__)
};
/*
* WT_REF_SIZE is the expected structure size -- we verify the build to ensure
diff --git a/src/third_party/wiredtiger/src/include/btree.i b/src/third_party/wiredtiger/src/include/btree.i
index 906c615057a..5cf67d8600f 100644
--- a/src/third_party/wiredtiger/src/include/btree.i
+++ b/src/third_party/wiredtiger/src/include/btree.i
@@ -1508,7 +1508,8 @@ __wt_page_release(WT_SESSION_IMPL *session, WT_REF *ref, uint32_t flags)
* memory_page_max setting, when we see many deleted items, and when we
* are attempting to scan without trashing the cache.
*
- * Fast checks if eviction is disabled for this handle, operation or
+ * Fast checks if flag indicates no evict, session can't perform slow
+ * operation, eviction is disabled for this handle, operation or
* tree, then perform a general check if eviction will be possible.
*
* Checkpoint should not queue pages for urgent eviction if it cannot
@@ -1517,7 +1518,9 @@ __wt_page_release(WT_SESSION_IMPL *session, WT_REF *ref, uint32_t flags)
* checkpointed, and no other thread can help with that.
*/
page = ref->page;
- if (WT_READGEN_EVICT_SOON(page->read_gen) &&
+ if (!LF_ISSET(WT_READ_NO_EVICT) &&
+ __wt_session_can_wait(session) &&
+ WT_READGEN_EVICT_SOON(page->read_gen) &&
btree->evict_disabled == 0 &&
__wt_page_can_evict(session, ref, &inmem_split)) {
if (!__wt_page_evict_clean(page) &&
diff --git a/src/third_party/wiredtiger/src/include/cache.h b/src/third_party/wiredtiger/src/include/cache.h
index 163e0a2753c..46718d9aba2 100644
--- a/src/third_party/wiredtiger/src/include/cache.h
+++ b/src/third_party/wiredtiger/src/include/cache.h
@@ -294,6 +294,7 @@ struct __wt_cache_pool {
/* Flags used with __wt_evict */
/* AUTOMATIC FLAG VALUE GENERATION START */
-#define WT_EVICT_CALL_CLOSING 0x1u /* Closing connection or tree */
-#define WT_EVICT_CALL_NO_SPLIT 0x2u /* Splits not allowed */
+#define WT_EVICT_CALL_CLOSING 0x1u /* Closing connection or tree */
+#define WT_EVICT_CALL_NO_SPLIT 0x2u /* Splits not allowed */
+#define WT_EVICT_CALL_URGENT 0x4u /* Urgent eviction */
/* AUTOMATIC FLAG VALUE GENERATION STOP */
diff --git a/src/third_party/wiredtiger/src/include/cursor.i b/src/third_party/wiredtiger/src/include/cursor.i
index 3c08f808c62..0cb3708a030 100644
--- a/src/third_party/wiredtiger/src/include/cursor.i
+++ b/src/third_party/wiredtiger/src/include/cursor.i
@@ -200,8 +200,10 @@ __cursor_reset(WT_CURSOR_BTREE *cbt)
* If we were scanning and saw a lot of deleted records on this page,
* try to evict the page when we release it.
*/
- if (cbt->page_deleted_count > WT_BTREE_DELETE_THRESHOLD)
+ if (cbt->page_deleted_count > WT_BTREE_DELETE_THRESHOLD) {
__wt_page_evict_soon(session, cbt->ref);
+ WT_STAT_CONN_INCR(session, cache_eviction_force_delete);
+ }
cbt->page_deleted_count = 0;
/*
diff --git a/src/third_party/wiredtiger/src/include/extern.h b/src/third_party/wiredtiger/src/include/extern.h
index a4706a36796..1c704be9c3e 100644
--- a/src/third_party/wiredtiger/src/include/extern.h
+++ b/src/third_party/wiredtiger/src/include/extern.h
@@ -36,7 +36,7 @@ extern int __wt_apply_single_idx(WT_SESSION_IMPL *session, WT_INDEX *idx, WT_CUR
extern int __wt_async_create(WT_SESSION_IMPL *session, const char *cfg[]) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
extern int __wt_async_destroy(WT_SESSION_IMPL *session) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
extern int __wt_async_flush(WT_SESSION_IMPL *session) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
-extern int __wt_async_new_op(WT_SESSION_IMPL *session, const char *uri, const char *config, const char *cfg[], WT_ASYNC_CALLBACK *cb, WT_ASYNC_OP_IMPL **opp) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
+extern int __wt_async_new_op(WT_SESSION_IMPL *session, const char *uri, const char *config, WT_ASYNC_CALLBACK *cb, WT_ASYNC_OP_IMPL **opp) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
extern int __wt_async_op_enqueue(WT_SESSION_IMPL *session, WT_ASYNC_OP_IMPL *op) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
extern int __wt_async_op_init(WT_SESSION_IMPL *session) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
extern int __wt_async_reconfig(WT_SESSION_IMPL *session, const char *cfg[]) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
@@ -925,7 +925,7 @@ static inline bool __wt_page_is_empty(WT_PAGE *page) WT_GCC_FUNC_DECL_ATTRIBUTE(
static inline bool __wt_page_is_modified(WT_PAGE *page) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
static inline bool __wt_page_las_active(WT_SESSION_IMPL *session, WT_REF *ref) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
static inline bool __wt_rec_need_split(WT_RECONCILE *r, size_t len) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
-static inline bool __wt_ref_cas_state_int(WT_SESSION_IMPL *session, WT_REF *ref, uint32_t old_state, uint32_t new_state, const char *file, int line) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
+static inline bool __wt_ref_cas_state_int(WT_SESSION_IMPL *session, WT_REF *ref, uint32_t old_state, uint32_t new_state, const char *func, int line) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
static inline bool __wt_ref_is_root(WT_REF *ref) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
static inline bool __wt_row_leaf_key_info(WT_PAGE *page, void *copy, WT_IKEY **ikeyp, WT_CELL **cellp, void *datap, size_t *sizep) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
static inline bool __wt_row_leaf_value(WT_PAGE *page, WT_ROW *rip, WT_ITEM *value) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
diff --git a/src/third_party/wiredtiger/src/include/stat.h b/src/third_party/wiredtiger/src/include/stat.h
index 26c030009e6..8968c5e1010 100644
--- a/src/third_party/wiredtiger/src/include/stat.h
+++ b/src/third_party/wiredtiger/src/include/stat.h
@@ -386,6 +386,9 @@ struct __wt_connection_stats {
int64_t cache_eviction_server_evicting;
int64_t cache_eviction_server_slept;
int64_t cache_eviction_slow;
+ int64_t cache_eviction_walk_leaf_notfound;
+ int64_t cache_eviction_walk_internal_wait;
+ int64_t cache_eviction_walk_internal_yield;
int64_t cache_eviction_state;
int64_t cache_eviction_target_page_lt10;
int64_t cache_eviction_target_page_lt32;
@@ -404,11 +407,17 @@ struct __wt_connection_stats {
int64_t cache_eviction_worker_evicting;
int64_t cache_eviction_worker_removed;
int64_t cache_eviction_stable_state_workers;
- int64_t cache_eviction_force_fail;
- int64_t cache_eviction_force_fail_time;
int64_t cache_eviction_walks_active;
int64_t cache_eviction_walks_started;
int64_t cache_eviction_force_retune;
+ int64_t cache_eviction_force_clean;
+ int64_t cache_eviction_force_clean_time;
+ int64_t cache_eviction_force_dirty;
+ int64_t cache_eviction_force_dirty_time;
+ int64_t cache_eviction_force_delete;
+ int64_t cache_eviction_force;
+ int64_t cache_eviction_force_fail;
+ int64_t cache_eviction_force_fail_time;
int64_t cache_eviction_hazard;
int64_t cache_hazard_checks;
int64_t cache_hazard_walks;
@@ -427,12 +436,9 @@ struct __wt_connection_stats {
int64_t cache_eviction_deepen;
int64_t cache_write_lookaside;
int64_t cache_pages_inuse;
- int64_t cache_eviction_force;
- int64_t cache_eviction_force_time;
- int64_t cache_eviction_force_delete;
- int64_t cache_eviction_force_delete_time;
int64_t cache_eviction_app;
int64_t cache_eviction_pages_queued;
+ int64_t cache_eviction_pages_queued_post_lru;
int64_t cache_eviction_pages_queued_urgent;
int64_t cache_eviction_pages_queued_oldest;
int64_t cache_read;
diff --git a/src/third_party/wiredtiger/src/include/txn.i b/src/third_party/wiredtiger/src/include/txn.i
index d6c515f00eb..abb2b1ccc66 100644
--- a/src/third_party/wiredtiger/src/include/txn.i
+++ b/src/third_party/wiredtiger/src/include/txn.i
@@ -13,13 +13,13 @@
*/
static inline bool
__wt_ref_cas_state_int(WT_SESSION_IMPL *session, WT_REF *ref,
- uint32_t old_state, uint32_t new_state, const char *file, int line)
+ uint32_t old_state, uint32_t new_state, const char *func, int line)
{
bool cas_result;
/* Parameters that are used in a macro for diagnostic builds */
WT_UNUSED(session);
- WT_UNUSED(file);
+ WT_UNUSED(func);
WT_UNUSED(line);
cas_result = __wt_atomic_casv32(&ref->state, old_state, new_state);
@@ -31,7 +31,7 @@ __wt_ref_cas_state_int(WT_SESSION_IMPL *session, WT_REF *ref,
* updated.
*/
if (cas_result)
- WT_REF_SAVE_STATE(ref, new_state, file, line);
+ WT_REF_SAVE_STATE(ref, new_state, func, line);
#endif
return (cas_result);
}
diff --git a/src/third_party/wiredtiger/src/include/wiredtiger.in b/src/third_party/wiredtiger/src/include/wiredtiger.in
index 31e915620b6..119d734d01f 100644
--- a/src/third_party/wiredtiger/src/include/wiredtiger.in
+++ b/src/third_party/wiredtiger/src/include/wiredtiger.in
@@ -2176,7 +2176,10 @@ struct __wt_connection {
/*!
* Close a connection.
*
- * Any open sessions will be closed.
+ * Any open sessions will be closed. This will release the resources
+ * associated with the session handle, including rolling back any
+ * active transactions and closing any cursors that remain open in the
+ * session.
*
* @snippet ex_all.c Close a connection
*
@@ -5192,735 +5195,738 @@ extern int wiredtiger_extension_terminate(WT_CONNECTION *connection);
#define WT_STAT_CONN_CACHE_EVICTION_SERVER_SLEPT 1060
/*! cache: eviction server unable to reach eviction goal */
#define WT_STAT_CONN_CACHE_EVICTION_SLOW 1061
+/*! cache: eviction server waiting for a leaf page */
+#define WT_STAT_CONN_CACHE_EVICTION_WALK_LEAF_NOTFOUND 1062
+/*! cache: eviction server waiting for an internal page sleep (usec) */
+#define WT_STAT_CONN_CACHE_EVICTION_WALK_INTERNAL_WAIT 1063
+/*! cache: eviction server waiting for an internal page yields */
+#define WT_STAT_CONN_CACHE_EVICTION_WALK_INTERNAL_YIELD 1064
/*! cache: eviction state */
-#define WT_STAT_CONN_CACHE_EVICTION_STATE 1062
+#define WT_STAT_CONN_CACHE_EVICTION_STATE 1065
/*! cache: eviction walk target pages histogram - 0-9 */
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT10 1063
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT10 1066
/*! cache: eviction walk target pages histogram - 10-31 */
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT32 1064
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT32 1067
/*! cache: eviction walk target pages histogram - 128 and higher */
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_GE128 1065
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_GE128 1068
/*! cache: eviction walk target pages histogram - 32-63 */
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT64 1066
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT64 1069
/*! cache: eviction walk target pages histogram - 64-128 */
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT128 1067
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT128 1070
/*! cache: eviction walks abandoned */
-#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ABANDONED 1068
+#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ABANDONED 1071
/*! cache: eviction walks gave up because they restarted their walk twice */
-#define WT_STAT_CONN_CACHE_EVICTION_WALKS_STOPPED 1069
+#define WT_STAT_CONN_CACHE_EVICTION_WALKS_STOPPED 1072
/*!
* cache: eviction walks gave up because they saw too many pages and
* found no candidates
*/
-#define WT_STAT_CONN_CACHE_EVICTION_WALKS_GAVE_UP_NO_TARGETS 1070
+#define WT_STAT_CONN_CACHE_EVICTION_WALKS_GAVE_UP_NO_TARGETS 1073
/*!
* cache: eviction walks gave up because they saw too many pages and
* found too few candidates
*/
-#define WT_STAT_CONN_CACHE_EVICTION_WALKS_GAVE_UP_RATIO 1071
+#define WT_STAT_CONN_CACHE_EVICTION_WALKS_GAVE_UP_RATIO 1074
/*! cache: eviction walks reached end of tree */
-#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ENDED 1072
+#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ENDED 1075
/*! cache: eviction walks started from root of tree */
-#define WT_STAT_CONN_CACHE_EVICTION_WALK_FROM_ROOT 1073
+#define WT_STAT_CONN_CACHE_EVICTION_WALK_FROM_ROOT 1076
/*! cache: eviction walks started from saved location in tree */
-#define WT_STAT_CONN_CACHE_EVICTION_WALK_SAVED_POS 1074
+#define WT_STAT_CONN_CACHE_EVICTION_WALK_SAVED_POS 1077
/*! cache: eviction worker thread active */
-#define WT_STAT_CONN_CACHE_EVICTION_ACTIVE_WORKERS 1075
+#define WT_STAT_CONN_CACHE_EVICTION_ACTIVE_WORKERS 1078
/*! cache: eviction worker thread created */
-#define WT_STAT_CONN_CACHE_EVICTION_WORKER_CREATED 1076
+#define WT_STAT_CONN_CACHE_EVICTION_WORKER_CREATED 1079
/*! cache: eviction worker thread evicting pages */
-#define WT_STAT_CONN_CACHE_EVICTION_WORKER_EVICTING 1077
+#define WT_STAT_CONN_CACHE_EVICTION_WORKER_EVICTING 1080
/*! cache: eviction worker thread removed */
-#define WT_STAT_CONN_CACHE_EVICTION_WORKER_REMOVED 1078
+#define WT_STAT_CONN_CACHE_EVICTION_WORKER_REMOVED 1081
/*! cache: eviction worker thread stable number */
-#define WT_STAT_CONN_CACHE_EVICTION_STABLE_STATE_WORKERS 1079
-/*!
- * cache: failed eviction of pages that exceeded the in-memory maximum
- * count
- */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_FAIL 1080
-/*!
- * cache: failed eviction of pages that exceeded the in-memory maximum
- * time (usecs)
- */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_FAIL_TIME 1081
+#define WT_STAT_CONN_CACHE_EVICTION_STABLE_STATE_WORKERS 1082
/*! cache: files with active eviction walks */
-#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ACTIVE 1082
+#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ACTIVE 1083
/*! cache: files with new eviction walks started */
-#define WT_STAT_CONN_CACHE_EVICTION_WALKS_STARTED 1083
+#define WT_STAT_CONN_CACHE_EVICTION_WALKS_STARTED 1084
/*! cache: force re-tuning of eviction workers once in a while */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_RETUNE 1084
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_RETUNE 1085
+/*! cache: forced eviction - pages evicted that were clean count */
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_CLEAN 1086
+/*! cache: forced eviction - pages evicted that were clean time (usecs) */
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_CLEAN_TIME 1087
+/*! cache: forced eviction - pages evicted that were dirty count */
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DIRTY 1088
+/*! cache: forced eviction - pages evicted that were dirty time (usecs) */
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DIRTY_TIME 1089
+/*!
+ * cache: forced eviction - pages selected because of too many deleted
+ * items count
+ */
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DELETE 1090
+/*! cache: forced eviction - pages selected count */
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE 1091
+/*! cache: forced eviction - pages selected unable to be evicted count */
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_FAIL 1092
+/*! cache: forced eviction - pages selected unable to be evicted time */
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_FAIL_TIME 1093
/*! cache: hazard pointer blocked page eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_HAZARD 1085
+#define WT_STAT_CONN_CACHE_EVICTION_HAZARD 1094
/*! cache: hazard pointer check calls */
-#define WT_STAT_CONN_CACHE_HAZARD_CHECKS 1086
+#define WT_STAT_CONN_CACHE_HAZARD_CHECKS 1095
/*! cache: hazard pointer check entries walked */
-#define WT_STAT_CONN_CACHE_HAZARD_WALKS 1087
+#define WT_STAT_CONN_CACHE_HAZARD_WALKS 1096
/*! cache: hazard pointer maximum array length */
-#define WT_STAT_CONN_CACHE_HAZARD_MAX 1088
+#define WT_STAT_CONN_CACHE_HAZARD_MAX 1097
/*! cache: in-memory page passed criteria to be split */
-#define WT_STAT_CONN_CACHE_INMEM_SPLITTABLE 1089
+#define WT_STAT_CONN_CACHE_INMEM_SPLITTABLE 1098
/*! cache: in-memory page splits */
-#define WT_STAT_CONN_CACHE_INMEM_SPLIT 1090
+#define WT_STAT_CONN_CACHE_INMEM_SPLIT 1099
/*! cache: internal pages evicted */
-#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL 1091
+#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL 1100
/*! cache: internal pages split during eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_SPLIT_INTERNAL 1092
+#define WT_STAT_CONN_CACHE_EVICTION_SPLIT_INTERNAL 1101
/*! cache: leaf pages split during eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_SPLIT_LEAF 1093
+#define WT_STAT_CONN_CACHE_EVICTION_SPLIT_LEAF 1102
/*! cache: maximum bytes configured */
-#define WT_STAT_CONN_CACHE_BYTES_MAX 1094
+#define WT_STAT_CONN_CACHE_BYTES_MAX 1103
/*! cache: maximum page size at eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_MAXIMUM_PAGE_SIZE 1095
+#define WT_STAT_CONN_CACHE_EVICTION_MAXIMUM_PAGE_SIZE 1104
/*! cache: modified pages evicted */
-#define WT_STAT_CONN_CACHE_EVICTION_DIRTY 1096
+#define WT_STAT_CONN_CACHE_EVICTION_DIRTY 1105
/*! cache: modified pages evicted by application threads */
-#define WT_STAT_CONN_CACHE_EVICTION_APP_DIRTY 1097
+#define WT_STAT_CONN_CACHE_EVICTION_APP_DIRTY 1106
/*! cache: operations timed out waiting for space in cache */
-#define WT_STAT_CONN_CACHE_TIMED_OUT_OPS 1098
+#define WT_STAT_CONN_CACHE_TIMED_OUT_OPS 1107
/*! cache: overflow pages read into cache */
-#define WT_STAT_CONN_CACHE_READ_OVERFLOW 1099
+#define WT_STAT_CONN_CACHE_READ_OVERFLOW 1108
/*! cache: page split during eviction deepened the tree */
-#define WT_STAT_CONN_CACHE_EVICTION_DEEPEN 1100
+#define WT_STAT_CONN_CACHE_EVICTION_DEEPEN 1109
/*! cache: page written requiring cache overflow records */
-#define WT_STAT_CONN_CACHE_WRITE_LOOKASIDE 1101
+#define WT_STAT_CONN_CACHE_WRITE_LOOKASIDE 1110
/*! cache: pages currently held in the cache */
-#define WT_STAT_CONN_CACHE_PAGES_INUSE 1102
-/*! cache: pages evicted because they exceeded the in-memory maximum count */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE 1103
-/*!
- * cache: pages evicted because they exceeded the in-memory maximum time
- * (usecs)
- */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_TIME 1104
-/*! cache: pages evicted because they had chains of deleted items count */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DELETE 1105
-/*!
- * cache: pages evicted because they had chains of deleted items time
- * (usecs)
- */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DELETE_TIME 1106
+#define WT_STAT_CONN_CACHE_PAGES_INUSE 1111
/*! cache: pages evicted by application threads */
-#define WT_STAT_CONN_CACHE_EVICTION_APP 1107
+#define WT_STAT_CONN_CACHE_EVICTION_APP 1112
/*! cache: pages queued for eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED 1108
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED 1113
+/*! cache: pages queued for eviction post lru sorting */
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_POST_LRU 1114
/*! cache: pages queued for urgent eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_URGENT 1109
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_URGENT 1115
/*! cache: pages queued for urgent eviction during walk */
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_OLDEST 1110
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_OLDEST 1116
/*! cache: pages read into cache */
-#define WT_STAT_CONN_CACHE_READ 1111
+#define WT_STAT_CONN_CACHE_READ 1117
/*! cache: pages read into cache after truncate */
-#define WT_STAT_CONN_CACHE_READ_DELETED 1112
+#define WT_STAT_CONN_CACHE_READ_DELETED 1118
/*! cache: pages read into cache after truncate in prepare state */
-#define WT_STAT_CONN_CACHE_READ_DELETED_PREPARED 1113
+#define WT_STAT_CONN_CACHE_READ_DELETED_PREPARED 1119
/*! cache: pages read into cache requiring cache overflow entries */
-#define WT_STAT_CONN_CACHE_READ_LOOKASIDE 1114
+#define WT_STAT_CONN_CACHE_READ_LOOKASIDE 1120
/*! cache: pages read into cache requiring cache overflow for checkpoint */
-#define WT_STAT_CONN_CACHE_READ_LOOKASIDE_CHECKPOINT 1115
+#define WT_STAT_CONN_CACHE_READ_LOOKASIDE_CHECKPOINT 1121
/*! cache: pages read into cache skipping older cache overflow entries */
-#define WT_STAT_CONN_CACHE_READ_LOOKASIDE_SKIPPED 1116
+#define WT_STAT_CONN_CACHE_READ_LOOKASIDE_SKIPPED 1122
/*!
* cache: pages read into cache with skipped cache overflow entries
* needed later
*/
-#define WT_STAT_CONN_CACHE_READ_LOOKASIDE_DELAY 1117
+#define WT_STAT_CONN_CACHE_READ_LOOKASIDE_DELAY 1123
/*!
* cache: pages read into cache with skipped cache overflow entries
* needed later by checkpoint
*/
-#define WT_STAT_CONN_CACHE_READ_LOOKASIDE_DELAY_CHECKPOINT 1118
+#define WT_STAT_CONN_CACHE_READ_LOOKASIDE_DELAY_CHECKPOINT 1124
/*! cache: pages requested from the cache */
-#define WT_STAT_CONN_CACHE_PAGES_REQUESTED 1119
+#define WT_STAT_CONN_CACHE_PAGES_REQUESTED 1125
/*! cache: pages seen by eviction walk */
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_SEEN 1120
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_SEEN 1126
/*! cache: pages selected for eviction unable to be evicted */
-#define WT_STAT_CONN_CACHE_EVICTION_FAIL 1121
+#define WT_STAT_CONN_CACHE_EVICTION_FAIL 1127
/*! cache: pages walked for eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_WALK 1122
+#define WT_STAT_CONN_CACHE_EVICTION_WALK 1128
/*! cache: pages written from cache */
-#define WT_STAT_CONN_CACHE_WRITE 1123
+#define WT_STAT_CONN_CACHE_WRITE 1129
/*! cache: pages written requiring in-memory restoration */
-#define WT_STAT_CONN_CACHE_WRITE_RESTORE 1124
+#define WT_STAT_CONN_CACHE_WRITE_RESTORE 1130
/*! cache: percentage overhead */
-#define WT_STAT_CONN_CACHE_OVERHEAD 1125
+#define WT_STAT_CONN_CACHE_OVERHEAD 1131
/*! cache: tracked bytes belonging to internal pages in the cache */
-#define WT_STAT_CONN_CACHE_BYTES_INTERNAL 1126
+#define WT_STAT_CONN_CACHE_BYTES_INTERNAL 1132
/*! cache: tracked bytes belonging to leaf pages in the cache */
-#define WT_STAT_CONN_CACHE_BYTES_LEAF 1127
+#define WT_STAT_CONN_CACHE_BYTES_LEAF 1133
/*! cache: tracked dirty bytes in the cache */
-#define WT_STAT_CONN_CACHE_BYTES_DIRTY 1128
+#define WT_STAT_CONN_CACHE_BYTES_DIRTY 1134
/*! cache: tracked dirty pages in the cache */
-#define WT_STAT_CONN_CACHE_PAGES_DIRTY 1129
+#define WT_STAT_CONN_CACHE_PAGES_DIRTY 1135
/*! cache: unmodified pages evicted */
-#define WT_STAT_CONN_CACHE_EVICTION_CLEAN 1130
+#define WT_STAT_CONN_CACHE_EVICTION_CLEAN 1136
/*! capacity: background fsync file handles considered */
-#define WT_STAT_CONN_FSYNC_ALL_FH_TOTAL 1131
+#define WT_STAT_CONN_FSYNC_ALL_FH_TOTAL 1137
/*! capacity: background fsync file handles synced */
-#define WT_STAT_CONN_FSYNC_ALL_FH 1132
+#define WT_STAT_CONN_FSYNC_ALL_FH 1138
/*! capacity: background fsync time (msecs) */
-#define WT_STAT_CONN_FSYNC_ALL_TIME 1133
+#define WT_STAT_CONN_FSYNC_ALL_TIME 1139
/*! capacity: bytes read */
-#define WT_STAT_CONN_CAPACITY_BYTES_READ 1134
+#define WT_STAT_CONN_CAPACITY_BYTES_READ 1140
/*! capacity: bytes written for checkpoint */
-#define WT_STAT_CONN_CAPACITY_BYTES_CKPT 1135
+#define WT_STAT_CONN_CAPACITY_BYTES_CKPT 1141
/*! capacity: bytes written for eviction */
-#define WT_STAT_CONN_CAPACITY_BYTES_EVICT 1136
+#define WT_STAT_CONN_CAPACITY_BYTES_EVICT 1142
/*! capacity: bytes written for log */
-#define WT_STAT_CONN_CAPACITY_BYTES_LOG 1137
+#define WT_STAT_CONN_CAPACITY_BYTES_LOG 1143
/*! capacity: bytes written total */
-#define WT_STAT_CONN_CAPACITY_BYTES_WRITTEN 1138
+#define WT_STAT_CONN_CAPACITY_BYTES_WRITTEN 1144
/*! capacity: threshold to call fsync */
-#define WT_STAT_CONN_CAPACITY_THRESHOLD 1139
+#define WT_STAT_CONN_CAPACITY_THRESHOLD 1145
/*! capacity: time waiting due to total capacity (usecs) */
-#define WT_STAT_CONN_CAPACITY_TIME_TOTAL 1140
+#define WT_STAT_CONN_CAPACITY_TIME_TOTAL 1146
/*! capacity: time waiting during checkpoint (usecs) */
-#define WT_STAT_CONN_CAPACITY_TIME_CKPT 1141
+#define WT_STAT_CONN_CAPACITY_TIME_CKPT 1147
/*! capacity: time waiting during eviction (usecs) */
-#define WT_STAT_CONN_CAPACITY_TIME_EVICT 1142
+#define WT_STAT_CONN_CAPACITY_TIME_EVICT 1148
/*! capacity: time waiting during logging (usecs) */
-#define WT_STAT_CONN_CAPACITY_TIME_LOG 1143
+#define WT_STAT_CONN_CAPACITY_TIME_LOG 1149
/*! capacity: time waiting during read (usecs) */
-#define WT_STAT_CONN_CAPACITY_TIME_READ 1144
+#define WT_STAT_CONN_CAPACITY_TIME_READ 1150
/*! connection: auto adjusting condition resets */
-#define WT_STAT_CONN_COND_AUTO_WAIT_RESET 1145
+#define WT_STAT_CONN_COND_AUTO_WAIT_RESET 1151
/*! connection: auto adjusting condition wait calls */
-#define WT_STAT_CONN_COND_AUTO_WAIT 1146
+#define WT_STAT_CONN_COND_AUTO_WAIT 1152
/*! connection: detected system time went backwards */
-#define WT_STAT_CONN_TIME_TRAVEL 1147
+#define WT_STAT_CONN_TIME_TRAVEL 1153
/*! connection: files currently open */
-#define WT_STAT_CONN_FILE_OPEN 1148
+#define WT_STAT_CONN_FILE_OPEN 1154
/*! connection: memory allocations */
-#define WT_STAT_CONN_MEMORY_ALLOCATION 1149
+#define WT_STAT_CONN_MEMORY_ALLOCATION 1155
/*! connection: memory frees */
-#define WT_STAT_CONN_MEMORY_FREE 1150
+#define WT_STAT_CONN_MEMORY_FREE 1156
/*! connection: memory re-allocations */
-#define WT_STAT_CONN_MEMORY_GROW 1151
+#define WT_STAT_CONN_MEMORY_GROW 1157
/*! connection: pthread mutex condition wait calls */
-#define WT_STAT_CONN_COND_WAIT 1152
+#define WT_STAT_CONN_COND_WAIT 1158
/*! connection: pthread mutex shared lock read-lock calls */
-#define WT_STAT_CONN_RWLOCK_READ 1153
+#define WT_STAT_CONN_RWLOCK_READ 1159
/*! connection: pthread mutex shared lock write-lock calls */
-#define WT_STAT_CONN_RWLOCK_WRITE 1154
+#define WT_STAT_CONN_RWLOCK_WRITE 1160
/*! connection: total fsync I/Os */
-#define WT_STAT_CONN_FSYNC_IO 1155
+#define WT_STAT_CONN_FSYNC_IO 1161
/*! connection: total read I/Os */
-#define WT_STAT_CONN_READ_IO 1156
+#define WT_STAT_CONN_READ_IO 1162
/*! connection: total write I/Os */
-#define WT_STAT_CONN_WRITE_IO 1157
+#define WT_STAT_CONN_WRITE_IO 1163
/*! cursor: cached cursor count */
-#define WT_STAT_CONN_CURSOR_CACHED_COUNT 1158
+#define WT_STAT_CONN_CURSOR_CACHED_COUNT 1164
/*! cursor: cursor bulk loaded cursor insert calls */
-#define WT_STAT_CONN_CURSOR_INSERT_BULK 1159
+#define WT_STAT_CONN_CURSOR_INSERT_BULK 1165
/*! cursor: cursor close calls that result in cache */
-#define WT_STAT_CONN_CURSOR_CACHE 1160
+#define WT_STAT_CONN_CURSOR_CACHE 1166
/*! cursor: cursor create calls */
-#define WT_STAT_CONN_CURSOR_CREATE 1161
+#define WT_STAT_CONN_CURSOR_CREATE 1167
/*! cursor: cursor insert calls */
-#define WT_STAT_CONN_CURSOR_INSERT 1162
+#define WT_STAT_CONN_CURSOR_INSERT 1168
/*! cursor: cursor insert key and value bytes */
-#define WT_STAT_CONN_CURSOR_INSERT_BYTES 1163
+#define WT_STAT_CONN_CURSOR_INSERT_BYTES 1169
/*! cursor: cursor modify calls */
-#define WT_STAT_CONN_CURSOR_MODIFY 1164
+#define WT_STAT_CONN_CURSOR_MODIFY 1170
/*! cursor: cursor modify key and value bytes affected */
-#define WT_STAT_CONN_CURSOR_MODIFY_BYTES 1165
+#define WT_STAT_CONN_CURSOR_MODIFY_BYTES 1171
/*! cursor: cursor modify value bytes modified */
-#define WT_STAT_CONN_CURSOR_MODIFY_BYTES_TOUCH 1166
+#define WT_STAT_CONN_CURSOR_MODIFY_BYTES_TOUCH 1172
/*! cursor: cursor next calls */
-#define WT_STAT_CONN_CURSOR_NEXT 1167
+#define WT_STAT_CONN_CURSOR_NEXT 1173
/*! cursor: cursor operation restarted */
-#define WT_STAT_CONN_CURSOR_RESTART 1168
+#define WT_STAT_CONN_CURSOR_RESTART 1174
/*! cursor: cursor prev calls */
-#define WT_STAT_CONN_CURSOR_PREV 1169
+#define WT_STAT_CONN_CURSOR_PREV 1175
/*! cursor: cursor remove calls */
-#define WT_STAT_CONN_CURSOR_REMOVE 1170
+#define WT_STAT_CONN_CURSOR_REMOVE 1176
/*! cursor: cursor remove key bytes removed */
-#define WT_STAT_CONN_CURSOR_REMOVE_BYTES 1171
+#define WT_STAT_CONN_CURSOR_REMOVE_BYTES 1177
/*! cursor: cursor reserve calls */
-#define WT_STAT_CONN_CURSOR_RESERVE 1172
+#define WT_STAT_CONN_CURSOR_RESERVE 1178
/*! cursor: cursor reset calls */
-#define WT_STAT_CONN_CURSOR_RESET 1173
+#define WT_STAT_CONN_CURSOR_RESET 1179
/*! cursor: cursor search calls */
-#define WT_STAT_CONN_CURSOR_SEARCH 1174
+#define WT_STAT_CONN_CURSOR_SEARCH 1180
/*! cursor: cursor search near calls */
-#define WT_STAT_CONN_CURSOR_SEARCH_NEAR 1175
+#define WT_STAT_CONN_CURSOR_SEARCH_NEAR 1181
/*! cursor: cursor sweep buckets */
-#define WT_STAT_CONN_CURSOR_SWEEP_BUCKETS 1176
+#define WT_STAT_CONN_CURSOR_SWEEP_BUCKETS 1182
/*! cursor: cursor sweep cursors closed */
-#define WT_STAT_CONN_CURSOR_SWEEP_CLOSED 1177
+#define WT_STAT_CONN_CURSOR_SWEEP_CLOSED 1183
/*! cursor: cursor sweep cursors examined */
-#define WT_STAT_CONN_CURSOR_SWEEP_EXAMINED 1178
+#define WT_STAT_CONN_CURSOR_SWEEP_EXAMINED 1184
/*! cursor: cursor sweeps */
-#define WT_STAT_CONN_CURSOR_SWEEP 1179
+#define WT_STAT_CONN_CURSOR_SWEEP 1185
/*! cursor: cursor truncate calls */
-#define WT_STAT_CONN_CURSOR_TRUNCATE 1180
+#define WT_STAT_CONN_CURSOR_TRUNCATE 1186
/*! cursor: cursor update calls */
-#define WT_STAT_CONN_CURSOR_UPDATE 1181
+#define WT_STAT_CONN_CURSOR_UPDATE 1187
/*! cursor: cursor update key and value bytes */
-#define WT_STAT_CONN_CURSOR_UPDATE_BYTES 1182
+#define WT_STAT_CONN_CURSOR_UPDATE_BYTES 1188
/*! cursor: cursor update value size change */
-#define WT_STAT_CONN_CURSOR_UPDATE_BYTES_CHANGED 1183
+#define WT_STAT_CONN_CURSOR_UPDATE_BYTES_CHANGED 1189
/*! cursor: cursors reused from cache */
-#define WT_STAT_CONN_CURSOR_REOPEN 1184
+#define WT_STAT_CONN_CURSOR_REOPEN 1190
/*! cursor: open cursor count */
-#define WT_STAT_CONN_CURSOR_OPEN_COUNT 1185
+#define WT_STAT_CONN_CURSOR_OPEN_COUNT 1191
/*! data-handle: connection data handle size */
-#define WT_STAT_CONN_DH_CONN_HANDLE_SIZE 1186
+#define WT_STAT_CONN_DH_CONN_HANDLE_SIZE 1192
/*! data-handle: connection data handles currently active */
-#define WT_STAT_CONN_DH_CONN_HANDLE_COUNT 1187
+#define WT_STAT_CONN_DH_CONN_HANDLE_COUNT 1193
/*! data-handle: connection sweep candidate became referenced */
-#define WT_STAT_CONN_DH_SWEEP_REF 1188
+#define WT_STAT_CONN_DH_SWEEP_REF 1194
/*! data-handle: connection sweep dhandles closed */
-#define WT_STAT_CONN_DH_SWEEP_CLOSE 1189
+#define WT_STAT_CONN_DH_SWEEP_CLOSE 1195
/*! data-handle: connection sweep dhandles removed from hash list */
-#define WT_STAT_CONN_DH_SWEEP_REMOVE 1190
+#define WT_STAT_CONN_DH_SWEEP_REMOVE 1196
/*! data-handle: connection sweep time-of-death sets */
-#define WT_STAT_CONN_DH_SWEEP_TOD 1191
+#define WT_STAT_CONN_DH_SWEEP_TOD 1197
/*! data-handle: connection sweeps */
-#define WT_STAT_CONN_DH_SWEEPS 1192
+#define WT_STAT_CONN_DH_SWEEPS 1198
/*! data-handle: session dhandles swept */
-#define WT_STAT_CONN_DH_SESSION_HANDLES 1193
+#define WT_STAT_CONN_DH_SESSION_HANDLES 1199
/*! data-handle: session sweep attempts */
-#define WT_STAT_CONN_DH_SESSION_SWEEPS 1194
+#define WT_STAT_CONN_DH_SESSION_SWEEPS 1200
/*! lock: checkpoint lock acquisitions */
-#define WT_STAT_CONN_LOCK_CHECKPOINT_COUNT 1195
+#define WT_STAT_CONN_LOCK_CHECKPOINT_COUNT 1201
/*! lock: checkpoint lock application thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_APPLICATION 1196
+#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_APPLICATION 1202
/*! lock: checkpoint lock internal thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_INTERNAL 1197
+#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_INTERNAL 1203
/*!
* lock: commit timestamp queue lock application thread time waiting
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_WAIT_APPLICATION 1198
+#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_WAIT_APPLICATION 1204
/*! lock: commit timestamp queue lock internal thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_WAIT_INTERNAL 1199
+#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_WAIT_INTERNAL 1205
/*! lock: commit timestamp queue read lock acquisitions */
-#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_READ_COUNT 1200
+#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_READ_COUNT 1206
/*! lock: commit timestamp queue write lock acquisitions */
-#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_WRITE_COUNT 1201
+#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_WRITE_COUNT 1207
/*! lock: dhandle lock application thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_APPLICATION 1202
+#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_APPLICATION 1208
/*! lock: dhandle lock internal thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_INTERNAL 1203
+#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_INTERNAL 1209
/*! lock: dhandle read lock acquisitions */
-#define WT_STAT_CONN_LOCK_DHANDLE_READ_COUNT 1204
+#define WT_STAT_CONN_LOCK_DHANDLE_READ_COUNT 1210
/*! lock: dhandle write lock acquisitions */
-#define WT_STAT_CONN_LOCK_DHANDLE_WRITE_COUNT 1205
+#define WT_STAT_CONN_LOCK_DHANDLE_WRITE_COUNT 1211
/*! lock: metadata lock acquisitions */
-#define WT_STAT_CONN_LOCK_METADATA_COUNT 1206
+#define WT_STAT_CONN_LOCK_METADATA_COUNT 1212
/*! lock: metadata lock application thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_METADATA_WAIT_APPLICATION 1207
+#define WT_STAT_CONN_LOCK_METADATA_WAIT_APPLICATION 1213
/*! lock: metadata lock internal thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_METADATA_WAIT_INTERNAL 1208
+#define WT_STAT_CONN_LOCK_METADATA_WAIT_INTERNAL 1214
/*!
* lock: read timestamp queue lock application thread time waiting
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_APPLICATION 1209
+#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_APPLICATION 1215
/*! lock: read timestamp queue lock internal thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_INTERNAL 1210
+#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_INTERNAL 1216
/*! lock: read timestamp queue read lock acquisitions */
-#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_READ_COUNT 1211
+#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_READ_COUNT 1217
/*! lock: read timestamp queue write lock acquisitions */
-#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WRITE_COUNT 1212
+#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WRITE_COUNT 1218
/*! lock: schema lock acquisitions */
-#define WT_STAT_CONN_LOCK_SCHEMA_COUNT 1213
+#define WT_STAT_CONN_LOCK_SCHEMA_COUNT 1219
/*! lock: schema lock application thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_APPLICATION 1214
+#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_APPLICATION 1220
/*! lock: schema lock internal thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_INTERNAL 1215
+#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_INTERNAL 1221
/*!
* lock: table lock application thread time waiting for the table lock
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_TABLE_WAIT_APPLICATION 1216
+#define WT_STAT_CONN_LOCK_TABLE_WAIT_APPLICATION 1222
/*!
* lock: table lock internal thread time waiting for the table lock
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_TABLE_WAIT_INTERNAL 1217
+#define WT_STAT_CONN_LOCK_TABLE_WAIT_INTERNAL 1223
/*! lock: table read lock acquisitions */
-#define WT_STAT_CONN_LOCK_TABLE_READ_COUNT 1218
+#define WT_STAT_CONN_LOCK_TABLE_READ_COUNT 1224
/*! lock: table write lock acquisitions */
-#define WT_STAT_CONN_LOCK_TABLE_WRITE_COUNT 1219
+#define WT_STAT_CONN_LOCK_TABLE_WRITE_COUNT 1225
/*! lock: txn global lock application thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_APPLICATION 1220
+#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_APPLICATION 1226
/*! lock: txn global lock internal thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_INTERNAL 1221
+#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_INTERNAL 1227
/*! lock: txn global read lock acquisitions */
-#define WT_STAT_CONN_LOCK_TXN_GLOBAL_READ_COUNT 1222
+#define WT_STAT_CONN_LOCK_TXN_GLOBAL_READ_COUNT 1228
/*! lock: txn global write lock acquisitions */
-#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WRITE_COUNT 1223
+#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WRITE_COUNT 1229
/*! log: busy returns attempting to switch slots */
-#define WT_STAT_CONN_LOG_SLOT_SWITCH_BUSY 1224
+#define WT_STAT_CONN_LOG_SLOT_SWITCH_BUSY 1230
/*! log: force archive time sleeping (usecs) */
-#define WT_STAT_CONN_LOG_FORCE_ARCHIVE_SLEEP 1225
+#define WT_STAT_CONN_LOG_FORCE_ARCHIVE_SLEEP 1231
/*! log: log bytes of payload data */
-#define WT_STAT_CONN_LOG_BYTES_PAYLOAD 1226
+#define WT_STAT_CONN_LOG_BYTES_PAYLOAD 1232
/*! log: log bytes written */
-#define WT_STAT_CONN_LOG_BYTES_WRITTEN 1227
+#define WT_STAT_CONN_LOG_BYTES_WRITTEN 1233
/*! log: log files manually zero-filled */
-#define WT_STAT_CONN_LOG_ZERO_FILLS 1228
+#define WT_STAT_CONN_LOG_ZERO_FILLS 1234
/*! log: log flush operations */
-#define WT_STAT_CONN_LOG_FLUSH 1229
+#define WT_STAT_CONN_LOG_FLUSH 1235
/*! log: log force write operations */
-#define WT_STAT_CONN_LOG_FORCE_WRITE 1230
+#define WT_STAT_CONN_LOG_FORCE_WRITE 1236
/*! log: log force write operations skipped */
-#define WT_STAT_CONN_LOG_FORCE_WRITE_SKIP 1231
+#define WT_STAT_CONN_LOG_FORCE_WRITE_SKIP 1237
/*! log: log records compressed */
-#define WT_STAT_CONN_LOG_COMPRESS_WRITES 1232
+#define WT_STAT_CONN_LOG_COMPRESS_WRITES 1238
/*! log: log records not compressed */
-#define WT_STAT_CONN_LOG_COMPRESS_WRITE_FAILS 1233
+#define WT_STAT_CONN_LOG_COMPRESS_WRITE_FAILS 1239
/*! log: log records too small to compress */
-#define WT_STAT_CONN_LOG_COMPRESS_SMALL 1234
+#define WT_STAT_CONN_LOG_COMPRESS_SMALL 1240
/*! log: log release advances write LSN */
-#define WT_STAT_CONN_LOG_RELEASE_WRITE_LSN 1235
+#define WT_STAT_CONN_LOG_RELEASE_WRITE_LSN 1241
/*! log: log scan operations */
-#define WT_STAT_CONN_LOG_SCANS 1236
+#define WT_STAT_CONN_LOG_SCANS 1242
/*! log: log scan records requiring two reads */
-#define WT_STAT_CONN_LOG_SCAN_REREADS 1237
+#define WT_STAT_CONN_LOG_SCAN_REREADS 1243
/*! log: log server thread advances write LSN */
-#define WT_STAT_CONN_LOG_WRITE_LSN 1238
+#define WT_STAT_CONN_LOG_WRITE_LSN 1244
/*! log: log server thread write LSN walk skipped */
-#define WT_STAT_CONN_LOG_WRITE_LSN_SKIP 1239
+#define WT_STAT_CONN_LOG_WRITE_LSN_SKIP 1245
/*! log: log sync operations */
-#define WT_STAT_CONN_LOG_SYNC 1240
+#define WT_STAT_CONN_LOG_SYNC 1246
/*! log: log sync time duration (usecs) */
-#define WT_STAT_CONN_LOG_SYNC_DURATION 1241
+#define WT_STAT_CONN_LOG_SYNC_DURATION 1247
/*! log: log sync_dir operations */
-#define WT_STAT_CONN_LOG_SYNC_DIR 1242
+#define WT_STAT_CONN_LOG_SYNC_DIR 1248
/*! log: log sync_dir time duration (usecs) */
-#define WT_STAT_CONN_LOG_SYNC_DIR_DURATION 1243
+#define WT_STAT_CONN_LOG_SYNC_DIR_DURATION 1249
/*! log: log write operations */
-#define WT_STAT_CONN_LOG_WRITES 1244
+#define WT_STAT_CONN_LOG_WRITES 1250
/*! log: logging bytes consolidated */
-#define WT_STAT_CONN_LOG_SLOT_CONSOLIDATED 1245
+#define WT_STAT_CONN_LOG_SLOT_CONSOLIDATED 1251
/*! log: maximum log file size */
-#define WT_STAT_CONN_LOG_MAX_FILESIZE 1246
+#define WT_STAT_CONN_LOG_MAX_FILESIZE 1252
/*! log: number of pre-allocated log files to create */
-#define WT_STAT_CONN_LOG_PREALLOC_MAX 1247
+#define WT_STAT_CONN_LOG_PREALLOC_MAX 1253
/*! log: pre-allocated log files not ready and missed */
-#define WT_STAT_CONN_LOG_PREALLOC_MISSED 1248
+#define WT_STAT_CONN_LOG_PREALLOC_MISSED 1254
/*! log: pre-allocated log files prepared */
-#define WT_STAT_CONN_LOG_PREALLOC_FILES 1249
+#define WT_STAT_CONN_LOG_PREALLOC_FILES 1255
/*! log: pre-allocated log files used */
-#define WT_STAT_CONN_LOG_PREALLOC_USED 1250
+#define WT_STAT_CONN_LOG_PREALLOC_USED 1256
/*! log: records processed by log scan */
-#define WT_STAT_CONN_LOG_SCAN_RECORDS 1251
+#define WT_STAT_CONN_LOG_SCAN_RECORDS 1257
/*! log: slot close lost race */
-#define WT_STAT_CONN_LOG_SLOT_CLOSE_RACE 1252
+#define WT_STAT_CONN_LOG_SLOT_CLOSE_RACE 1258
/*! log: slot close unbuffered waits */
-#define WT_STAT_CONN_LOG_SLOT_CLOSE_UNBUF 1253
+#define WT_STAT_CONN_LOG_SLOT_CLOSE_UNBUF 1259
/*! log: slot closures */
-#define WT_STAT_CONN_LOG_SLOT_CLOSES 1254
+#define WT_STAT_CONN_LOG_SLOT_CLOSES 1260
/*! log: slot join atomic update races */
-#define WT_STAT_CONN_LOG_SLOT_RACES 1255
+#define WT_STAT_CONN_LOG_SLOT_RACES 1261
/*! log: slot join calls atomic updates raced */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_RACE 1256
+#define WT_STAT_CONN_LOG_SLOT_YIELD_RACE 1262
/*! log: slot join calls did not yield */
-#define WT_STAT_CONN_LOG_SLOT_IMMEDIATE 1257
+#define WT_STAT_CONN_LOG_SLOT_IMMEDIATE 1263
/*! log: slot join calls found active slot closed */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_CLOSE 1258
+#define WT_STAT_CONN_LOG_SLOT_YIELD_CLOSE 1264
/*! log: slot join calls slept */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_SLEEP 1259
+#define WT_STAT_CONN_LOG_SLOT_YIELD_SLEEP 1265
/*! log: slot join calls yielded */
-#define WT_STAT_CONN_LOG_SLOT_YIELD 1260
+#define WT_STAT_CONN_LOG_SLOT_YIELD 1266
/*! log: slot join found active slot closed */
-#define WT_STAT_CONN_LOG_SLOT_ACTIVE_CLOSED 1261
+#define WT_STAT_CONN_LOG_SLOT_ACTIVE_CLOSED 1267
/*! log: slot joins yield time (usecs) */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_DURATION 1262
+#define WT_STAT_CONN_LOG_SLOT_YIELD_DURATION 1268
/*! log: slot transitions unable to find free slot */
-#define WT_STAT_CONN_LOG_SLOT_NO_FREE_SLOTS 1263
+#define WT_STAT_CONN_LOG_SLOT_NO_FREE_SLOTS 1269
/*! log: slot unbuffered writes */
-#define WT_STAT_CONN_LOG_SLOT_UNBUFFERED 1264
+#define WT_STAT_CONN_LOG_SLOT_UNBUFFERED 1270
/*! log: total in-memory size of compressed records */
-#define WT_STAT_CONN_LOG_COMPRESS_MEM 1265
+#define WT_STAT_CONN_LOG_COMPRESS_MEM 1271
/*! log: total log buffer size */
-#define WT_STAT_CONN_LOG_BUFFER_SIZE 1266
+#define WT_STAT_CONN_LOG_BUFFER_SIZE 1272
/*! log: total size of compressed records */
-#define WT_STAT_CONN_LOG_COMPRESS_LEN 1267
+#define WT_STAT_CONN_LOG_COMPRESS_LEN 1273
/*! log: written slots coalesced */
-#define WT_STAT_CONN_LOG_SLOT_COALESCED 1268
+#define WT_STAT_CONN_LOG_SLOT_COALESCED 1274
/*! log: yields waiting for previous log file close */
-#define WT_STAT_CONN_LOG_CLOSE_YIELDS 1269
+#define WT_STAT_CONN_LOG_CLOSE_YIELDS 1275
/*! perf: file system read latency histogram (bucket 1) - 10-49ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT50 1270
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT50 1276
/*! perf: file system read latency histogram (bucket 2) - 50-99ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT100 1271
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT100 1277
/*! perf: file system read latency histogram (bucket 3) - 100-249ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT250 1272
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT250 1278
/*! perf: file system read latency histogram (bucket 4) - 250-499ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT500 1273
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT500 1279
/*! perf: file system read latency histogram (bucket 5) - 500-999ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT1000 1274
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT1000 1280
/*! perf: file system read latency histogram (bucket 6) - 1000ms+ */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_GT1000 1275
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_GT1000 1281
/*! perf: file system write latency histogram (bucket 1) - 10-49ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT50 1276
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT50 1282
/*! perf: file system write latency histogram (bucket 2) - 50-99ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT100 1277
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT100 1283
/*! perf: file system write latency histogram (bucket 3) - 100-249ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT250 1278
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT250 1284
/*! perf: file system write latency histogram (bucket 4) - 250-499ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT500 1279
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT500 1285
/*! perf: file system write latency histogram (bucket 5) - 500-999ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT1000 1280
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT1000 1286
/*! perf: file system write latency histogram (bucket 6) - 1000ms+ */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_GT1000 1281
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_GT1000 1287
/*! perf: operation read latency histogram (bucket 1) - 100-249us */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT250 1282
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT250 1288
/*! perf: operation read latency histogram (bucket 2) - 250-499us */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT500 1283
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT500 1289
/*! perf: operation read latency histogram (bucket 3) - 500-999us */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT1000 1284
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT1000 1290
/*! perf: operation read latency histogram (bucket 4) - 1000-9999us */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT10000 1285
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT10000 1291
/*! perf: operation read latency histogram (bucket 5) - 10000us+ */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_GT10000 1286
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_GT10000 1292
/*! perf: operation write latency histogram (bucket 1) - 100-249us */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT250 1287
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT250 1293
/*! perf: operation write latency histogram (bucket 2) - 250-499us */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT500 1288
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT500 1294
/*! perf: operation write latency histogram (bucket 3) - 500-999us */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT1000 1289
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT1000 1295
/*! perf: operation write latency histogram (bucket 4) - 1000-9999us */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT10000 1290
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT10000 1296
/*! perf: operation write latency histogram (bucket 5) - 10000us+ */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_GT10000 1291
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_GT10000 1297
/*! reconciliation: fast-path pages deleted */
-#define WT_STAT_CONN_REC_PAGE_DELETE_FAST 1292
+#define WT_STAT_CONN_REC_PAGE_DELETE_FAST 1298
/*! reconciliation: page reconciliation calls */
-#define WT_STAT_CONN_REC_PAGES 1293
+#define WT_STAT_CONN_REC_PAGES 1299
/*! reconciliation: page reconciliation calls for eviction */
-#define WT_STAT_CONN_REC_PAGES_EVICTION 1294
+#define WT_STAT_CONN_REC_PAGES_EVICTION 1300
/*! reconciliation: pages deleted */
-#define WT_STAT_CONN_REC_PAGE_DELETE 1295
+#define WT_STAT_CONN_REC_PAGE_DELETE 1301
/*! reconciliation: split bytes currently awaiting free */
-#define WT_STAT_CONN_REC_SPLIT_STASHED_BYTES 1296
+#define WT_STAT_CONN_REC_SPLIT_STASHED_BYTES 1302
/*! reconciliation: split objects currently awaiting free */
-#define WT_STAT_CONN_REC_SPLIT_STASHED_OBJECTS 1297
+#define WT_STAT_CONN_REC_SPLIT_STASHED_OBJECTS 1303
/*! session: open session count */
-#define WT_STAT_CONN_SESSION_OPEN 1298
+#define WT_STAT_CONN_SESSION_OPEN 1304
/*! session: session query timestamp calls */
-#define WT_STAT_CONN_SESSION_QUERY_TS 1299
+#define WT_STAT_CONN_SESSION_QUERY_TS 1305
/*! session: table alter failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_ALTER_FAIL 1300
+#define WT_STAT_CONN_SESSION_TABLE_ALTER_FAIL 1306
/*! session: table alter successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_ALTER_SUCCESS 1301
+#define WT_STAT_CONN_SESSION_TABLE_ALTER_SUCCESS 1307
/*! session: table alter unchanged and skipped */
-#define WT_STAT_CONN_SESSION_TABLE_ALTER_SKIP 1302
+#define WT_STAT_CONN_SESSION_TABLE_ALTER_SKIP 1308
/*! session: table compact failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_COMPACT_FAIL 1303
+#define WT_STAT_CONN_SESSION_TABLE_COMPACT_FAIL 1309
/*! session: table compact successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_COMPACT_SUCCESS 1304
+#define WT_STAT_CONN_SESSION_TABLE_COMPACT_SUCCESS 1310
/*! session: table create failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_CREATE_FAIL 1305
+#define WT_STAT_CONN_SESSION_TABLE_CREATE_FAIL 1311
/*! session: table create successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_CREATE_SUCCESS 1306
+#define WT_STAT_CONN_SESSION_TABLE_CREATE_SUCCESS 1312
/*! session: table drop failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_DROP_FAIL 1307
+#define WT_STAT_CONN_SESSION_TABLE_DROP_FAIL 1313
/*! session: table drop successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_DROP_SUCCESS 1308
+#define WT_STAT_CONN_SESSION_TABLE_DROP_SUCCESS 1314
/*! session: table import failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_IMPORT_FAIL 1309
+#define WT_STAT_CONN_SESSION_TABLE_IMPORT_FAIL 1315
/*! session: table import successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_IMPORT_SUCCESS 1310
+#define WT_STAT_CONN_SESSION_TABLE_IMPORT_SUCCESS 1316
/*! session: table rebalance failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_REBALANCE_FAIL 1311
+#define WT_STAT_CONN_SESSION_TABLE_REBALANCE_FAIL 1317
/*! session: table rebalance successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_REBALANCE_SUCCESS 1312
+#define WT_STAT_CONN_SESSION_TABLE_REBALANCE_SUCCESS 1318
/*! session: table rename failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_RENAME_FAIL 1313
+#define WT_STAT_CONN_SESSION_TABLE_RENAME_FAIL 1319
/*! session: table rename successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_RENAME_SUCCESS 1314
+#define WT_STAT_CONN_SESSION_TABLE_RENAME_SUCCESS 1320
/*! session: table salvage failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_FAIL 1315
+#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_FAIL 1321
/*! session: table salvage successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_SUCCESS 1316
+#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_SUCCESS 1322
/*! session: table truncate failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_FAIL 1317
+#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_FAIL 1323
/*! session: table truncate successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_SUCCESS 1318
+#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_SUCCESS 1324
/*! session: table verify failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_VERIFY_FAIL 1319
+#define WT_STAT_CONN_SESSION_TABLE_VERIFY_FAIL 1325
/*! session: table verify successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_VERIFY_SUCCESS 1320
+#define WT_STAT_CONN_SESSION_TABLE_VERIFY_SUCCESS 1326
/*! thread-state: active filesystem fsync calls */
-#define WT_STAT_CONN_THREAD_FSYNC_ACTIVE 1321
+#define WT_STAT_CONN_THREAD_FSYNC_ACTIVE 1327
/*! thread-state: active filesystem read calls */
-#define WT_STAT_CONN_THREAD_READ_ACTIVE 1322
+#define WT_STAT_CONN_THREAD_READ_ACTIVE 1328
/*! thread-state: active filesystem write calls */
-#define WT_STAT_CONN_THREAD_WRITE_ACTIVE 1323
+#define WT_STAT_CONN_THREAD_WRITE_ACTIVE 1329
/*! thread-yield: application thread time evicting (usecs) */
-#define WT_STAT_CONN_APPLICATION_EVICT_TIME 1324
+#define WT_STAT_CONN_APPLICATION_EVICT_TIME 1330
/*! thread-yield: application thread time waiting for cache (usecs) */
-#define WT_STAT_CONN_APPLICATION_CACHE_TIME 1325
+#define WT_STAT_CONN_APPLICATION_CACHE_TIME 1331
/*!
* thread-yield: connection close blocked waiting for transaction state
* stabilization
*/
-#define WT_STAT_CONN_TXN_RELEASE_BLOCKED 1326
+#define WT_STAT_CONN_TXN_RELEASE_BLOCKED 1332
/*! thread-yield: connection close yielded for lsm manager shutdown */
-#define WT_STAT_CONN_CONN_CLOSE_BLOCKED_LSM 1327
+#define WT_STAT_CONN_CONN_CLOSE_BLOCKED_LSM 1333
/*! thread-yield: data handle lock yielded */
-#define WT_STAT_CONN_DHANDLE_LOCK_BLOCKED 1328
+#define WT_STAT_CONN_DHANDLE_LOCK_BLOCKED 1334
/*!
* thread-yield: get reference for page index and slot time sleeping
* (usecs)
*/
-#define WT_STAT_CONN_PAGE_INDEX_SLOT_REF_BLOCKED 1329
+#define WT_STAT_CONN_PAGE_INDEX_SLOT_REF_BLOCKED 1335
/*! thread-yield: log server sync yielded for log write */
-#define WT_STAT_CONN_LOG_SERVER_SYNC_BLOCKED 1330
+#define WT_STAT_CONN_LOG_SERVER_SYNC_BLOCKED 1336
/*! thread-yield: page access yielded due to prepare state change */
-#define WT_STAT_CONN_PREPARED_TRANSITION_BLOCKED_PAGE 1331
+#define WT_STAT_CONN_PREPARED_TRANSITION_BLOCKED_PAGE 1337
/*! thread-yield: page acquire busy blocked */
-#define WT_STAT_CONN_PAGE_BUSY_BLOCKED 1332
+#define WT_STAT_CONN_PAGE_BUSY_BLOCKED 1338
/*! thread-yield: page acquire eviction blocked */
-#define WT_STAT_CONN_PAGE_FORCIBLE_EVICT_BLOCKED 1333
+#define WT_STAT_CONN_PAGE_FORCIBLE_EVICT_BLOCKED 1339
/*! thread-yield: page acquire locked blocked */
-#define WT_STAT_CONN_PAGE_LOCKED_BLOCKED 1334
+#define WT_STAT_CONN_PAGE_LOCKED_BLOCKED 1340
/*! thread-yield: page acquire read blocked */
-#define WT_STAT_CONN_PAGE_READ_BLOCKED 1335
+#define WT_STAT_CONN_PAGE_READ_BLOCKED 1341
/*! thread-yield: page acquire time sleeping (usecs) */
-#define WT_STAT_CONN_PAGE_SLEEP 1336
+#define WT_STAT_CONN_PAGE_SLEEP 1342
/*!
* thread-yield: page delete rollback time sleeping for state change
* (usecs)
*/
-#define WT_STAT_CONN_PAGE_DEL_ROLLBACK_BLOCKED 1337
+#define WT_STAT_CONN_PAGE_DEL_ROLLBACK_BLOCKED 1343
/*! thread-yield: page reconciliation yielded due to child modification */
-#define WT_STAT_CONN_CHILD_MODIFY_BLOCKED_PAGE 1338
+#define WT_STAT_CONN_CHILD_MODIFY_BLOCKED_PAGE 1344
/*! transaction: Number of prepared updates */
-#define WT_STAT_CONN_TXN_PREPARED_UPDATES_COUNT 1339
+#define WT_STAT_CONN_TXN_PREPARED_UPDATES_COUNT 1345
/*! transaction: Number of prepared updates added to cache overflow */
-#define WT_STAT_CONN_TXN_PREPARED_UPDATES_LOOKASIDE_INSERTS 1340
+#define WT_STAT_CONN_TXN_PREPARED_UPDATES_LOOKASIDE_INSERTS 1346
/*! transaction: Number of prepared updates resolved */
-#define WT_STAT_CONN_TXN_PREPARED_UPDATES_RESOLVED 1341
+#define WT_STAT_CONN_TXN_PREPARED_UPDATES_RESOLVED 1347
/*! transaction: commit timestamp queue entries walked */
-#define WT_STAT_CONN_TXN_COMMIT_QUEUE_WALKED 1342
+#define WT_STAT_CONN_TXN_COMMIT_QUEUE_WALKED 1348
/*! transaction: commit timestamp queue insert to empty */
-#define WT_STAT_CONN_TXN_COMMIT_QUEUE_EMPTY 1343
+#define WT_STAT_CONN_TXN_COMMIT_QUEUE_EMPTY 1349
/*! transaction: commit timestamp queue inserts to head */
-#define WT_STAT_CONN_TXN_COMMIT_QUEUE_HEAD 1344
+#define WT_STAT_CONN_TXN_COMMIT_QUEUE_HEAD 1350
/*! transaction: commit timestamp queue inserts total */
-#define WT_STAT_CONN_TXN_COMMIT_QUEUE_INSERTS 1345
+#define WT_STAT_CONN_TXN_COMMIT_QUEUE_INSERTS 1351
/*! transaction: commit timestamp queue length */
-#define WT_STAT_CONN_TXN_COMMIT_QUEUE_LEN 1346
+#define WT_STAT_CONN_TXN_COMMIT_QUEUE_LEN 1352
/*! transaction: number of named snapshots created */
-#define WT_STAT_CONN_TXN_SNAPSHOTS_CREATED 1347
+#define WT_STAT_CONN_TXN_SNAPSHOTS_CREATED 1353
/*! transaction: number of named snapshots dropped */
-#define WT_STAT_CONN_TXN_SNAPSHOTS_DROPPED 1348
+#define WT_STAT_CONN_TXN_SNAPSHOTS_DROPPED 1354
/*! transaction: prepared transactions */
-#define WT_STAT_CONN_TXN_PREPARE 1349
+#define WT_STAT_CONN_TXN_PREPARE 1355
/*! transaction: prepared transactions committed */
-#define WT_STAT_CONN_TXN_PREPARE_COMMIT 1350
+#define WT_STAT_CONN_TXN_PREPARE_COMMIT 1356
/*! transaction: prepared transactions currently active */
-#define WT_STAT_CONN_TXN_PREPARE_ACTIVE 1351
+#define WT_STAT_CONN_TXN_PREPARE_ACTIVE 1357
/*! transaction: prepared transactions rolled back */
-#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK 1352
+#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK 1358
/*! transaction: query timestamp calls */
-#define WT_STAT_CONN_TXN_QUERY_TS 1353
+#define WT_STAT_CONN_TXN_QUERY_TS 1359
/*! transaction: read timestamp queue entries walked */
-#define WT_STAT_CONN_TXN_READ_QUEUE_WALKED 1354
+#define WT_STAT_CONN_TXN_READ_QUEUE_WALKED 1360
/*! transaction: read timestamp queue insert to empty */
-#define WT_STAT_CONN_TXN_READ_QUEUE_EMPTY 1355
+#define WT_STAT_CONN_TXN_READ_QUEUE_EMPTY 1361
/*! transaction: read timestamp queue inserts to head */
-#define WT_STAT_CONN_TXN_READ_QUEUE_HEAD 1356
+#define WT_STAT_CONN_TXN_READ_QUEUE_HEAD 1362
/*! transaction: read timestamp queue inserts total */
-#define WT_STAT_CONN_TXN_READ_QUEUE_INSERTS 1357
+#define WT_STAT_CONN_TXN_READ_QUEUE_INSERTS 1363
/*! transaction: read timestamp queue length */
-#define WT_STAT_CONN_TXN_READ_QUEUE_LEN 1358
+#define WT_STAT_CONN_TXN_READ_QUEUE_LEN 1364
/*! transaction: rollback to stable calls */
-#define WT_STAT_CONN_TXN_ROLLBACK_TO_STABLE 1359
+#define WT_STAT_CONN_TXN_ROLLBACK_TO_STABLE 1365
/*! transaction: rollback to stable updates aborted */
-#define WT_STAT_CONN_TXN_ROLLBACK_UPD_ABORTED 1360
+#define WT_STAT_CONN_TXN_ROLLBACK_UPD_ABORTED 1366
/*! transaction: rollback to stable updates removed from cache overflow */
-#define WT_STAT_CONN_TXN_ROLLBACK_LAS_REMOVED 1361
+#define WT_STAT_CONN_TXN_ROLLBACK_LAS_REMOVED 1367
/*! transaction: set timestamp calls */
-#define WT_STAT_CONN_TXN_SET_TS 1362
+#define WT_STAT_CONN_TXN_SET_TS 1368
/*! transaction: set timestamp commit calls */
-#define WT_STAT_CONN_TXN_SET_TS_COMMIT 1363
+#define WT_STAT_CONN_TXN_SET_TS_COMMIT 1369
/*! transaction: set timestamp commit updates */
-#define WT_STAT_CONN_TXN_SET_TS_COMMIT_UPD 1364
+#define WT_STAT_CONN_TXN_SET_TS_COMMIT_UPD 1370
/*! transaction: set timestamp oldest calls */
-#define WT_STAT_CONN_TXN_SET_TS_OLDEST 1365
+#define WT_STAT_CONN_TXN_SET_TS_OLDEST 1371
/*! transaction: set timestamp oldest updates */
-#define WT_STAT_CONN_TXN_SET_TS_OLDEST_UPD 1366
+#define WT_STAT_CONN_TXN_SET_TS_OLDEST_UPD 1372
/*! transaction: set timestamp stable calls */
-#define WT_STAT_CONN_TXN_SET_TS_STABLE 1367
+#define WT_STAT_CONN_TXN_SET_TS_STABLE 1373
/*! transaction: set timestamp stable updates */
-#define WT_STAT_CONN_TXN_SET_TS_STABLE_UPD 1368
+#define WT_STAT_CONN_TXN_SET_TS_STABLE_UPD 1374
/*! transaction: transaction begins */
-#define WT_STAT_CONN_TXN_BEGIN 1369
+#define WT_STAT_CONN_TXN_BEGIN 1375
/*! transaction: transaction checkpoint currently running */
-#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1370
+#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1376
/*! transaction: transaction checkpoint generation */
-#define WT_STAT_CONN_TXN_CHECKPOINT_GENERATION 1371
+#define WT_STAT_CONN_TXN_CHECKPOINT_GENERATION 1377
/*! transaction: transaction checkpoint max time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MAX 1372
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MAX 1378
/*! transaction: transaction checkpoint min time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MIN 1373
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MIN 1379
/*! transaction: transaction checkpoint most recent time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_RECENT 1374
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_RECENT 1380
/*! transaction: transaction checkpoint scrub dirty target */
-#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TARGET 1375
+#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TARGET 1381
/*! transaction: transaction checkpoint scrub time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TIME 1376
+#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TIME 1382
/*! transaction: transaction checkpoint total time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_TOTAL 1377
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_TOTAL 1383
/*! transaction: transaction checkpoints */
-#define WT_STAT_CONN_TXN_CHECKPOINT 1378
+#define WT_STAT_CONN_TXN_CHECKPOINT 1384
/*!
* transaction: transaction checkpoints skipped because database was
* clean
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_SKIPPED 1379
+#define WT_STAT_CONN_TXN_CHECKPOINT_SKIPPED 1385
/*! transaction: transaction failures due to cache overflow */
-#define WT_STAT_CONN_TXN_FAIL_CACHE 1380
+#define WT_STAT_CONN_TXN_FAIL_CACHE 1386
/*!
* transaction: transaction fsync calls for checkpoint after allocating
* the transaction ID
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST 1381
+#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST 1387
/*!
* transaction: transaction fsync duration for checkpoint after
* allocating the transaction ID (usecs)
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST_DURATION 1382
+#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST_DURATION 1388
/*! transaction: transaction range of IDs currently pinned */
-#define WT_STAT_CONN_TXN_PINNED_RANGE 1383
+#define WT_STAT_CONN_TXN_PINNED_RANGE 1389
/*! transaction: transaction range of IDs currently pinned by a checkpoint */
-#define WT_STAT_CONN_TXN_PINNED_CHECKPOINT_RANGE 1384
+#define WT_STAT_CONN_TXN_PINNED_CHECKPOINT_RANGE 1390
/*!
* transaction: transaction range of IDs currently pinned by named
* snapshots
*/
-#define WT_STAT_CONN_TXN_PINNED_SNAPSHOT_RANGE 1385
+#define WT_STAT_CONN_TXN_PINNED_SNAPSHOT_RANGE 1391
/*! transaction: transaction range of timestamps currently pinned */
-#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP 1386
+#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP 1392
/*! transaction: transaction range of timestamps pinned by a checkpoint */
-#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_CHECKPOINT 1387
+#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_CHECKPOINT 1393
/*!
* transaction: transaction range of timestamps pinned by the oldest
* active read timestamp
*/
-#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_READER 1388
+#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_READER 1394
/*!
* transaction: transaction range of timestamps pinned by the oldest
* timestamp
*/
-#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_OLDEST 1389
+#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_OLDEST 1395
/*! transaction: transaction read timestamp of the oldest active reader */
-#define WT_STAT_CONN_TXN_TIMESTAMP_OLDEST_ACTIVE_READ 1390
+#define WT_STAT_CONN_TXN_TIMESTAMP_OLDEST_ACTIVE_READ 1396
/*! transaction: transaction sync calls */
-#define WT_STAT_CONN_TXN_SYNC 1391
+#define WT_STAT_CONN_TXN_SYNC 1397
/*! transaction: transactions committed */
-#define WT_STAT_CONN_TXN_COMMIT 1392
+#define WT_STAT_CONN_TXN_COMMIT 1398
/*! transaction: transactions rolled back */
-#define WT_STAT_CONN_TXN_ROLLBACK 1393
+#define WT_STAT_CONN_TXN_ROLLBACK 1399
/*! transaction: update conflicts */
-#define WT_STAT_CONN_TXN_UPDATE_CONFLICT 1394
+#define WT_STAT_CONN_TXN_UPDATE_CONFLICT 1400
/*!
* @}
diff --git a/src/third_party/wiredtiger/src/lsm/lsm_manager.c b/src/third_party/wiredtiger/src/lsm/lsm_manager.c
index d1eceaf2afd..aa5f08034d4 100644
--- a/src/third_party/wiredtiger/src/lsm/lsm_manager.c
+++ b/src/third_party/wiredtiger/src/lsm/lsm_manager.c
@@ -339,12 +339,6 @@ __wt_lsm_manager_destroy(WT_SESSION_IMPL *session)
}
WT_STAT_CONN_INCRV(session, lsm_work_units_discarded, removed);
- /* Free resources that are allocated in connection initialize */
- __wt_spin_destroy(session, &manager->switch_lock);
- __wt_spin_destroy(session, &manager->app_lock);
- __wt_spin_destroy(session, &manager->manager_lock);
- __wt_cond_destroy(session, &manager->work_cond);
-
return (ret);
}
diff --git a/src/third_party/wiredtiger/src/support/hazard.c b/src/third_party/wiredtiger/src/support/hazard.c
index c52075e9602..a44f349e3e5 100644
--- a/src/third_party/wiredtiger/src/support/hazard.c
+++ b/src/third_party/wiredtiger/src/support/hazard.c
@@ -328,6 +328,10 @@ __wt_hazard_check(WT_SESSION_IMPL *session,
WT_SESSION_IMPL *s;
uint32_t i, j, hazard_inuse, max, session_cnt, walk_cnt;
+ /* If a file can never be evicted, hazard pointers aren't required. */
+ if (F_ISSET(S2BT(session), WT_BTREE_IN_MEMORY))
+ return (NULL);
+
conn = S2C(session);
WT_STAT_CONN_INCR(session, cache_hazard_checks);
diff --git a/src/third_party/wiredtiger/src/support/stat.c b/src/third_party/wiredtiger/src/support/stat.c
index e76930c3b38..95e04dd7d7c 100644
--- a/src/third_party/wiredtiger/src/support/stat.c
+++ b/src/third_party/wiredtiger/src/support/stat.c
@@ -827,6 +827,9 @@ static const char * const __stats_connection_desc[] = {
"cache: eviction server evicting pages",
"cache: eviction server slept, because we did not make progress with eviction",
"cache: eviction server unable to reach eviction goal",
+ "cache: eviction server waiting for a leaf page",
+ "cache: eviction server waiting for an internal page sleep (usec)",
+ "cache: eviction server waiting for an internal page yields",
"cache: eviction state",
"cache: eviction walk target pages histogram - 0-9",
"cache: eviction walk target pages histogram - 10-31",
@@ -845,11 +848,17 @@ static const char * const __stats_connection_desc[] = {
"cache: eviction worker thread evicting pages",
"cache: eviction worker thread removed",
"cache: eviction worker thread stable number",
- "cache: failed eviction of pages that exceeded the in-memory maximum count",
- "cache: failed eviction of pages that exceeded the in-memory maximum time (usecs)",
"cache: files with active eviction walks",
"cache: files with new eviction walks started",
"cache: force re-tuning of eviction workers once in a while",
+ "cache: forced eviction - pages evicted that were clean count",
+ "cache: forced eviction - pages evicted that were clean time (usecs)",
+ "cache: forced eviction - pages evicted that were dirty count",
+ "cache: forced eviction - pages evicted that were dirty time (usecs)",
+ "cache: forced eviction - pages selected because of too many deleted items count",
+ "cache: forced eviction - pages selected count",
+ "cache: forced eviction - pages selected unable to be evicted count",
+ "cache: forced eviction - pages selected unable to be evicted time",
"cache: hazard pointer blocked page eviction",
"cache: hazard pointer check calls",
"cache: hazard pointer check entries walked",
@@ -868,12 +877,9 @@ static const char * const __stats_connection_desc[] = {
"cache: page split during eviction deepened the tree",
"cache: page written requiring cache overflow records",
"cache: pages currently held in the cache",
- "cache: pages evicted because they exceeded the in-memory maximum count",
- "cache: pages evicted because they exceeded the in-memory maximum time (usecs)",
- "cache: pages evicted because they had chains of deleted items count",
- "cache: pages evicted because they had chains of deleted items time (usecs)",
"cache: pages evicted by application threads",
"cache: pages queued for eviction",
+ "cache: pages queued for eviction post lru sorting",
"cache: pages queued for urgent eviction",
"cache: pages queued for urgent eviction during walk",
"cache: pages read into cache",
@@ -1264,6 +1270,9 @@ __wt_stat_connection_clear_single(WT_CONNECTION_STATS *stats)
stats->cache_eviction_server_evicting = 0;
stats->cache_eviction_server_slept = 0;
stats->cache_eviction_slow = 0;
+ stats->cache_eviction_walk_leaf_notfound = 0;
+ stats->cache_eviction_walk_internal_wait = 0;
+ stats->cache_eviction_walk_internal_yield = 0;
/* not clearing cache_eviction_state */
stats->cache_eviction_target_page_lt10 = 0;
stats->cache_eviction_target_page_lt32 = 0;
@@ -1282,11 +1291,17 @@ __wt_stat_connection_clear_single(WT_CONNECTION_STATS *stats)
stats->cache_eviction_worker_evicting = 0;
stats->cache_eviction_worker_removed = 0;
/* not clearing cache_eviction_stable_state_workers */
- stats->cache_eviction_force_fail = 0;
- stats->cache_eviction_force_fail_time = 0;
/* not clearing cache_eviction_walks_active */
stats->cache_eviction_walks_started = 0;
stats->cache_eviction_force_retune = 0;
+ stats->cache_eviction_force_clean = 0;
+ stats->cache_eviction_force_clean_time = 0;
+ stats->cache_eviction_force_dirty = 0;
+ stats->cache_eviction_force_dirty_time = 0;
+ stats->cache_eviction_force_delete = 0;
+ stats->cache_eviction_force = 0;
+ stats->cache_eviction_force_fail = 0;
+ stats->cache_eviction_force_fail_time = 0;
stats->cache_eviction_hazard = 0;
stats->cache_hazard_checks = 0;
stats->cache_hazard_walks = 0;
@@ -1305,12 +1320,9 @@ __wt_stat_connection_clear_single(WT_CONNECTION_STATS *stats)
stats->cache_eviction_deepen = 0;
stats->cache_write_lookaside = 0;
/* not clearing cache_pages_inuse */
- stats->cache_eviction_force = 0;
- stats->cache_eviction_force_time = 0;
- stats->cache_eviction_force_delete = 0;
- stats->cache_eviction_force_delete_time = 0;
stats->cache_eviction_app = 0;
stats->cache_eviction_pages_queued = 0;
+ stats->cache_eviction_pages_queued_post_lru = 0;
stats->cache_eviction_pages_queued_urgent = 0;
stats->cache_eviction_pages_queued_oldest = 0;
stats->cache_read = 0;
@@ -1704,6 +1716,12 @@ __wt_stat_connection_aggregate(
to->cache_eviction_server_slept +=
WT_STAT_READ(from, cache_eviction_server_slept);
to->cache_eviction_slow += WT_STAT_READ(from, cache_eviction_slow);
+ to->cache_eviction_walk_leaf_notfound +=
+ WT_STAT_READ(from, cache_eviction_walk_leaf_notfound);
+ to->cache_eviction_walk_internal_wait +=
+ WT_STAT_READ(from, cache_eviction_walk_internal_wait);
+ to->cache_eviction_walk_internal_yield +=
+ WT_STAT_READ(from, cache_eviction_walk_internal_yield);
to->cache_eviction_state += WT_STAT_READ(from, cache_eviction_state);
to->cache_eviction_target_page_lt10 +=
WT_STAT_READ(from, cache_eviction_target_page_lt10);
@@ -1739,16 +1757,27 @@ __wt_stat_connection_aggregate(
WT_STAT_READ(from, cache_eviction_worker_removed);
to->cache_eviction_stable_state_workers +=
WT_STAT_READ(from, cache_eviction_stable_state_workers);
- to->cache_eviction_force_fail +=
- WT_STAT_READ(from, cache_eviction_force_fail);
- to->cache_eviction_force_fail_time +=
- WT_STAT_READ(from, cache_eviction_force_fail_time);
to->cache_eviction_walks_active +=
WT_STAT_READ(from, cache_eviction_walks_active);
to->cache_eviction_walks_started +=
WT_STAT_READ(from, cache_eviction_walks_started);
to->cache_eviction_force_retune +=
WT_STAT_READ(from, cache_eviction_force_retune);
+ to->cache_eviction_force_clean +=
+ WT_STAT_READ(from, cache_eviction_force_clean);
+ to->cache_eviction_force_clean_time +=
+ WT_STAT_READ(from, cache_eviction_force_clean_time);
+ to->cache_eviction_force_dirty +=
+ WT_STAT_READ(from, cache_eviction_force_dirty);
+ to->cache_eviction_force_dirty_time +=
+ WT_STAT_READ(from, cache_eviction_force_dirty_time);
+ to->cache_eviction_force_delete +=
+ WT_STAT_READ(from, cache_eviction_force_delete);
+ to->cache_eviction_force += WT_STAT_READ(from, cache_eviction_force);
+ to->cache_eviction_force_fail +=
+ WT_STAT_READ(from, cache_eviction_force_fail);
+ to->cache_eviction_force_fail_time +=
+ WT_STAT_READ(from, cache_eviction_force_fail_time);
to->cache_eviction_hazard +=
WT_STAT_READ(from, cache_eviction_hazard);
to->cache_hazard_checks += WT_STAT_READ(from, cache_hazard_checks);
@@ -1777,16 +1806,11 @@ __wt_stat_connection_aggregate(
to->cache_write_lookaside +=
WT_STAT_READ(from, cache_write_lookaside);
to->cache_pages_inuse += WT_STAT_READ(from, cache_pages_inuse);
- to->cache_eviction_force += WT_STAT_READ(from, cache_eviction_force);
- to->cache_eviction_force_time +=
- WT_STAT_READ(from, cache_eviction_force_time);
- to->cache_eviction_force_delete +=
- WT_STAT_READ(from, cache_eviction_force_delete);
- to->cache_eviction_force_delete_time +=
- WT_STAT_READ(from, cache_eviction_force_delete_time);
to->cache_eviction_app += WT_STAT_READ(from, cache_eviction_app);
to->cache_eviction_pages_queued +=
WT_STAT_READ(from, cache_eviction_pages_queued);
+ to->cache_eviction_pages_queued_post_lru +=
+ WT_STAT_READ(from, cache_eviction_pages_queued_post_lru);
to->cache_eviction_pages_queued_urgent +=
WT_STAT_READ(from, cache_eviction_pages_queued_urgent);
to->cache_eviction_pages_queued_oldest +=
diff --git a/src/third_party/wiredtiger/test/checkpoint/test_checkpoint.h b/src/third_party/wiredtiger/test/checkpoint/test_checkpoint.h
index 3d4375cd137..087c2d4be19 100644
--- a/src/third_party/wiredtiger/test/checkpoint/test_checkpoint.h
+++ b/src/third_party/wiredtiger/test/checkpoint/test_checkpoint.h
@@ -62,7 +62,7 @@ typedef struct {
int nworkers; /* Number workers configured */
int ntables; /* Number tables configured */
int ntables_created; /* Number tables opened */
- int running; /* Whether to stop */
+ volatile int running; /* Whether to stop */
int status; /* Exit status */
bool sweep_stress; /* Sweep stress test */
u_int ts; /* Current timestamp */
diff --git a/src/third_party/wiredtiger/test/evergreen.yml b/src/third_party/wiredtiger/test/evergreen.yml
index 55ea2d810fa..447691f24e2 100755
--- a/src/third_party/wiredtiger/test/evergreen.yml
+++ b/src/third_party/wiredtiger/test/evergreen.yml
@@ -1327,7 +1327,7 @@ buildvariants:
display_name: Little-endian (x86)
run_on:
- ubuntu1404-test
- batchtime: 1440 # 1 day
+ batchtime: 10080 # 7 days
expansions:
smp_command: -j $(grep -c ^processor /proc/cpuinfo)
configure_env_vars: PATH=/opt/mongodbtoolchain/v3/bin:$PATH
@@ -1344,7 +1344,7 @@ buildvariants:
- enterprise
run_on:
- ubuntu1604-zseries-small
- batchtime: 1440 # 1 day
+ batchtime: 10080 # 7 days
expansions:
smp_command: -j $(grep -c ^processor /proc/cpuinfo)
configure_env_vars: PATH=/opt/mongodbtoolchain/v3/bin:$PATH