diff options
Diffstat (limited to 'src/third_party/wiredtiger')
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 |