summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Chen <luke.chen@mongodb.com>2022-12-05 15:46:27 +1100
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-12-05 05:22:18 +0000
commitc044e693a57e4ae702e72acac8001a90dadda27f (patch)
tree54f6b0ce4074a32ab9f13afd94798d8cf3e37536
parent62c6074e3342169809d5c01fd62452c082667c88 (diff)
downloadmongo-c044e693a57e4ae702e72acac8001a90dadda27f.tar.gz
Import wiredtiger: 7b279fd981e787fd9fe294a706aec8a0fbaa200b from branch mongodb-6.0
ref: 34136bb791..7b279fd981 for: 6.0.4 WT-9268 Delay deletion the history store record to reconciliation
-rw-r--r--src/third_party/wiredtiger/dist/stat_data.py3
-rw-r--r--src/third_party/wiredtiger/import.data2
-rw-r--r--src/third_party/wiredtiger/src/btree/row_modify.c4
-rw-r--r--src/third_party/wiredtiger/src/cursor/cur_hs.c2
-rw-r--r--src/third_party/wiredtiger/src/history/hs_rec.c119
-rw-r--r--src/third_party/wiredtiger/src/include/btmem.h1
-rw-r--r--src/third_party/wiredtiger/src/include/stat.h4
-rw-r--r--src/third_party/wiredtiger/src/include/wiredtiger.in1260
-rw-r--r--src/third_party/wiredtiger/src/reconcile/rec_visibility.c52
-rw-r--r--src/third_party/wiredtiger/src/support/stat.c21
-rw-r--r--src/third_party/wiredtiger/src/txn/txn.c157
-rw-r--r--src/third_party/wiredtiger/test/suite/test_prepare20.py16
-rw-r--r--src/third_party/wiredtiger/test/suite/test_prepare21.py135
13 files changed, 1011 insertions, 765 deletions
diff --git a/src/third_party/wiredtiger/dist/stat_data.py b/src/third_party/wiredtiger/dist/stat_data.py
index b02b8512af5..573b7f633f7 100644
--- a/src/third_party/wiredtiger/dist/stat_data.py
+++ b/src/third_party/wiredtiger/dist/stat_data.py
@@ -590,8 +590,6 @@ conn_stats = [
TxnStat('txn_prepare_active', 'prepared transactions currently active'),
TxnStat('txn_prepare_commit', 'prepared transactions committed'),
TxnStat('txn_prepare_rollback', 'prepared transactions rolled back'),
- TxnStat('txn_prepare_rollback_do_not_remove_hs_update', 'prepared transactions rolled back and do not remove the history store entry'),
- TxnStat('txn_prepare_rollback_fix_hs_update_with_ckpt_reserved_txnid', 'prepared transactions rolled back and fix the history store entry with checkpoint reserved transaction id'),
TxnStat('txn_prepared_updates_committed', 'Number of prepared updates committed'),
TxnStat('txn_prepared_updates', 'Number of prepared updates'),
TxnStat('txn_prepared_updates_key_repeated', 'Number of prepared updates repeated on the same key'),
@@ -811,6 +809,7 @@ conn_dsrc_stats = [
CacheStat('cache_eviction_blocked_ooo_checkpoint_race_2', 'eviction gave up due to detecting an out of order tombstone ahead of the selected on disk update'),
CacheStat('cache_eviction_blocked_ooo_checkpoint_race_3', 'eviction gave up due to detecting an out of order tombstone ahead of the selected on disk update after validating the update chain'),
CacheStat('cache_eviction_blocked_ooo_checkpoint_race_4', 'eviction gave up due to detecting out of order timestamps on the update chain after the selected on disk update'),
+ CacheStat('cache_eviction_blocked_remove_hs_race_with_checkpoint', 'eviction gave up due to needing to remove a record from the history store but checkpoint is running'),
CacheStat('cache_eviction_clean', 'unmodified pages evicted'),
CacheStat('cache_eviction_deepen', 'page split during eviction deepened the tree'),
CacheStat('cache_eviction_dirty', 'modified pages evicted'),
diff --git a/src/third_party/wiredtiger/import.data b/src/third_party/wiredtiger/import.data
index 72cf077a775..7f3c8903b07 100644
--- a/src/third_party/wiredtiger/import.data
+++ b/src/third_party/wiredtiger/import.data
@@ -2,5 +2,5 @@
"vendor": "wiredtiger",
"github": "wiredtiger/wiredtiger.git",
"branch": "mongodb-6.0",
- "commit": "34136bb7914272cc2d9705744ae28bdb373a8781"
+ "commit": "7b279fd981e787fd9fe294a706aec8a0fbaa200b"
}
diff --git a/src/third_party/wiredtiger/src/btree/row_modify.c b/src/third_party/wiredtiger/src/btree/row_modify.c
index c7a2e76e1de..53195c95cdd 100644
--- a/src/third_party/wiredtiger/src/btree/row_modify.c
+++ b/src/third_party/wiredtiger/src/btree/row_modify.c
@@ -384,6 +384,10 @@ __wt_update_obsolete_check(
if (upd->start_ts != WT_TS_NONE && upd->start_ts >= oldest && upd->start_ts < stable)
++upd_unstable;
}
+
+ /* Cannot truncate the updates if we need to remove the updates from the history store. */
+ if (F_ISSET(upd, WT_UPDATE_TO_DELETE_FROM_HS))
+ first = NULL;
}
/*
diff --git a/src/third_party/wiredtiger/src/cursor/cur_hs.c b/src/third_party/wiredtiger/src/cursor/cur_hs.c
index 3acdabcb451..6d828176d53 100644
--- a/src/third_party/wiredtiger/src/cursor/cur_hs.c
+++ b/src/third_party/wiredtiger/src/cursor/cur_hs.c
@@ -914,6 +914,8 @@ __curhs_insert(WT_CURSOR *cursor)
* update as the update after the tombstone.
*/
if (WT_TIME_WINDOW_HAS_STOP(&hs_cursor->time_window)) {
+ /* We should not see a tombstone with max transaction id. */
+ WT_ASSERT(session, hs_cursor->time_window.stop_txn != WT_TXN_MAX);
/*
* Insert a delete record to represent stop time point for the actual record to be inserted.
* Set the stop time point as the commit time point of the history store delete record.
diff --git a/src/third_party/wiredtiger/src/history/hs_rec.c b/src/third_party/wiredtiger/src/history/hs_rec.c
index aefc1f31764..2514ec4fa90 100644
--- a/src/third_party/wiredtiger/src/history/hs_rec.c
+++ b/src/third_party/wiredtiger/src/history/hs_rec.c
@@ -61,6 +61,65 @@ __hs_verbose_cache_stats(WT_SESSION_IMPL *session, WT_BTREE *btree)
}
/*
+ * __hs_delete_record --
+ * Delete the update left in the history store
+ */
+static int
+__hs_delete_record(WT_SESSION_IMPL *session, WT_CURSOR *hs_cursor, WT_ITEM *key,
+ WT_UPDATE *delete_upd, WT_UPDATE *delete_tombstone)
+{
+ WT_DECL_RET;
+ bool hs_read_committed;
+#ifdef HAVE_DIAGNOSTIC
+ WT_TIME_WINDOW *hs_tw;
+#endif
+
+ hs_read_committed = F_ISSET(hs_cursor, WT_CURSTD_HS_READ_COMMITTED);
+ F_SET(hs_cursor, WT_CURSTD_HS_READ_COMMITTED);
+
+ /* No need to delete from the history store if it is already obsolete. */
+ if (delete_tombstone != NULL && __wt_txn_upd_visible_all(session, delete_tombstone)) {
+ ret = 0;
+ goto done;
+ }
+
+ hs_cursor->set_key(hs_cursor, 4, S2BT(session)->id, key, WT_TS_MAX, UINT64_MAX);
+ WT_ERR_NOTFOUND_OK(__wt_curhs_search_near_before(session, hs_cursor), true);
+ /* It's possible the value in the history store becomes obsolete concurrently. */
+ if (ret == WT_NOTFOUND) {
+ WT_ASSERT(
+ session, delete_tombstone != NULL && __wt_txn_upd_visible_all(session, delete_tombstone));
+ ret = 0;
+ goto done;
+ }
+
+#ifdef HAVE_DIAGNOSTIC
+ __wt_hs_upd_time_window(hs_cursor, &hs_tw);
+ WT_ASSERT(session, hs_tw->start_txn == WT_TXN_NONE || hs_tw->start_txn == delete_upd->txnid);
+ WT_ASSERT(session, hs_tw->start_ts == WT_TS_NONE || hs_tw->start_ts == delete_upd->start_ts);
+ WT_ASSERT(session,
+ hs_tw->durable_start_ts == WT_TS_NONE || hs_tw->durable_start_ts == delete_upd->durable_ts);
+ if (delete_tombstone != NULL) {
+ WT_ASSERT(session, hs_tw->stop_txn == delete_tombstone->txnid);
+ WT_ASSERT(session, hs_tw->stop_ts == delete_tombstone->start_ts);
+ WT_ASSERT(session, hs_tw->durable_stop_ts == delete_tombstone->durable_ts);
+ } else
+ WT_ASSERT(session, !WT_TIME_WINDOW_HAS_STOP(hs_tw));
+#endif
+
+ WT_ERR(hs_cursor->remove(hs_cursor));
+done:
+ if (delete_tombstone != NULL)
+ F_CLR(delete_tombstone, WT_UPDATE_TO_DELETE_FROM_HS | WT_UPDATE_HS);
+ F_CLR(delete_upd, WT_UPDATE_TO_DELETE_FROM_HS | WT_UPDATE_HS);
+
+err:
+ if (!hs_read_committed)
+ F_CLR(hs_cursor, WT_CURSTD_HS_READ_COMMITTED);
+ return (ret);
+}
+
+/*
* __hs_insert_record --
* A helper function to insert the record into the history store including stop time point.
*/
@@ -313,7 +372,8 @@ __wt_hs_insert_updates(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_MULTI *mult
WT_UPDATE_VECTOR out_of_order_ts_updates;
WT_SAVE_UPD *list;
WT_UPDATE *first_globally_visible_upd, *fix_ts_upd, *min_ts_upd, *out_of_order_ts_upd;
- WT_UPDATE *newest_hs, *non_aborted_upd, *oldest_upd, *prev_upd, *ref_upd, *tombstone, *upd;
+ WT_UPDATE *delete_tombstone, *delete_upd, *newest_hs, *non_aborted_upd, *oldest_upd, *prev_upd,
+ *ref_upd, *tombstone, *upd;
WT_TIME_WINDOW tw;
wt_off_t hs_size;
uint64_t insert_cnt, max_hs_size, modify_cnt;
@@ -362,19 +422,6 @@ __wt_hs_insert_updates(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_MULTI *mult
if (list->onpage_upd == NULL)
continue;
- /* Skip aborted updates. */
- for (upd = list->onpage_upd->next; upd != NULL && upd->txnid == WT_TXN_ABORTED;
- upd = upd->next)
- ;
-
- /* No update to insert to history store. */
- if (upd == NULL)
- continue;
-
- /* Updates have already been inserted to the history store. */
- if (F_ISSET(upd, WT_UPDATE_HS))
- continue;
-
/* History store table key component: source key. */
switch (r->page->type) {
case WT_PAGE_COL_FIX:
@@ -399,6 +446,7 @@ __wt_hs_insert_updates(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_MULTI *mult
newest_hs = first_globally_visible_upd = min_ts_upd = out_of_order_ts_upd = NULL;
ref_upd = list->onpage_upd;
+ delete_tombstone = delete_upd = NULL;
__wt_update_vector_clear(&out_of_order_ts_updates);
__wt_update_vector_clear(&updates);
@@ -410,6 +458,41 @@ __wt_hs_insert_updates(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_MULTI *mult
(WT_STREQ(btree->value_format, "S") || WT_STREQ(btree->value_format, "u"));
/*
+ * Delete the update that is both on the update chain and the history store from the history
+ * store. Otherwise, we will trigger out of order fix when the update is inserted to the
+ * history store again.
+ */
+ for (upd = list->onpage_tombstone != NULL ? list->onpage_tombstone : list->onpage_upd;
+ upd != NULL; upd = upd->next) {
+ if (upd->txnid == WT_TXN_ABORTED)
+ continue;
+
+ if (F_ISSET(upd, WT_UPDATE_TO_DELETE_FROM_HS)) {
+ if (upd->type == WT_UPDATE_TOMBSTONE)
+ delete_tombstone = upd;
+ else {
+ delete_upd = upd;
+ WT_ERR(
+ __hs_delete_record(session, hs_cursor, key, delete_upd, delete_tombstone));
+ break;
+ }
+ }
+ }
+
+ /* Skip aborted updates. */
+ for (upd = list->onpage_upd->next; upd != NULL && upd->txnid == WT_TXN_ABORTED;
+ upd = upd->next)
+ ;
+
+ /* No update to insert to history store. */
+ if (upd == NULL)
+ continue;
+
+ /* Updates have already been inserted to the history store. */
+ if (F_ISSET(upd, WT_UPDATE_HS))
+ continue;
+
+ /*
* The algorithm assumes the oldest update on the update chain in memory is either a full
* update or a tombstone.
*
@@ -443,6 +526,9 @@ __wt_hs_insert_updates(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_MULTI *mult
if (upd->txnid == WT_TXN_ABORTED)
continue;
+ /* We must have deleted any update left in the history store. */
+ WT_ASSERT(session, !F_ISSET(upd, WT_UPDATE_TO_DELETE_FROM_HS));
+
non_aborted_upd = upd;
/* Detect out of order timestamp update. */
@@ -661,11 +747,6 @@ __wt_hs_insert_updates(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_MULTI *mult
continue;
}
- /* We should never write a prepared update to the history store. */
- WT_ASSERT(session,
- upd->prepare_state != WT_PREPARE_INPROGRESS &&
- upd->prepare_state != WT_PREPARE_LOCKED);
-
/*
* Ensure all the updates inserted to the history store are committed.
*
diff --git a/src/third_party/wiredtiger/src/include/btmem.h b/src/third_party/wiredtiger/src/include/btmem.h
index c22422dabf5..3c8e63059fc 100644
--- a/src/third_party/wiredtiger/src/include/btmem.h
+++ b/src/third_party/wiredtiger/src/include/btmem.h
@@ -1176,6 +1176,7 @@ struct __wt_update {
#define WT_UPDATE_RESTORED_FAST_TRUNCATE 0x10u /* Fast truncate instantiation */
#define WT_UPDATE_RESTORED_FROM_DS 0x20u /* Update restored from data store. */
#define WT_UPDATE_RESTORED_FROM_HS 0x40u /* Update restored from history store. */
+#define WT_UPDATE_TO_DELETE_FROM_HS 0x80u /* Update needs to be deleted from history store */
/* AUTOMATIC FLAG VALUE GENERATION STOP 8 */
uint8_t flags;
diff --git a/src/third_party/wiredtiger/src/include/stat.h b/src/third_party/wiredtiger/src/include/stat.h
index 9d1cf91fe3e..cae50e4a9d5 100644
--- a/src/third_party/wiredtiger/src/include/stat.h
+++ b/src/third_party/wiredtiger/src/include/stat.h
@@ -400,6 +400,7 @@ struct __wt_connection_stats {
int64_t cache_eviction_blocked_ooo_checkpoint_race_2;
int64_t cache_eviction_blocked_ooo_checkpoint_race_3;
int64_t cache_eviction_blocked_ooo_checkpoint_race_4;
+ int64_t cache_eviction_blocked_remove_hs_race_with_checkpoint;
int64_t cache_eviction_walk_passes;
int64_t cache_eviction_queue_empty;
int64_t cache_eviction_queue_not_empty;
@@ -781,8 +782,6 @@ struct __wt_connection_stats {
int64_t txn_prepare_commit;
int64_t txn_prepare_active;
int64_t txn_prepare_rollback;
- int64_t txn_prepare_rollback_do_not_remove_hs_update;
- int64_t txn_prepare_rollback_fix_hs_update_with_ckpt_reserved_txnid;
int64_t txn_query_ts;
int64_t txn_read_race_prepare_update;
int64_t txn_rts;
@@ -911,6 +910,7 @@ struct __wt_dsrc_stats {
int64_t cache_eviction_blocked_ooo_checkpoint_race_2;
int64_t cache_eviction_blocked_ooo_checkpoint_race_3;
int64_t cache_eviction_blocked_ooo_checkpoint_race_4;
+ int64_t cache_eviction_blocked_remove_hs_race_with_checkpoint;
int64_t cache_eviction_walk_passes;
int64_t cache_eviction_target_page_lt10;
int64_t cache_eviction_target_page_lt32;
diff --git a/src/third_party/wiredtiger/src/include/wiredtiger.in b/src/third_party/wiredtiger/src/include/wiredtiger.in
index a7a6d4737ab..930aa8e9fd1 100644
--- a/src/third_party/wiredtiger/src/include/wiredtiger.in
+++ b/src/third_party/wiredtiger/src/include/wiredtiger.in
@@ -5325,1091 +5325,1086 @@ extern int wiredtiger_extension_terminate(WT_CONNECTION *connection);
* the update chain after the selected on disk update
*/
#define WT_STAT_CONN_CACHE_EVICTION_BLOCKED_OOO_CHECKPOINT_RACE_4 1067
+/*!
+ * cache: eviction gave up due to needing to remove a record from the
+ * history store but checkpoint is running
+ */
+#define WT_STAT_CONN_CACHE_EVICTION_BLOCKED_REMOVE_HS_RACE_WITH_CHECKPOINT 1068
/*! cache: eviction passes of a file */
-#define WT_STAT_CONN_CACHE_EVICTION_WALK_PASSES 1068
+#define WT_STAT_CONN_CACHE_EVICTION_WALK_PASSES 1069
/*! cache: eviction server candidate queue empty when topping up */
-#define WT_STAT_CONN_CACHE_EVICTION_QUEUE_EMPTY 1069
+#define WT_STAT_CONN_CACHE_EVICTION_QUEUE_EMPTY 1070
/*! cache: eviction server candidate queue not empty when topping up */
-#define WT_STAT_CONN_CACHE_EVICTION_QUEUE_NOT_EMPTY 1070
+#define WT_STAT_CONN_CACHE_EVICTION_QUEUE_NOT_EMPTY 1071
/*! cache: eviction server evicting pages */
-#define WT_STAT_CONN_CACHE_EVICTION_SERVER_EVICTING 1071
+#define WT_STAT_CONN_CACHE_EVICTION_SERVER_EVICTING 1072
/*!
* cache: eviction server slept, because we did not make progress with
* eviction
*/
-#define WT_STAT_CONN_CACHE_EVICTION_SERVER_SLEPT 1072
+#define WT_STAT_CONN_CACHE_EVICTION_SERVER_SLEPT 1073
/*! cache: eviction server unable to reach eviction goal */
-#define WT_STAT_CONN_CACHE_EVICTION_SLOW 1073
+#define WT_STAT_CONN_CACHE_EVICTION_SLOW 1074
/*! cache: eviction server waiting for a leaf page */
-#define WT_STAT_CONN_CACHE_EVICTION_WALK_LEAF_NOTFOUND 1074
+#define WT_STAT_CONN_CACHE_EVICTION_WALK_LEAF_NOTFOUND 1075
/*! cache: eviction state */
-#define WT_STAT_CONN_CACHE_EVICTION_STATE 1075
+#define WT_STAT_CONN_CACHE_EVICTION_STATE 1076
/*!
* cache: eviction walk most recent sleeps for checkpoint handle
* gathering
*/
-#define WT_STAT_CONN_CACHE_EVICTION_WALK_SLEEPS 1076
+#define WT_STAT_CONN_CACHE_EVICTION_WALK_SLEEPS 1077
/*! cache: eviction walk target pages histogram - 0-9 */
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT10 1077
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT10 1078
/*! cache: eviction walk target pages histogram - 10-31 */
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT32 1078
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT32 1079
/*! cache: eviction walk target pages histogram - 128 and higher */
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_GE128 1079
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_GE128 1080
/*! cache: eviction walk target pages histogram - 32-63 */
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT64 1080
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT64 1081
/*! cache: eviction walk target pages histogram - 64-128 */
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT128 1081
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT128 1082
/*!
* cache: eviction walk target pages reduced due to history store cache
* pressure
*/
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_REDUCED 1082
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_REDUCED 1083
/*! cache: eviction walk target strategy both clean and dirty pages */
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_STRATEGY_BOTH_CLEAN_AND_DIRTY 1083
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_STRATEGY_BOTH_CLEAN_AND_DIRTY 1084
/*! cache: eviction walk target strategy only clean pages */
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_STRATEGY_CLEAN 1084
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_STRATEGY_CLEAN 1085
/*! cache: eviction walk target strategy only dirty pages */
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_STRATEGY_DIRTY 1085
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_STRATEGY_DIRTY 1086
/*! cache: eviction walks abandoned */
-#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ABANDONED 1086
+#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ABANDONED 1087
/*! cache: eviction walks gave up because they restarted their walk twice */
-#define WT_STAT_CONN_CACHE_EVICTION_WALKS_STOPPED 1087
+#define WT_STAT_CONN_CACHE_EVICTION_WALKS_STOPPED 1088
/*!
* 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 1088
+#define WT_STAT_CONN_CACHE_EVICTION_WALKS_GAVE_UP_NO_TARGETS 1089
/*!
* 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 1089
+#define WT_STAT_CONN_CACHE_EVICTION_WALKS_GAVE_UP_RATIO 1090
/*! cache: eviction walks reached end of tree */
-#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ENDED 1090
+#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ENDED 1091
/*! cache: eviction walks restarted */
-#define WT_STAT_CONN_CACHE_EVICTION_WALK_RESTART 1091
+#define WT_STAT_CONN_CACHE_EVICTION_WALK_RESTART 1092
/*! cache: eviction walks started from root of tree */
-#define WT_STAT_CONN_CACHE_EVICTION_WALK_FROM_ROOT 1092
+#define WT_STAT_CONN_CACHE_EVICTION_WALK_FROM_ROOT 1093
/*! cache: eviction walks started from saved location in tree */
-#define WT_STAT_CONN_CACHE_EVICTION_WALK_SAVED_POS 1093
+#define WT_STAT_CONN_CACHE_EVICTION_WALK_SAVED_POS 1094
/*! cache: eviction worker thread active */
-#define WT_STAT_CONN_CACHE_EVICTION_ACTIVE_WORKERS 1094
+#define WT_STAT_CONN_CACHE_EVICTION_ACTIVE_WORKERS 1095
/*! cache: eviction worker thread created */
-#define WT_STAT_CONN_CACHE_EVICTION_WORKER_CREATED 1095
+#define WT_STAT_CONN_CACHE_EVICTION_WORKER_CREATED 1096
/*! cache: eviction worker thread evicting pages */
-#define WT_STAT_CONN_CACHE_EVICTION_WORKER_EVICTING 1096
+#define WT_STAT_CONN_CACHE_EVICTION_WORKER_EVICTING 1097
/*! cache: eviction worker thread removed */
-#define WT_STAT_CONN_CACHE_EVICTION_WORKER_REMOVED 1097
+#define WT_STAT_CONN_CACHE_EVICTION_WORKER_REMOVED 1098
/*! cache: eviction worker thread stable number */
-#define WT_STAT_CONN_CACHE_EVICTION_STABLE_STATE_WORKERS 1098
+#define WT_STAT_CONN_CACHE_EVICTION_STABLE_STATE_WORKERS 1099
/*! cache: files with active eviction walks */
-#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ACTIVE 1099
+#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ACTIVE 1100
/*! cache: files with new eviction walks started */
-#define WT_STAT_CONN_CACHE_EVICTION_WALKS_STARTED 1100
+#define WT_STAT_CONN_CACHE_EVICTION_WALKS_STARTED 1101
/*! cache: force re-tuning of eviction workers once in a while */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_RETUNE 1101
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_RETUNE 1102
/*!
* cache: forced eviction - history store pages failed to evict while
* session has history store cursor open
*/
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_HS_FAIL 1102
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_HS_FAIL 1103
/*!
* cache: forced eviction - history store pages selected while session
* has history store cursor open
*/
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_HS 1103
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_HS 1104
/*!
* cache: forced eviction - history store pages successfully evicted
* while session has history store cursor open
*/
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_HS_SUCCESS 1104
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_HS_SUCCESS 1105
/*! cache: forced eviction - pages evicted that were clean count */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_CLEAN 1105
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_CLEAN 1106
/*! cache: forced eviction - pages evicted that were clean time (usecs) */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_CLEAN_TIME 1106
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_CLEAN_TIME 1107
/*! cache: forced eviction - pages evicted that were dirty count */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DIRTY 1107
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DIRTY 1108
/*! cache: forced eviction - pages evicted that were dirty time (usecs) */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DIRTY_TIME 1108
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DIRTY_TIME 1109
/*!
* cache: forced eviction - pages selected because of a large number of
* updates to a single item
*/
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_LONG_UPDATE_LIST 1109
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_LONG_UPDATE_LIST 1110
/*!
* cache: forced eviction - pages selected because of too many deleted
* items count
*/
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DELETE 1110
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DELETE 1111
/*! cache: forced eviction - pages selected count */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE 1111
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE 1112
/*! cache: forced eviction - pages selected unable to be evicted count */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_FAIL 1112
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_FAIL 1113
/*! cache: forced eviction - pages selected unable to be evicted time */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_FAIL_TIME 1113
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_FAIL_TIME 1114
/*! cache: hazard pointer blocked page eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_HAZARD 1114
+#define WT_STAT_CONN_CACHE_EVICTION_HAZARD 1115
/*! cache: hazard pointer check calls */
-#define WT_STAT_CONN_CACHE_HAZARD_CHECKS 1115
+#define WT_STAT_CONN_CACHE_HAZARD_CHECKS 1116
/*! cache: hazard pointer check entries walked */
-#define WT_STAT_CONN_CACHE_HAZARD_WALKS 1116
+#define WT_STAT_CONN_CACHE_HAZARD_WALKS 1117
/*! cache: hazard pointer maximum array length */
-#define WT_STAT_CONN_CACHE_HAZARD_MAX 1117
+#define WT_STAT_CONN_CACHE_HAZARD_MAX 1118
/*! cache: history store table insert calls */
-#define WT_STAT_CONN_CACHE_HS_INSERT 1118
+#define WT_STAT_CONN_CACHE_HS_INSERT 1119
/*! cache: history store table insert calls that returned restart */
-#define WT_STAT_CONN_CACHE_HS_INSERT_RESTART 1119
+#define WT_STAT_CONN_CACHE_HS_INSERT_RESTART 1120
/*! cache: history store table max on-disk size */
-#define WT_STAT_CONN_CACHE_HS_ONDISK_MAX 1120
+#define WT_STAT_CONN_CACHE_HS_ONDISK_MAX 1121
/*! cache: history store table on-disk size */
-#define WT_STAT_CONN_CACHE_HS_ONDISK 1121
+#define WT_STAT_CONN_CACHE_HS_ONDISK 1122
/*!
* cache: history store table out-of-order resolved updates that lose
* their durable timestamp
*/
-#define WT_STAT_CONN_CACHE_HS_ORDER_LOSE_DURABLE_TIMESTAMP 1122
+#define WT_STAT_CONN_CACHE_HS_ORDER_LOSE_DURABLE_TIMESTAMP 1123
/*!
* cache: history store table out-of-order updates that were fixed up by
* reinserting with the fixed timestamp
*/
-#define WT_STAT_CONN_CACHE_HS_ORDER_REINSERT 1123
+#define WT_STAT_CONN_CACHE_HS_ORDER_REINSERT 1124
/*! cache: history store table reads */
-#define WT_STAT_CONN_CACHE_HS_READ 1124
+#define WT_STAT_CONN_CACHE_HS_READ 1125
/*! cache: history store table reads missed */
-#define WT_STAT_CONN_CACHE_HS_READ_MISS 1125
+#define WT_STAT_CONN_CACHE_HS_READ_MISS 1126
/*! cache: history store table reads requiring squashed modifies */
-#define WT_STAT_CONN_CACHE_HS_READ_SQUASH 1126
+#define WT_STAT_CONN_CACHE_HS_READ_SQUASH 1127
/*!
* cache: history store table truncation by rollback to stable to remove
* an unstable update
*/
-#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_RTS_UNSTABLE 1127
+#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_RTS_UNSTABLE 1128
/*!
* cache: history store table truncation by rollback to stable to remove
* an update
*/
-#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_RTS 1128
+#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_RTS 1129
/*! cache: history store table truncation to remove an update */
-#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE 1129
+#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE 1130
/*!
* cache: history store table truncation to remove range of updates due
* to key being removed from the data page during reconciliation
*/
-#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_ONPAGE_REMOVAL 1130
+#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_ONPAGE_REMOVAL 1131
/*!
* cache: history store table truncation to remove range of updates due
* to out-of-order timestamp update on data page
*/
-#define WT_STAT_CONN_CACHE_HS_ORDER_REMOVE 1131
+#define WT_STAT_CONN_CACHE_HS_ORDER_REMOVE 1132
/*! cache: history store table writes requiring squashed modifies */
-#define WT_STAT_CONN_CACHE_HS_WRITE_SQUASH 1132
+#define WT_STAT_CONN_CACHE_HS_WRITE_SQUASH 1133
/*! cache: in-memory page passed criteria to be split */
-#define WT_STAT_CONN_CACHE_INMEM_SPLITTABLE 1133
+#define WT_STAT_CONN_CACHE_INMEM_SPLITTABLE 1134
/*! cache: in-memory page splits */
-#define WT_STAT_CONN_CACHE_INMEM_SPLIT 1134
+#define WT_STAT_CONN_CACHE_INMEM_SPLIT 1135
/*! cache: internal pages evicted */
-#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL 1135
+#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL 1136
/*! cache: internal pages queued for eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL_PAGES_QUEUED 1136
+#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL_PAGES_QUEUED 1137
/*! cache: internal pages seen by eviction walk */
-#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL_PAGES_SEEN 1137
+#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL_PAGES_SEEN 1138
/*! cache: internal pages seen by eviction walk that are already queued */
-#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL_PAGES_ALREADY_QUEUED 1138
+#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL_PAGES_ALREADY_QUEUED 1139
/*! cache: internal pages split during eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_SPLIT_INTERNAL 1139
+#define WT_STAT_CONN_CACHE_EVICTION_SPLIT_INTERNAL 1140
/*! cache: leaf pages split during eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_SPLIT_LEAF 1140
+#define WT_STAT_CONN_CACHE_EVICTION_SPLIT_LEAF 1141
/*! cache: maximum bytes configured */
-#define WT_STAT_CONN_CACHE_BYTES_MAX 1141
+#define WT_STAT_CONN_CACHE_BYTES_MAX 1142
/*! cache: maximum page size at eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_MAXIMUM_PAGE_SIZE 1142
+#define WT_STAT_CONN_CACHE_EVICTION_MAXIMUM_PAGE_SIZE 1143
/*! cache: modified pages evicted */
-#define WT_STAT_CONN_CACHE_EVICTION_DIRTY 1143
+#define WT_STAT_CONN_CACHE_EVICTION_DIRTY 1144
/*! cache: modified pages evicted by application threads */
-#define WT_STAT_CONN_CACHE_EVICTION_APP_DIRTY 1144
+#define WT_STAT_CONN_CACHE_EVICTION_APP_DIRTY 1145
/*! cache: operations timed out waiting for space in cache */
-#define WT_STAT_CONN_CACHE_TIMED_OUT_OPS 1145
+#define WT_STAT_CONN_CACHE_TIMED_OUT_OPS 1146
/*! cache: overflow pages read into cache */
-#define WT_STAT_CONN_CACHE_READ_OVERFLOW 1146
+#define WT_STAT_CONN_CACHE_READ_OVERFLOW 1147
/*! cache: page split during eviction deepened the tree */
-#define WT_STAT_CONN_CACHE_EVICTION_DEEPEN 1147
+#define WT_STAT_CONN_CACHE_EVICTION_DEEPEN 1148
/*! cache: page written requiring history store records */
-#define WT_STAT_CONN_CACHE_WRITE_HS 1148
+#define WT_STAT_CONN_CACHE_WRITE_HS 1149
/*! cache: pages currently held in the cache */
-#define WT_STAT_CONN_CACHE_PAGES_INUSE 1149
+#define WT_STAT_CONN_CACHE_PAGES_INUSE 1150
/*! cache: pages evicted by application threads */
-#define WT_STAT_CONN_CACHE_EVICTION_APP 1150
+#define WT_STAT_CONN_CACHE_EVICTION_APP 1151
/*! cache: pages evicted in parallel with checkpoint */
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_IN_PARALLEL_WITH_CHECKPOINT 1151
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_IN_PARALLEL_WITH_CHECKPOINT 1152
/*! cache: pages queued for eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED 1152
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED 1153
/*! cache: pages queued for eviction post lru sorting */
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_POST_LRU 1153
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_POST_LRU 1154
/*! cache: pages queued for urgent eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_URGENT 1154
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_URGENT 1155
/*! cache: pages queued for urgent eviction during walk */
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_OLDEST 1155
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_OLDEST 1156
/*!
* cache: pages queued for urgent eviction from history store due to high
* dirty content
*/
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_URGENT_HS_DIRTY 1156
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_URGENT_HS_DIRTY 1157
/*! cache: pages read into cache */
-#define WT_STAT_CONN_CACHE_READ 1157
+#define WT_STAT_CONN_CACHE_READ 1158
/*! cache: pages read into cache after truncate */
-#define WT_STAT_CONN_CACHE_READ_DELETED 1158
+#define WT_STAT_CONN_CACHE_READ_DELETED 1159
/*! cache: pages read into cache after truncate in prepare state */
-#define WT_STAT_CONN_CACHE_READ_DELETED_PREPARED 1159
+#define WT_STAT_CONN_CACHE_READ_DELETED_PREPARED 1160
/*! cache: pages requested from the cache */
-#define WT_STAT_CONN_CACHE_PAGES_REQUESTED 1160
+#define WT_STAT_CONN_CACHE_PAGES_REQUESTED 1161
/*! cache: pages seen by eviction walk */
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_SEEN 1161
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_SEEN 1162
/*! cache: pages seen by eviction walk that are already queued */
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_ALREADY_QUEUED 1162
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_ALREADY_QUEUED 1163
/*! cache: pages selected for eviction unable to be evicted */
-#define WT_STAT_CONN_CACHE_EVICTION_FAIL 1163
+#define WT_STAT_CONN_CACHE_EVICTION_FAIL 1164
/*!
* cache: pages selected for eviction unable to be evicted because of
* active children on an internal page
*/
-#define WT_STAT_CONN_CACHE_EVICTION_FAIL_ACTIVE_CHILDREN_ON_AN_INTERNAL_PAGE 1164
+#define WT_STAT_CONN_CACHE_EVICTION_FAIL_ACTIVE_CHILDREN_ON_AN_INTERNAL_PAGE 1165
/*!
* cache: pages selected for eviction unable to be evicted because of
* failure in reconciliation
*/
-#define WT_STAT_CONN_CACHE_EVICTION_FAIL_IN_RECONCILIATION 1165
+#define WT_STAT_CONN_CACHE_EVICTION_FAIL_IN_RECONCILIATION 1166
/*!
* cache: pages selected for eviction unable to be evicted because of
* race between checkpoint and out of order timestamps handling
*/
-#define WT_STAT_CONN_CACHE_EVICTION_FAIL_CHECKPOINT_OUT_OF_ORDER_TS 1166
+#define WT_STAT_CONN_CACHE_EVICTION_FAIL_CHECKPOINT_OUT_OF_ORDER_TS 1167
/*! cache: pages walked for eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_WALK 1167
+#define WT_STAT_CONN_CACHE_EVICTION_WALK 1168
/*! cache: pages written from cache */
-#define WT_STAT_CONN_CACHE_WRITE 1168
+#define WT_STAT_CONN_CACHE_WRITE 1169
/*! cache: pages written requiring in-memory restoration */
-#define WT_STAT_CONN_CACHE_WRITE_RESTORE 1169
+#define WT_STAT_CONN_CACHE_WRITE_RESTORE 1170
/*! cache: percentage overhead */
-#define WT_STAT_CONN_CACHE_OVERHEAD 1170
+#define WT_STAT_CONN_CACHE_OVERHEAD 1171
/*! cache: the number of times full update inserted to history store */
-#define WT_STAT_CONN_CACHE_HS_INSERT_FULL_UPDATE 1171
+#define WT_STAT_CONN_CACHE_HS_INSERT_FULL_UPDATE 1172
/*! cache: the number of times reverse modify inserted to history store */
-#define WT_STAT_CONN_CACHE_HS_INSERT_REVERSE_MODIFY 1172
+#define WT_STAT_CONN_CACHE_HS_INSERT_REVERSE_MODIFY 1173
/*! cache: tracked bytes belonging to internal pages in the cache */
-#define WT_STAT_CONN_CACHE_BYTES_INTERNAL 1173
+#define WT_STAT_CONN_CACHE_BYTES_INTERNAL 1174
/*! cache: tracked bytes belonging to leaf pages in the cache */
-#define WT_STAT_CONN_CACHE_BYTES_LEAF 1174
+#define WT_STAT_CONN_CACHE_BYTES_LEAF 1175
/*! cache: tracked dirty bytes in the cache */
-#define WT_STAT_CONN_CACHE_BYTES_DIRTY 1175
+#define WT_STAT_CONN_CACHE_BYTES_DIRTY 1176
/*! cache: tracked dirty pages in the cache */
-#define WT_STAT_CONN_CACHE_PAGES_DIRTY 1176
+#define WT_STAT_CONN_CACHE_PAGES_DIRTY 1177
/*! cache: unmodified pages evicted */
-#define WT_STAT_CONN_CACHE_EVICTION_CLEAN 1177
+#define WT_STAT_CONN_CACHE_EVICTION_CLEAN 1178
/*! capacity: background fsync file handles considered */
-#define WT_STAT_CONN_FSYNC_ALL_FH_TOTAL 1178
+#define WT_STAT_CONN_FSYNC_ALL_FH_TOTAL 1179
/*! capacity: background fsync file handles synced */
-#define WT_STAT_CONN_FSYNC_ALL_FH 1179
+#define WT_STAT_CONN_FSYNC_ALL_FH 1180
/*! capacity: background fsync time (msecs) */
-#define WT_STAT_CONN_FSYNC_ALL_TIME 1180
+#define WT_STAT_CONN_FSYNC_ALL_TIME 1181
/*! capacity: bytes read */
-#define WT_STAT_CONN_CAPACITY_BYTES_READ 1181
+#define WT_STAT_CONN_CAPACITY_BYTES_READ 1182
/*! capacity: bytes written for checkpoint */
-#define WT_STAT_CONN_CAPACITY_BYTES_CKPT 1182
+#define WT_STAT_CONN_CAPACITY_BYTES_CKPT 1183
/*! capacity: bytes written for eviction */
-#define WT_STAT_CONN_CAPACITY_BYTES_EVICT 1183
+#define WT_STAT_CONN_CAPACITY_BYTES_EVICT 1184
/*! capacity: bytes written for log */
-#define WT_STAT_CONN_CAPACITY_BYTES_LOG 1184
+#define WT_STAT_CONN_CAPACITY_BYTES_LOG 1185
/*! capacity: bytes written total */
-#define WT_STAT_CONN_CAPACITY_BYTES_WRITTEN 1185
+#define WT_STAT_CONN_CAPACITY_BYTES_WRITTEN 1186
/*! capacity: threshold to call fsync */
-#define WT_STAT_CONN_CAPACITY_THRESHOLD 1186
+#define WT_STAT_CONN_CAPACITY_THRESHOLD 1187
/*! capacity: time waiting due to total capacity (usecs) */
-#define WT_STAT_CONN_CAPACITY_TIME_TOTAL 1187
+#define WT_STAT_CONN_CAPACITY_TIME_TOTAL 1188
/*! capacity: time waiting during checkpoint (usecs) */
-#define WT_STAT_CONN_CAPACITY_TIME_CKPT 1188
+#define WT_STAT_CONN_CAPACITY_TIME_CKPT 1189
/*! capacity: time waiting during eviction (usecs) */
-#define WT_STAT_CONN_CAPACITY_TIME_EVICT 1189
+#define WT_STAT_CONN_CAPACITY_TIME_EVICT 1190
/*! capacity: time waiting during logging (usecs) */
-#define WT_STAT_CONN_CAPACITY_TIME_LOG 1190
+#define WT_STAT_CONN_CAPACITY_TIME_LOG 1191
/*! capacity: time waiting during read (usecs) */
-#define WT_STAT_CONN_CAPACITY_TIME_READ 1191
+#define WT_STAT_CONN_CAPACITY_TIME_READ 1192
/*! checkpoint-cleanup: pages added for eviction */
-#define WT_STAT_CONN_CC_PAGES_EVICT 1192
+#define WT_STAT_CONN_CC_PAGES_EVICT 1193
/*! checkpoint-cleanup: pages removed */
-#define WT_STAT_CONN_CC_PAGES_REMOVED 1193
+#define WT_STAT_CONN_CC_PAGES_REMOVED 1194
/*! checkpoint-cleanup: pages skipped during tree walk */
-#define WT_STAT_CONN_CC_PAGES_WALK_SKIPPED 1194
+#define WT_STAT_CONN_CC_PAGES_WALK_SKIPPED 1195
/*! checkpoint-cleanup: pages visited */
-#define WT_STAT_CONN_CC_PAGES_VISITED 1195
+#define WT_STAT_CONN_CC_PAGES_VISITED 1196
/*! connection: auto adjusting condition resets */
-#define WT_STAT_CONN_COND_AUTO_WAIT_RESET 1196
+#define WT_STAT_CONN_COND_AUTO_WAIT_RESET 1197
/*! connection: auto adjusting condition wait calls */
-#define WT_STAT_CONN_COND_AUTO_WAIT 1197
+#define WT_STAT_CONN_COND_AUTO_WAIT 1198
/*!
* connection: auto adjusting condition wait raced to update timeout and
* skipped updating
*/
-#define WT_STAT_CONN_COND_AUTO_WAIT_SKIPPED 1198
+#define WT_STAT_CONN_COND_AUTO_WAIT_SKIPPED 1199
/*! connection: detected system time went backwards */
-#define WT_STAT_CONN_TIME_TRAVEL 1199
+#define WT_STAT_CONN_TIME_TRAVEL 1200
/*! connection: files currently open */
-#define WT_STAT_CONN_FILE_OPEN 1200
+#define WT_STAT_CONN_FILE_OPEN 1201
/*! connection: hash bucket array size for data handles */
-#define WT_STAT_CONN_BUCKETS_DH 1201
+#define WT_STAT_CONN_BUCKETS_DH 1202
/*! connection: hash bucket array size general */
-#define WT_STAT_CONN_BUCKETS 1202
+#define WT_STAT_CONN_BUCKETS 1203
/*! connection: memory allocations */
-#define WT_STAT_CONN_MEMORY_ALLOCATION 1203
+#define WT_STAT_CONN_MEMORY_ALLOCATION 1204
/*! connection: memory frees */
-#define WT_STAT_CONN_MEMORY_FREE 1204
+#define WT_STAT_CONN_MEMORY_FREE 1205
/*! connection: memory re-allocations */
-#define WT_STAT_CONN_MEMORY_GROW 1205
+#define WT_STAT_CONN_MEMORY_GROW 1206
/*! connection: pthread mutex condition wait calls */
-#define WT_STAT_CONN_COND_WAIT 1206
+#define WT_STAT_CONN_COND_WAIT 1207
/*! connection: pthread mutex shared lock read-lock calls */
-#define WT_STAT_CONN_RWLOCK_READ 1207
+#define WT_STAT_CONN_RWLOCK_READ 1208
/*! connection: pthread mutex shared lock write-lock calls */
-#define WT_STAT_CONN_RWLOCK_WRITE 1208
+#define WT_STAT_CONN_RWLOCK_WRITE 1209
/*! connection: total fsync I/Os */
-#define WT_STAT_CONN_FSYNC_IO 1209
+#define WT_STAT_CONN_FSYNC_IO 1210
/*! connection: total read I/Os */
-#define WT_STAT_CONN_READ_IO 1210
+#define WT_STAT_CONN_READ_IO 1211
/*! connection: total write I/Os */
-#define WT_STAT_CONN_WRITE_IO 1211
+#define WT_STAT_CONN_WRITE_IO 1212
/*! cursor: Total number of entries skipped by cursor next calls */
-#define WT_STAT_CONN_CURSOR_NEXT_SKIP_TOTAL 1212
+#define WT_STAT_CONN_CURSOR_NEXT_SKIP_TOTAL 1213
/*! cursor: Total number of entries skipped by cursor prev calls */
-#define WT_STAT_CONN_CURSOR_PREV_SKIP_TOTAL 1213
+#define WT_STAT_CONN_CURSOR_PREV_SKIP_TOTAL 1214
/*!
* cursor: Total number of entries skipped to position the history store
* cursor
*/
-#define WT_STAT_CONN_CURSOR_SKIP_HS_CUR_POSITION 1214
+#define WT_STAT_CONN_CURSOR_SKIP_HS_CUR_POSITION 1215
/*!
* cursor: Total number of times a search near has exited due to prefix
* config
*/
-#define WT_STAT_CONN_CURSOR_SEARCH_NEAR_PREFIX_FAST_PATHS 1215
+#define WT_STAT_CONN_CURSOR_SEARCH_NEAR_PREFIX_FAST_PATHS 1216
/*! cursor: cached cursor count */
-#define WT_STAT_CONN_CURSOR_CACHED_COUNT 1216
+#define WT_STAT_CONN_CURSOR_CACHED_COUNT 1217
/*! cursor: cursor bulk loaded cursor insert calls */
-#define WT_STAT_CONN_CURSOR_INSERT_BULK 1217
+#define WT_STAT_CONN_CURSOR_INSERT_BULK 1218
/*! cursor: cursor close calls that result in cache */
-#define WT_STAT_CONN_CURSOR_CACHE 1218
+#define WT_STAT_CONN_CURSOR_CACHE 1219
/*! cursor: cursor create calls */
-#define WT_STAT_CONN_CURSOR_CREATE 1219
+#define WT_STAT_CONN_CURSOR_CREATE 1220
/*! cursor: cursor insert calls */
-#define WT_STAT_CONN_CURSOR_INSERT 1220
+#define WT_STAT_CONN_CURSOR_INSERT 1221
/*! cursor: cursor insert key and value bytes */
-#define WT_STAT_CONN_CURSOR_INSERT_BYTES 1221
+#define WT_STAT_CONN_CURSOR_INSERT_BYTES 1222
/*! cursor: cursor modify calls */
-#define WT_STAT_CONN_CURSOR_MODIFY 1222
+#define WT_STAT_CONN_CURSOR_MODIFY 1223
/*! cursor: cursor modify key and value bytes affected */
-#define WT_STAT_CONN_CURSOR_MODIFY_BYTES 1223
+#define WT_STAT_CONN_CURSOR_MODIFY_BYTES 1224
/*! cursor: cursor modify value bytes modified */
-#define WT_STAT_CONN_CURSOR_MODIFY_BYTES_TOUCH 1224
+#define WT_STAT_CONN_CURSOR_MODIFY_BYTES_TOUCH 1225
/*! cursor: cursor next calls */
-#define WT_STAT_CONN_CURSOR_NEXT 1225
+#define WT_STAT_CONN_CURSOR_NEXT 1226
/*!
* cursor: cursor next calls that skip due to a globally visible history
* store tombstone
*/
-#define WT_STAT_CONN_CURSOR_NEXT_HS_TOMBSTONE 1226
+#define WT_STAT_CONN_CURSOR_NEXT_HS_TOMBSTONE 1227
/*!
* cursor: cursor next calls that skip greater than or equal to 100
* entries
*/
-#define WT_STAT_CONN_CURSOR_NEXT_SKIP_GE_100 1227
+#define WT_STAT_CONN_CURSOR_NEXT_SKIP_GE_100 1228
/*! cursor: cursor next calls that skip less than 100 entries */
-#define WT_STAT_CONN_CURSOR_NEXT_SKIP_LT_100 1228
+#define WT_STAT_CONN_CURSOR_NEXT_SKIP_LT_100 1229
/*! cursor: cursor operation restarted */
-#define WT_STAT_CONN_CURSOR_RESTART 1229
+#define WT_STAT_CONN_CURSOR_RESTART 1230
/*! cursor: cursor prev calls */
-#define WT_STAT_CONN_CURSOR_PREV 1230
+#define WT_STAT_CONN_CURSOR_PREV 1231
/*!
* cursor: cursor prev calls that skip due to a globally visible history
* store tombstone
*/
-#define WT_STAT_CONN_CURSOR_PREV_HS_TOMBSTONE 1231
+#define WT_STAT_CONN_CURSOR_PREV_HS_TOMBSTONE 1232
/*!
* cursor: cursor prev calls that skip greater than or equal to 100
* entries
*/
-#define WT_STAT_CONN_CURSOR_PREV_SKIP_GE_100 1232
+#define WT_STAT_CONN_CURSOR_PREV_SKIP_GE_100 1233
/*! cursor: cursor prev calls that skip less than 100 entries */
-#define WT_STAT_CONN_CURSOR_PREV_SKIP_LT_100 1233
+#define WT_STAT_CONN_CURSOR_PREV_SKIP_LT_100 1234
/*! cursor: cursor remove calls */
-#define WT_STAT_CONN_CURSOR_REMOVE 1234
+#define WT_STAT_CONN_CURSOR_REMOVE 1235
/*! cursor: cursor remove key bytes removed */
-#define WT_STAT_CONN_CURSOR_REMOVE_BYTES 1235
+#define WT_STAT_CONN_CURSOR_REMOVE_BYTES 1236
/*! cursor: cursor reserve calls */
-#define WT_STAT_CONN_CURSOR_RESERVE 1236
+#define WT_STAT_CONN_CURSOR_RESERVE 1237
/*! cursor: cursor reset calls */
-#define WT_STAT_CONN_CURSOR_RESET 1237
+#define WT_STAT_CONN_CURSOR_RESET 1238
/*! cursor: cursor search calls */
-#define WT_STAT_CONN_CURSOR_SEARCH 1238
+#define WT_STAT_CONN_CURSOR_SEARCH 1239
/*! cursor: cursor search history store calls */
-#define WT_STAT_CONN_CURSOR_SEARCH_HS 1239
+#define WT_STAT_CONN_CURSOR_SEARCH_HS 1240
/*! cursor: cursor search near calls */
-#define WT_STAT_CONN_CURSOR_SEARCH_NEAR 1240
+#define WT_STAT_CONN_CURSOR_SEARCH_NEAR 1241
/*! cursor: cursor sweep buckets */
-#define WT_STAT_CONN_CURSOR_SWEEP_BUCKETS 1241
+#define WT_STAT_CONN_CURSOR_SWEEP_BUCKETS 1242
/*! cursor: cursor sweep cursors closed */
-#define WT_STAT_CONN_CURSOR_SWEEP_CLOSED 1242
+#define WT_STAT_CONN_CURSOR_SWEEP_CLOSED 1243
/*! cursor: cursor sweep cursors examined */
-#define WT_STAT_CONN_CURSOR_SWEEP_EXAMINED 1243
+#define WT_STAT_CONN_CURSOR_SWEEP_EXAMINED 1244
/*! cursor: cursor sweeps */
-#define WT_STAT_CONN_CURSOR_SWEEP 1244
+#define WT_STAT_CONN_CURSOR_SWEEP 1245
/*! cursor: cursor truncate calls */
-#define WT_STAT_CONN_CURSOR_TRUNCATE 1245
+#define WT_STAT_CONN_CURSOR_TRUNCATE 1246
/*! cursor: cursor update calls */
-#define WT_STAT_CONN_CURSOR_UPDATE 1246
+#define WT_STAT_CONN_CURSOR_UPDATE 1247
/*! cursor: cursor update key and value bytes */
-#define WT_STAT_CONN_CURSOR_UPDATE_BYTES 1247
+#define WT_STAT_CONN_CURSOR_UPDATE_BYTES 1248
/*! cursor: cursor update value size change */
-#define WT_STAT_CONN_CURSOR_UPDATE_BYTES_CHANGED 1248
+#define WT_STAT_CONN_CURSOR_UPDATE_BYTES_CHANGED 1249
/*! cursor: cursors reused from cache */
-#define WT_STAT_CONN_CURSOR_REOPEN 1249
+#define WT_STAT_CONN_CURSOR_REOPEN 1250
/*! cursor: open cursor count */
-#define WT_STAT_CONN_CURSOR_OPEN_COUNT 1250
+#define WT_STAT_CONN_CURSOR_OPEN_COUNT 1251
/*! data-handle: connection data handle size */
-#define WT_STAT_CONN_DH_CONN_HANDLE_SIZE 1251
+#define WT_STAT_CONN_DH_CONN_HANDLE_SIZE 1252
/*! data-handle: connection data handles currently active */
-#define WT_STAT_CONN_DH_CONN_HANDLE_COUNT 1252
+#define WT_STAT_CONN_DH_CONN_HANDLE_COUNT 1253
/*! data-handle: connection sweep candidate became referenced */
-#define WT_STAT_CONN_DH_SWEEP_REF 1253
+#define WT_STAT_CONN_DH_SWEEP_REF 1254
/*! data-handle: connection sweep dhandles closed */
-#define WT_STAT_CONN_DH_SWEEP_CLOSE 1254
+#define WT_STAT_CONN_DH_SWEEP_CLOSE 1255
/*! data-handle: connection sweep dhandles removed from hash list */
-#define WT_STAT_CONN_DH_SWEEP_REMOVE 1255
+#define WT_STAT_CONN_DH_SWEEP_REMOVE 1256
/*! data-handle: connection sweep time-of-death sets */
-#define WT_STAT_CONN_DH_SWEEP_TOD 1256
+#define WT_STAT_CONN_DH_SWEEP_TOD 1257
/*! data-handle: connection sweeps */
-#define WT_STAT_CONN_DH_SWEEPS 1257
+#define WT_STAT_CONN_DH_SWEEPS 1258
/*!
* data-handle: connection sweeps skipped due to checkpoint gathering
* handles
*/
-#define WT_STAT_CONN_DH_SWEEP_SKIP_CKPT 1258
+#define WT_STAT_CONN_DH_SWEEP_SKIP_CKPT 1259
/*! data-handle: session dhandles swept */
-#define WT_STAT_CONN_DH_SESSION_HANDLES 1259
+#define WT_STAT_CONN_DH_SESSION_HANDLES 1260
/*! data-handle: session sweep attempts */
-#define WT_STAT_CONN_DH_SESSION_SWEEPS 1260
+#define WT_STAT_CONN_DH_SESSION_SWEEPS 1261
/*! lock: checkpoint lock acquisitions */
-#define WT_STAT_CONN_LOCK_CHECKPOINT_COUNT 1261
+#define WT_STAT_CONN_LOCK_CHECKPOINT_COUNT 1262
/*! lock: checkpoint lock application thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_APPLICATION 1262
+#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_APPLICATION 1263
/*! lock: checkpoint lock internal thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_INTERNAL 1263
+#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_INTERNAL 1264
/*! lock: dhandle lock application thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_APPLICATION 1264
+#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_APPLICATION 1265
/*! lock: dhandle lock internal thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_INTERNAL 1265
+#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_INTERNAL 1266
/*! lock: dhandle read lock acquisitions */
-#define WT_STAT_CONN_LOCK_DHANDLE_READ_COUNT 1266
+#define WT_STAT_CONN_LOCK_DHANDLE_READ_COUNT 1267
/*! lock: dhandle write lock acquisitions */
-#define WT_STAT_CONN_LOCK_DHANDLE_WRITE_COUNT 1267
+#define WT_STAT_CONN_LOCK_DHANDLE_WRITE_COUNT 1268
/*!
* lock: durable timestamp queue lock application thread time waiting
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WAIT_APPLICATION 1268
+#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WAIT_APPLICATION 1269
/*!
* lock: durable timestamp queue lock internal thread time waiting
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WAIT_INTERNAL 1269
+#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WAIT_INTERNAL 1270
/*! lock: durable timestamp queue read lock acquisitions */
-#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_READ_COUNT 1270
+#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_READ_COUNT 1271
/*! lock: durable timestamp queue write lock acquisitions */
-#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WRITE_COUNT 1271
+#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WRITE_COUNT 1272
/*! lock: metadata lock acquisitions */
-#define WT_STAT_CONN_LOCK_METADATA_COUNT 1272
+#define WT_STAT_CONN_LOCK_METADATA_COUNT 1273
/*! lock: metadata lock application thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_METADATA_WAIT_APPLICATION 1273
+#define WT_STAT_CONN_LOCK_METADATA_WAIT_APPLICATION 1274
/*! lock: metadata lock internal thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_METADATA_WAIT_INTERNAL 1274
+#define WT_STAT_CONN_LOCK_METADATA_WAIT_INTERNAL 1275
/*!
* lock: read timestamp queue lock application thread time waiting
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_APPLICATION 1275
+#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_APPLICATION 1276
/*! lock: read timestamp queue lock internal thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_INTERNAL 1276
+#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_INTERNAL 1277
/*! lock: read timestamp queue read lock acquisitions */
-#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_READ_COUNT 1277
+#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_READ_COUNT 1278
/*! lock: read timestamp queue write lock acquisitions */
-#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WRITE_COUNT 1278
+#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WRITE_COUNT 1279
/*! lock: schema lock acquisitions */
-#define WT_STAT_CONN_LOCK_SCHEMA_COUNT 1279
+#define WT_STAT_CONN_LOCK_SCHEMA_COUNT 1280
/*! lock: schema lock application thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_APPLICATION 1280
+#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_APPLICATION 1281
/*! lock: schema lock internal thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_INTERNAL 1281
+#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_INTERNAL 1282
/*!
* lock: table lock application thread time waiting for the table lock
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_TABLE_WAIT_APPLICATION 1282
+#define WT_STAT_CONN_LOCK_TABLE_WAIT_APPLICATION 1283
/*!
* lock: table lock internal thread time waiting for the table lock
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_TABLE_WAIT_INTERNAL 1283
+#define WT_STAT_CONN_LOCK_TABLE_WAIT_INTERNAL 1284
/*! lock: table read lock acquisitions */
-#define WT_STAT_CONN_LOCK_TABLE_READ_COUNT 1284
+#define WT_STAT_CONN_LOCK_TABLE_READ_COUNT 1285
/*! lock: table write lock acquisitions */
-#define WT_STAT_CONN_LOCK_TABLE_WRITE_COUNT 1285
+#define WT_STAT_CONN_LOCK_TABLE_WRITE_COUNT 1286
/*! lock: txn global lock application thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_APPLICATION 1286
+#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_APPLICATION 1287
/*! lock: txn global lock internal thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_INTERNAL 1287
+#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_INTERNAL 1288
/*! lock: txn global read lock acquisitions */
-#define WT_STAT_CONN_LOCK_TXN_GLOBAL_READ_COUNT 1288
+#define WT_STAT_CONN_LOCK_TXN_GLOBAL_READ_COUNT 1289
/*! lock: txn global write lock acquisitions */
-#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WRITE_COUNT 1289
+#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WRITE_COUNT 1290
/*! log: busy returns attempting to switch slots */
-#define WT_STAT_CONN_LOG_SLOT_SWITCH_BUSY 1290
+#define WT_STAT_CONN_LOG_SLOT_SWITCH_BUSY 1291
/*! log: force log remove time sleeping (usecs) */
-#define WT_STAT_CONN_LOG_FORCE_REMOVE_SLEEP 1291
+#define WT_STAT_CONN_LOG_FORCE_REMOVE_SLEEP 1292
/*! log: log bytes of payload data */
-#define WT_STAT_CONN_LOG_BYTES_PAYLOAD 1292
+#define WT_STAT_CONN_LOG_BYTES_PAYLOAD 1293
/*! log: log bytes written */
-#define WT_STAT_CONN_LOG_BYTES_WRITTEN 1293
+#define WT_STAT_CONN_LOG_BYTES_WRITTEN 1294
/*! log: log files manually zero-filled */
-#define WT_STAT_CONN_LOG_ZERO_FILLS 1294
+#define WT_STAT_CONN_LOG_ZERO_FILLS 1295
/*! log: log flush operations */
-#define WT_STAT_CONN_LOG_FLUSH 1295
+#define WT_STAT_CONN_LOG_FLUSH 1296
/*! log: log force write operations */
-#define WT_STAT_CONN_LOG_FORCE_WRITE 1296
+#define WT_STAT_CONN_LOG_FORCE_WRITE 1297
/*! log: log force write operations skipped */
-#define WT_STAT_CONN_LOG_FORCE_WRITE_SKIP 1297
+#define WT_STAT_CONN_LOG_FORCE_WRITE_SKIP 1298
/*! log: log records compressed */
-#define WT_STAT_CONN_LOG_COMPRESS_WRITES 1298
+#define WT_STAT_CONN_LOG_COMPRESS_WRITES 1299
/*! log: log records not compressed */
-#define WT_STAT_CONN_LOG_COMPRESS_WRITE_FAILS 1299
+#define WT_STAT_CONN_LOG_COMPRESS_WRITE_FAILS 1300
/*! log: log records too small to compress */
-#define WT_STAT_CONN_LOG_COMPRESS_SMALL 1300
+#define WT_STAT_CONN_LOG_COMPRESS_SMALL 1301
/*! log: log release advances write LSN */
-#define WT_STAT_CONN_LOG_RELEASE_WRITE_LSN 1301
+#define WT_STAT_CONN_LOG_RELEASE_WRITE_LSN 1302
/*! log: log scan operations */
-#define WT_STAT_CONN_LOG_SCANS 1302
+#define WT_STAT_CONN_LOG_SCANS 1303
/*! log: log scan records requiring two reads */
-#define WT_STAT_CONN_LOG_SCAN_REREADS 1303
+#define WT_STAT_CONN_LOG_SCAN_REREADS 1304
/*! log: log server thread advances write LSN */
-#define WT_STAT_CONN_LOG_WRITE_LSN 1304
+#define WT_STAT_CONN_LOG_WRITE_LSN 1305
/*! log: log server thread write LSN walk skipped */
-#define WT_STAT_CONN_LOG_WRITE_LSN_SKIP 1305
+#define WT_STAT_CONN_LOG_WRITE_LSN_SKIP 1306
/*! log: log sync operations */
-#define WT_STAT_CONN_LOG_SYNC 1306
+#define WT_STAT_CONN_LOG_SYNC 1307
/*! log: log sync time duration (usecs) */
-#define WT_STAT_CONN_LOG_SYNC_DURATION 1307
+#define WT_STAT_CONN_LOG_SYNC_DURATION 1308
/*! log: log sync_dir operations */
-#define WT_STAT_CONN_LOG_SYNC_DIR 1308
+#define WT_STAT_CONN_LOG_SYNC_DIR 1309
/*! log: log sync_dir time duration (usecs) */
-#define WT_STAT_CONN_LOG_SYNC_DIR_DURATION 1309
+#define WT_STAT_CONN_LOG_SYNC_DIR_DURATION 1310
/*! log: log write operations */
-#define WT_STAT_CONN_LOG_WRITES 1310
+#define WT_STAT_CONN_LOG_WRITES 1311
/*! log: logging bytes consolidated */
-#define WT_STAT_CONN_LOG_SLOT_CONSOLIDATED 1311
+#define WT_STAT_CONN_LOG_SLOT_CONSOLIDATED 1312
/*! log: maximum log file size */
-#define WT_STAT_CONN_LOG_MAX_FILESIZE 1312
+#define WT_STAT_CONN_LOG_MAX_FILESIZE 1313
/*! log: number of pre-allocated log files to create */
-#define WT_STAT_CONN_LOG_PREALLOC_MAX 1313
+#define WT_STAT_CONN_LOG_PREALLOC_MAX 1314
/*! log: pre-allocated log files not ready and missed */
-#define WT_STAT_CONN_LOG_PREALLOC_MISSED 1314
+#define WT_STAT_CONN_LOG_PREALLOC_MISSED 1315
/*! log: pre-allocated log files prepared */
-#define WT_STAT_CONN_LOG_PREALLOC_FILES 1315
+#define WT_STAT_CONN_LOG_PREALLOC_FILES 1316
/*! log: pre-allocated log files used */
-#define WT_STAT_CONN_LOG_PREALLOC_USED 1316
+#define WT_STAT_CONN_LOG_PREALLOC_USED 1317
/*! log: records processed by log scan */
-#define WT_STAT_CONN_LOG_SCAN_RECORDS 1317
+#define WT_STAT_CONN_LOG_SCAN_RECORDS 1318
/*! log: slot close lost race */
-#define WT_STAT_CONN_LOG_SLOT_CLOSE_RACE 1318
+#define WT_STAT_CONN_LOG_SLOT_CLOSE_RACE 1319
/*! log: slot close unbuffered waits */
-#define WT_STAT_CONN_LOG_SLOT_CLOSE_UNBUF 1319
+#define WT_STAT_CONN_LOG_SLOT_CLOSE_UNBUF 1320
/*! log: slot closures */
-#define WT_STAT_CONN_LOG_SLOT_CLOSES 1320
+#define WT_STAT_CONN_LOG_SLOT_CLOSES 1321
/*! log: slot join atomic update races */
-#define WT_STAT_CONN_LOG_SLOT_RACES 1321
+#define WT_STAT_CONN_LOG_SLOT_RACES 1322
/*! log: slot join calls atomic updates raced */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_RACE 1322
+#define WT_STAT_CONN_LOG_SLOT_YIELD_RACE 1323
/*! log: slot join calls did not yield */
-#define WT_STAT_CONN_LOG_SLOT_IMMEDIATE 1323
+#define WT_STAT_CONN_LOG_SLOT_IMMEDIATE 1324
/*! log: slot join calls found active slot closed */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_CLOSE 1324
+#define WT_STAT_CONN_LOG_SLOT_YIELD_CLOSE 1325
/*! log: slot join calls slept */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_SLEEP 1325
+#define WT_STAT_CONN_LOG_SLOT_YIELD_SLEEP 1326
/*! log: slot join calls yielded */
-#define WT_STAT_CONN_LOG_SLOT_YIELD 1326
+#define WT_STAT_CONN_LOG_SLOT_YIELD 1327
/*! log: slot join found active slot closed */
-#define WT_STAT_CONN_LOG_SLOT_ACTIVE_CLOSED 1327
+#define WT_STAT_CONN_LOG_SLOT_ACTIVE_CLOSED 1328
/*! log: slot joins yield time (usecs) */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_DURATION 1328
+#define WT_STAT_CONN_LOG_SLOT_YIELD_DURATION 1329
/*! log: slot transitions unable to find free slot */
-#define WT_STAT_CONN_LOG_SLOT_NO_FREE_SLOTS 1329
+#define WT_STAT_CONN_LOG_SLOT_NO_FREE_SLOTS 1330
/*! log: slot unbuffered writes */
-#define WT_STAT_CONN_LOG_SLOT_UNBUFFERED 1330
+#define WT_STAT_CONN_LOG_SLOT_UNBUFFERED 1331
/*! log: total in-memory size of compressed records */
-#define WT_STAT_CONN_LOG_COMPRESS_MEM 1331
+#define WT_STAT_CONN_LOG_COMPRESS_MEM 1332
/*! log: total log buffer size */
-#define WT_STAT_CONN_LOG_BUFFER_SIZE 1332
+#define WT_STAT_CONN_LOG_BUFFER_SIZE 1333
/*! log: total size of compressed records */
-#define WT_STAT_CONN_LOG_COMPRESS_LEN 1333
+#define WT_STAT_CONN_LOG_COMPRESS_LEN 1334
/*! log: written slots coalesced */
-#define WT_STAT_CONN_LOG_SLOT_COALESCED 1334
+#define WT_STAT_CONN_LOG_SLOT_COALESCED 1335
/*! log: yields waiting for previous log file close */
-#define WT_STAT_CONN_LOG_CLOSE_YIELDS 1335
+#define WT_STAT_CONN_LOG_CLOSE_YIELDS 1336
/*! perf: file system read latency histogram (bucket 1) - 10-49ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT50 1336
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT50 1337
/*! perf: file system read latency histogram (bucket 2) - 50-99ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT100 1337
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT100 1338
/*! perf: file system read latency histogram (bucket 3) - 100-249ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT250 1338
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT250 1339
/*! perf: file system read latency histogram (bucket 4) - 250-499ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT500 1339
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT500 1340
/*! perf: file system read latency histogram (bucket 5) - 500-999ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT1000 1340
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT1000 1341
/*! perf: file system read latency histogram (bucket 6) - 1000ms+ */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_GT1000 1341
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_GT1000 1342
/*! perf: file system write latency histogram (bucket 1) - 10-49ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT50 1342
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT50 1343
/*! perf: file system write latency histogram (bucket 2) - 50-99ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT100 1343
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT100 1344
/*! perf: file system write latency histogram (bucket 3) - 100-249ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT250 1344
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT250 1345
/*! perf: file system write latency histogram (bucket 4) - 250-499ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT500 1345
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT500 1346
/*! perf: file system write latency histogram (bucket 5) - 500-999ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT1000 1346
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT1000 1347
/*! perf: file system write latency histogram (bucket 6) - 1000ms+ */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_GT1000 1347
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_GT1000 1348
/*! perf: operation read latency histogram (bucket 1) - 100-249us */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT250 1348
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT250 1349
/*! perf: operation read latency histogram (bucket 2) - 250-499us */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT500 1349
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT500 1350
/*! perf: operation read latency histogram (bucket 3) - 500-999us */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT1000 1350
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT1000 1351
/*! perf: operation read latency histogram (bucket 4) - 1000-9999us */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT10000 1351
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT10000 1352
/*! perf: operation read latency histogram (bucket 5) - 10000us+ */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_GT10000 1352
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_GT10000 1353
/*! perf: operation write latency histogram (bucket 1) - 100-249us */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT250 1353
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT250 1354
/*! perf: operation write latency histogram (bucket 2) - 250-499us */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT500 1354
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT500 1355
/*! perf: operation write latency histogram (bucket 3) - 500-999us */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT1000 1355
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT1000 1356
/*! perf: operation write latency histogram (bucket 4) - 1000-9999us */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT10000 1356
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT10000 1357
/*! perf: operation write latency histogram (bucket 5) - 10000us+ */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_GT10000 1357
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_GT10000 1358
/*! reconciliation: approximate byte size of timestamps in pages written */
-#define WT_STAT_CONN_REC_TIME_WINDOW_BYTES_TS 1358
+#define WT_STAT_CONN_REC_TIME_WINDOW_BYTES_TS 1359
/*!
* reconciliation: approximate byte size of transaction IDs in pages
* written
*/
-#define WT_STAT_CONN_REC_TIME_WINDOW_BYTES_TXN 1359
+#define WT_STAT_CONN_REC_TIME_WINDOW_BYTES_TXN 1360
/*! reconciliation: fast-path pages deleted */
-#define WT_STAT_CONN_REC_PAGE_DELETE_FAST 1360
+#define WT_STAT_CONN_REC_PAGE_DELETE_FAST 1361
/*! reconciliation: leaf-page overflow keys */
-#define WT_STAT_CONN_REC_OVERFLOW_KEY_LEAF 1361
+#define WT_STAT_CONN_REC_OVERFLOW_KEY_LEAF 1362
/*! reconciliation: maximum seconds spent in a reconciliation call */
-#define WT_STAT_CONN_REC_MAXIMUM_SECONDS 1362
+#define WT_STAT_CONN_REC_MAXIMUM_SECONDS 1363
/*! reconciliation: page reconciliation calls */
-#define WT_STAT_CONN_REC_PAGES 1363
+#define WT_STAT_CONN_REC_PAGES 1364
/*! reconciliation: page reconciliation calls for eviction */
-#define WT_STAT_CONN_REC_PAGES_EVICTION 1364
+#define WT_STAT_CONN_REC_PAGES_EVICTION 1365
/*!
* reconciliation: page reconciliation calls that resulted in values with
* prepared transaction metadata
*/
-#define WT_STAT_CONN_REC_PAGES_WITH_PREPARE 1365
+#define WT_STAT_CONN_REC_PAGES_WITH_PREPARE 1366
/*!
* reconciliation: page reconciliation calls that resulted in values with
* timestamps
*/
-#define WT_STAT_CONN_REC_PAGES_WITH_TS 1366
+#define WT_STAT_CONN_REC_PAGES_WITH_TS 1367
/*!
* reconciliation: page reconciliation calls that resulted in values with
* transaction ids
*/
-#define WT_STAT_CONN_REC_PAGES_WITH_TXN 1367
+#define WT_STAT_CONN_REC_PAGES_WITH_TXN 1368
/*! reconciliation: pages deleted */
-#define WT_STAT_CONN_REC_PAGE_DELETE 1368
+#define WT_STAT_CONN_REC_PAGE_DELETE 1369
/*!
* reconciliation: pages written including an aggregated newest start
* durable timestamp
*/
-#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_START_DURABLE_TS 1369
+#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_START_DURABLE_TS 1370
/*!
* reconciliation: pages written including an aggregated newest stop
* durable timestamp
*/
-#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_DURABLE_TS 1370
+#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_DURABLE_TS 1371
/*!
* reconciliation: pages written including an aggregated newest stop
* timestamp
*/
-#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_TS 1371
+#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_TS 1372
/*!
* reconciliation: pages written including an aggregated newest stop
* transaction ID
*/
-#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_TXN 1372
+#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_TXN 1373
/*!
* reconciliation: pages written including an aggregated newest
* transaction ID
*/
-#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_TXN 1373
+#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_TXN 1374
/*!
* reconciliation: pages written including an aggregated oldest start
* timestamp
*/
-#define WT_STAT_CONN_REC_TIME_AGGR_OLDEST_START_TS 1374
+#define WT_STAT_CONN_REC_TIME_AGGR_OLDEST_START_TS 1375
/*! reconciliation: pages written including an aggregated prepare */
-#define WT_STAT_CONN_REC_TIME_AGGR_PREPARED 1375
+#define WT_STAT_CONN_REC_TIME_AGGR_PREPARED 1376
/*! reconciliation: pages written including at least one prepare state */
-#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_PREPARED 1376
+#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_PREPARED 1377
/*!
* reconciliation: pages written including at least one start durable
* timestamp
*/
-#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_DURABLE_START_TS 1377
+#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_DURABLE_START_TS 1378
/*! reconciliation: pages written including at least one start timestamp */
-#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_START_TS 1378
+#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_START_TS 1379
/*!
* reconciliation: pages written including at least one start transaction
* ID
*/
-#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_START_TXN 1379
+#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_START_TXN 1380
/*!
* reconciliation: pages written including at least one stop durable
* timestamp
*/
-#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_DURABLE_STOP_TS 1380
+#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_DURABLE_STOP_TS 1381
/*! reconciliation: pages written including at least one stop timestamp */
-#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_STOP_TS 1381
+#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_STOP_TS 1382
/*!
* reconciliation: pages written including at least one stop transaction
* ID
*/
-#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_STOP_TXN 1382
+#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_STOP_TXN 1383
/*! reconciliation: records written including a prepare state */
-#define WT_STAT_CONN_REC_TIME_WINDOW_PREPARED 1383
+#define WT_STAT_CONN_REC_TIME_WINDOW_PREPARED 1384
/*! reconciliation: records written including a start durable timestamp */
-#define WT_STAT_CONN_REC_TIME_WINDOW_DURABLE_START_TS 1384
+#define WT_STAT_CONN_REC_TIME_WINDOW_DURABLE_START_TS 1385
/*! reconciliation: records written including a start timestamp */
-#define WT_STAT_CONN_REC_TIME_WINDOW_START_TS 1385
+#define WT_STAT_CONN_REC_TIME_WINDOW_START_TS 1386
/*! reconciliation: records written including a start transaction ID */
-#define WT_STAT_CONN_REC_TIME_WINDOW_START_TXN 1386
+#define WT_STAT_CONN_REC_TIME_WINDOW_START_TXN 1387
/*! reconciliation: records written including a stop durable timestamp */
-#define WT_STAT_CONN_REC_TIME_WINDOW_DURABLE_STOP_TS 1387
+#define WT_STAT_CONN_REC_TIME_WINDOW_DURABLE_STOP_TS 1388
/*! reconciliation: records written including a stop timestamp */
-#define WT_STAT_CONN_REC_TIME_WINDOW_STOP_TS 1388
+#define WT_STAT_CONN_REC_TIME_WINDOW_STOP_TS 1389
/*! reconciliation: records written including a stop transaction ID */
-#define WT_STAT_CONN_REC_TIME_WINDOW_STOP_TXN 1389
+#define WT_STAT_CONN_REC_TIME_WINDOW_STOP_TXN 1390
/*! reconciliation: split bytes currently awaiting free */
-#define WT_STAT_CONN_REC_SPLIT_STASHED_BYTES 1390
+#define WT_STAT_CONN_REC_SPLIT_STASHED_BYTES 1391
/*! reconciliation: split objects currently awaiting free */
-#define WT_STAT_CONN_REC_SPLIT_STASHED_OBJECTS 1391
+#define WT_STAT_CONN_REC_SPLIT_STASHED_OBJECTS 1392
/*! session: attempts to remove a local object and the object is in use */
-#define WT_STAT_CONN_LOCAL_OBJECTS_INUSE 1392
+#define WT_STAT_CONN_LOCAL_OBJECTS_INUSE 1393
/*! session: flush_tier operation calls */
-#define WT_STAT_CONN_FLUSH_TIER 1393
+#define WT_STAT_CONN_FLUSH_TIER 1394
/*! session: flush_tier tables skipped due to no checkpoint */
-#define WT_STAT_CONN_FLUSH_TIER_SKIPPED 1394
+#define WT_STAT_CONN_FLUSH_TIER_SKIPPED 1395
/*! session: flush_tier tables switched */
-#define WT_STAT_CONN_FLUSH_TIER_SWITCHED 1395
+#define WT_STAT_CONN_FLUSH_TIER_SWITCHED 1396
/*! session: local objects removed */
-#define WT_STAT_CONN_LOCAL_OBJECTS_REMOVED 1396
+#define WT_STAT_CONN_LOCAL_OBJECTS_REMOVED 1397
/*! session: open session count */
-#define WT_STAT_CONN_SESSION_OPEN 1397
+#define WT_STAT_CONN_SESSION_OPEN 1398
/*! session: session query timestamp calls */
-#define WT_STAT_CONN_SESSION_QUERY_TS 1398
+#define WT_STAT_CONN_SESSION_QUERY_TS 1399
/*! session: table alter failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_ALTER_FAIL 1399
+#define WT_STAT_CONN_SESSION_TABLE_ALTER_FAIL 1400
/*! session: table alter successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_ALTER_SUCCESS 1400
+#define WT_STAT_CONN_SESSION_TABLE_ALTER_SUCCESS 1401
/*! session: table alter triggering checkpoint calls */
-#define WT_STAT_CONN_SESSION_TABLE_ALTER_TRIGGER_CHECKPOINT 1401
+#define WT_STAT_CONN_SESSION_TABLE_ALTER_TRIGGER_CHECKPOINT 1402
/*! session: table alter unchanged and skipped */
-#define WT_STAT_CONN_SESSION_TABLE_ALTER_SKIP 1402
+#define WT_STAT_CONN_SESSION_TABLE_ALTER_SKIP 1403
/*! session: table compact failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_COMPACT_FAIL 1403
+#define WT_STAT_CONN_SESSION_TABLE_COMPACT_FAIL 1404
/*! session: table compact failed calls due to cache pressure */
-#define WT_STAT_CONN_SESSION_TABLE_COMPACT_FAIL_CACHE_PRESSURE 1404
+#define WT_STAT_CONN_SESSION_TABLE_COMPACT_FAIL_CACHE_PRESSURE 1405
/*! session: table compact running */
-#define WT_STAT_CONN_SESSION_TABLE_COMPACT_RUNNING 1405
+#define WT_STAT_CONN_SESSION_TABLE_COMPACT_RUNNING 1406
/*! session: table compact skipped as process would not reduce file size */
-#define WT_STAT_CONN_SESSION_TABLE_COMPACT_SKIPPED 1406
+#define WT_STAT_CONN_SESSION_TABLE_COMPACT_SKIPPED 1407
/*! session: table compact successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_COMPACT_SUCCESS 1407
+#define WT_STAT_CONN_SESSION_TABLE_COMPACT_SUCCESS 1408
/*! session: table compact timeout */
-#define WT_STAT_CONN_SESSION_TABLE_COMPACT_TIMEOUT 1408
+#define WT_STAT_CONN_SESSION_TABLE_COMPACT_TIMEOUT 1409
/*! session: table create failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_CREATE_FAIL 1409
+#define WT_STAT_CONN_SESSION_TABLE_CREATE_FAIL 1410
/*! session: table create successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_CREATE_SUCCESS 1410
+#define WT_STAT_CONN_SESSION_TABLE_CREATE_SUCCESS 1411
/*! session: table drop failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_DROP_FAIL 1411
+#define WT_STAT_CONN_SESSION_TABLE_DROP_FAIL 1412
/*! session: table drop successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_DROP_SUCCESS 1412
+#define WT_STAT_CONN_SESSION_TABLE_DROP_SUCCESS 1413
/*! session: table rename failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_RENAME_FAIL 1413
+#define WT_STAT_CONN_SESSION_TABLE_RENAME_FAIL 1414
/*! session: table rename successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_RENAME_SUCCESS 1414
+#define WT_STAT_CONN_SESSION_TABLE_RENAME_SUCCESS 1415
/*! session: table salvage failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_FAIL 1415
+#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_FAIL 1416
/*! session: table salvage successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_SUCCESS 1416
+#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_SUCCESS 1417
/*! session: table truncate failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_FAIL 1417
+#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_FAIL 1418
/*! session: table truncate successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_SUCCESS 1418
+#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_SUCCESS 1419
/*! session: table verify failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_VERIFY_FAIL 1419
+#define WT_STAT_CONN_SESSION_TABLE_VERIFY_FAIL 1420
/*! session: table verify successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_VERIFY_SUCCESS 1420
+#define WT_STAT_CONN_SESSION_TABLE_VERIFY_SUCCESS 1421
/*! session: tiered operations dequeued and processed */
-#define WT_STAT_CONN_TIERED_WORK_UNITS_DEQUEUED 1421
+#define WT_STAT_CONN_TIERED_WORK_UNITS_DEQUEUED 1422
/*! session: tiered operations scheduled */
-#define WT_STAT_CONN_TIERED_WORK_UNITS_CREATED 1422
+#define WT_STAT_CONN_TIERED_WORK_UNITS_CREATED 1423
/*! session: tiered storage local retention time (secs) */
-#define WT_STAT_CONN_TIERED_RETENTION 1423
+#define WT_STAT_CONN_TIERED_RETENTION 1424
/*! thread-state: active filesystem fsync calls */
-#define WT_STAT_CONN_THREAD_FSYNC_ACTIVE 1424
+#define WT_STAT_CONN_THREAD_FSYNC_ACTIVE 1425
/*! thread-state: active filesystem read calls */
-#define WT_STAT_CONN_THREAD_READ_ACTIVE 1425
+#define WT_STAT_CONN_THREAD_READ_ACTIVE 1426
/*! thread-state: active filesystem write calls */
-#define WT_STAT_CONN_THREAD_WRITE_ACTIVE 1426
+#define WT_STAT_CONN_THREAD_WRITE_ACTIVE 1427
/*! thread-yield: application thread time evicting (usecs) */
-#define WT_STAT_CONN_APPLICATION_EVICT_TIME 1427
+#define WT_STAT_CONN_APPLICATION_EVICT_TIME 1428
/*! thread-yield: application thread time waiting for cache (usecs) */
-#define WT_STAT_CONN_APPLICATION_CACHE_TIME 1428
+#define WT_STAT_CONN_APPLICATION_CACHE_TIME 1429
/*!
* thread-yield: connection close blocked waiting for transaction state
* stabilization
*/
-#define WT_STAT_CONN_TXN_RELEASE_BLOCKED 1429
+#define WT_STAT_CONN_TXN_RELEASE_BLOCKED 1430
/*! thread-yield: connection close yielded for lsm manager shutdown */
-#define WT_STAT_CONN_CONN_CLOSE_BLOCKED_LSM 1430
+#define WT_STAT_CONN_CONN_CLOSE_BLOCKED_LSM 1431
/*! thread-yield: data handle lock yielded */
-#define WT_STAT_CONN_DHANDLE_LOCK_BLOCKED 1431
+#define WT_STAT_CONN_DHANDLE_LOCK_BLOCKED 1432
/*!
* thread-yield: get reference for page index and slot time sleeping
* (usecs)
*/
-#define WT_STAT_CONN_PAGE_INDEX_SLOT_REF_BLOCKED 1432
+#define WT_STAT_CONN_PAGE_INDEX_SLOT_REF_BLOCKED 1433
/*! thread-yield: page access yielded due to prepare state change */
-#define WT_STAT_CONN_PREPARED_TRANSITION_BLOCKED_PAGE 1433
+#define WT_STAT_CONN_PREPARED_TRANSITION_BLOCKED_PAGE 1434
/*! thread-yield: page acquire busy blocked */
-#define WT_STAT_CONN_PAGE_BUSY_BLOCKED 1434
+#define WT_STAT_CONN_PAGE_BUSY_BLOCKED 1435
/*! thread-yield: page acquire eviction blocked */
-#define WT_STAT_CONN_PAGE_FORCIBLE_EVICT_BLOCKED 1435
+#define WT_STAT_CONN_PAGE_FORCIBLE_EVICT_BLOCKED 1436
/*! thread-yield: page acquire locked blocked */
-#define WT_STAT_CONN_PAGE_LOCKED_BLOCKED 1436
+#define WT_STAT_CONN_PAGE_LOCKED_BLOCKED 1437
/*! thread-yield: page acquire read blocked */
-#define WT_STAT_CONN_PAGE_READ_BLOCKED 1437
+#define WT_STAT_CONN_PAGE_READ_BLOCKED 1438
/*! thread-yield: page acquire time sleeping (usecs) */
-#define WT_STAT_CONN_PAGE_SLEEP 1438
+#define WT_STAT_CONN_PAGE_SLEEP 1439
/*!
* thread-yield: page delete rollback time sleeping for state change
* (usecs)
*/
-#define WT_STAT_CONN_PAGE_DEL_ROLLBACK_BLOCKED 1439
+#define WT_STAT_CONN_PAGE_DEL_ROLLBACK_BLOCKED 1440
/*! thread-yield: page reconciliation yielded due to child modification */
-#define WT_STAT_CONN_CHILD_MODIFY_BLOCKED_PAGE 1440
+#define WT_STAT_CONN_CHILD_MODIFY_BLOCKED_PAGE 1441
/*! transaction: Number of prepared updates */
-#define WT_STAT_CONN_TXN_PREPARED_UPDATES 1441
+#define WT_STAT_CONN_TXN_PREPARED_UPDATES 1442
/*! transaction: Number of prepared updates committed */
-#define WT_STAT_CONN_TXN_PREPARED_UPDATES_COMMITTED 1442
+#define WT_STAT_CONN_TXN_PREPARED_UPDATES_COMMITTED 1443
/*! transaction: Number of prepared updates repeated on the same key */
-#define WT_STAT_CONN_TXN_PREPARED_UPDATES_KEY_REPEATED 1443
+#define WT_STAT_CONN_TXN_PREPARED_UPDATES_KEY_REPEATED 1444
/*! transaction: Number of prepared updates rolled back */
-#define WT_STAT_CONN_TXN_PREPARED_UPDATES_ROLLEDBACK 1444
+#define WT_STAT_CONN_TXN_PREPARED_UPDATES_ROLLEDBACK 1445
/*! transaction: prepared transactions */
-#define WT_STAT_CONN_TXN_PREPARE 1445
+#define WT_STAT_CONN_TXN_PREPARE 1446
/*! transaction: prepared transactions committed */
-#define WT_STAT_CONN_TXN_PREPARE_COMMIT 1446
+#define WT_STAT_CONN_TXN_PREPARE_COMMIT 1447
/*! transaction: prepared transactions currently active */
-#define WT_STAT_CONN_TXN_PREPARE_ACTIVE 1447
+#define WT_STAT_CONN_TXN_PREPARE_ACTIVE 1448
/*! transaction: prepared transactions rolled back */
-#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK 1448
-/*!
- * transaction: prepared transactions rolled back and do not remove the
- * history store entry
- */
-#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK_DO_NOT_REMOVE_HS_UPDATE 1449
-/*!
- * transaction: prepared transactions rolled back and fix the history
- * store entry with checkpoint reserved transaction id
- */
-#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK_FIX_HS_UPDATE_WITH_CKPT_RESERVED_TXNID 1450
+#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK 1449
/*! transaction: query timestamp calls */
-#define WT_STAT_CONN_TXN_QUERY_TS 1451
+#define WT_STAT_CONN_TXN_QUERY_TS 1450
/*! transaction: race to read prepared update retry */
-#define WT_STAT_CONN_TXN_READ_RACE_PREPARE_UPDATE 1452
+#define WT_STAT_CONN_TXN_READ_RACE_PREPARE_UPDATE 1451
/*! transaction: rollback to stable calls */
-#define WT_STAT_CONN_TXN_RTS 1453
+#define WT_STAT_CONN_TXN_RTS 1452
/*!
* transaction: rollback to stable history store records with stop
* timestamps older than newer records
*/
-#define WT_STAT_CONN_TXN_RTS_HS_STOP_OLDER_THAN_NEWER_START 1454
+#define WT_STAT_CONN_TXN_RTS_HS_STOP_OLDER_THAN_NEWER_START 1453
/*! transaction: rollback to stable inconsistent checkpoint */
-#define WT_STAT_CONN_TXN_RTS_INCONSISTENT_CKPT 1455
+#define WT_STAT_CONN_TXN_RTS_INCONSISTENT_CKPT 1454
/*! transaction: rollback to stable keys removed */
-#define WT_STAT_CONN_TXN_RTS_KEYS_REMOVED 1456
+#define WT_STAT_CONN_TXN_RTS_KEYS_REMOVED 1455
/*! transaction: rollback to stable keys restored */
-#define WT_STAT_CONN_TXN_RTS_KEYS_RESTORED 1457
+#define WT_STAT_CONN_TXN_RTS_KEYS_RESTORED 1456
/*! transaction: rollback to stable pages visited */
-#define WT_STAT_CONN_TXN_RTS_PAGES_VISITED 1458
+#define WT_STAT_CONN_TXN_RTS_PAGES_VISITED 1457
/*! transaction: rollback to stable restored tombstones from history store */
-#define WT_STAT_CONN_TXN_RTS_HS_RESTORE_TOMBSTONES 1459
+#define WT_STAT_CONN_TXN_RTS_HS_RESTORE_TOMBSTONES 1458
/*! transaction: rollback to stable restored updates from history store */
-#define WT_STAT_CONN_TXN_RTS_HS_RESTORE_UPDATES 1460
+#define WT_STAT_CONN_TXN_RTS_HS_RESTORE_UPDATES 1459
/*! transaction: rollback to stable skipping delete rle */
-#define WT_STAT_CONN_TXN_RTS_DELETE_RLE_SKIPPED 1461
+#define WT_STAT_CONN_TXN_RTS_DELETE_RLE_SKIPPED 1460
/*! transaction: rollback to stable skipping stable rle */
-#define WT_STAT_CONN_TXN_RTS_STABLE_RLE_SKIPPED 1462
+#define WT_STAT_CONN_TXN_RTS_STABLE_RLE_SKIPPED 1461
/*! transaction: rollback to stable sweeping history store keys */
-#define WT_STAT_CONN_TXN_RTS_SWEEP_HS_KEYS 1463
+#define WT_STAT_CONN_TXN_RTS_SWEEP_HS_KEYS 1462
/*! transaction: rollback to stable tree walk skipping pages */
-#define WT_STAT_CONN_TXN_RTS_TREE_WALK_SKIP_PAGES 1464
+#define WT_STAT_CONN_TXN_RTS_TREE_WALK_SKIP_PAGES 1463
/*! transaction: rollback to stable updates aborted */
-#define WT_STAT_CONN_TXN_RTS_UPD_ABORTED 1465
+#define WT_STAT_CONN_TXN_RTS_UPD_ABORTED 1464
/*! transaction: rollback to stable updates removed from history store */
-#define WT_STAT_CONN_TXN_RTS_HS_REMOVED 1466
+#define WT_STAT_CONN_TXN_RTS_HS_REMOVED 1465
/*! transaction: sessions scanned in each walk of concurrent sessions */
-#define WT_STAT_CONN_TXN_SESSIONS_WALKED 1467
+#define WT_STAT_CONN_TXN_SESSIONS_WALKED 1466
/*! transaction: set timestamp calls */
-#define WT_STAT_CONN_TXN_SET_TS 1468
+#define WT_STAT_CONN_TXN_SET_TS 1467
/*! transaction: set timestamp durable calls */
-#define WT_STAT_CONN_TXN_SET_TS_DURABLE 1469
+#define WT_STAT_CONN_TXN_SET_TS_DURABLE 1468
/*! transaction: set timestamp durable updates */
-#define WT_STAT_CONN_TXN_SET_TS_DURABLE_UPD 1470
+#define WT_STAT_CONN_TXN_SET_TS_DURABLE_UPD 1469
/*! transaction: set timestamp oldest calls */
-#define WT_STAT_CONN_TXN_SET_TS_OLDEST 1471
+#define WT_STAT_CONN_TXN_SET_TS_OLDEST 1470
/*! transaction: set timestamp oldest updates */
-#define WT_STAT_CONN_TXN_SET_TS_OLDEST_UPD 1472
+#define WT_STAT_CONN_TXN_SET_TS_OLDEST_UPD 1471
/*! transaction: set timestamp stable calls */
-#define WT_STAT_CONN_TXN_SET_TS_STABLE 1473
+#define WT_STAT_CONN_TXN_SET_TS_STABLE 1472
/*! transaction: set timestamp stable updates */
-#define WT_STAT_CONN_TXN_SET_TS_STABLE_UPD 1474
+#define WT_STAT_CONN_TXN_SET_TS_STABLE_UPD 1473
/*! transaction: transaction begins */
-#define WT_STAT_CONN_TXN_BEGIN 1475
+#define WT_STAT_CONN_TXN_BEGIN 1474
/*! transaction: transaction checkpoint currently running */
-#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1476
+#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1475
/*!
* transaction: transaction checkpoint currently running for history
* store file
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING_HS 1477
+#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING_HS 1476
/*! transaction: transaction checkpoint generation */
-#define WT_STAT_CONN_TXN_CHECKPOINT_GENERATION 1478
+#define WT_STAT_CONN_TXN_CHECKPOINT_GENERATION 1477
/*!
* transaction: transaction checkpoint history store file duration
* (usecs)
*/
-#define WT_STAT_CONN_TXN_HS_CKPT_DURATION 1479
+#define WT_STAT_CONN_TXN_HS_CKPT_DURATION 1478
/*! transaction: transaction checkpoint max time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MAX 1480
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MAX 1479
/*! transaction: transaction checkpoint min time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MIN 1481
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MIN 1480
/*!
* transaction: transaction checkpoint most recent duration for gathering
* all handles (usecs)
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION 1482
+#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION 1481
/*!
* transaction: transaction checkpoint most recent duration for gathering
* applied handles (usecs)
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION_APPLY 1483
+#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION_APPLY 1482
/*!
* transaction: transaction checkpoint most recent duration for gathering
* skipped handles (usecs)
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION_SKIP 1484
+#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION_SKIP 1483
/*! transaction: transaction checkpoint most recent handles applied */
-#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_APPLIED 1485
+#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_APPLIED 1484
/*! transaction: transaction checkpoint most recent handles skipped */
-#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_SKIPPED 1486
+#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_SKIPPED 1485
/*! transaction: transaction checkpoint most recent handles walked */
-#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_WALKED 1487
+#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_WALKED 1486
/*! transaction: transaction checkpoint most recent time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_RECENT 1488
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_RECENT 1487
/*! transaction: transaction checkpoint prepare currently running */
-#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RUNNING 1489
+#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RUNNING 1488
/*! transaction: transaction checkpoint prepare max time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MAX 1490
+#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MAX 1489
/*! transaction: transaction checkpoint prepare min time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MIN 1491
+#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MIN 1490
/*! transaction: transaction checkpoint prepare most recent time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RECENT 1492
+#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RECENT 1491
/*! transaction: transaction checkpoint prepare total time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_TOTAL 1493
+#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_TOTAL 1492
/*! transaction: transaction checkpoint scrub dirty target */
-#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TARGET 1494
+#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TARGET 1493
/*! transaction: transaction checkpoint scrub time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TIME 1495
+#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TIME 1494
/*! transaction: transaction checkpoint stop timing stress active */
-#define WT_STAT_CONN_TXN_CHECKPOINT_STOP_STRESS_ACTIVE 1496
+#define WT_STAT_CONN_TXN_CHECKPOINT_STOP_STRESS_ACTIVE 1495
/*! transaction: transaction checkpoint total time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_TOTAL 1497
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_TOTAL 1496
/*! transaction: transaction checkpoints */
-#define WT_STAT_CONN_TXN_CHECKPOINT 1498
+#define WT_STAT_CONN_TXN_CHECKPOINT 1497
/*! transaction: transaction checkpoints due to obsolete pages */
-#define WT_STAT_CONN_TXN_CHECKPOINT_OBSOLETE_APPLIED 1499
+#define WT_STAT_CONN_TXN_CHECKPOINT_OBSOLETE_APPLIED 1498
/*!
* transaction: transaction checkpoints skipped because database was
* clean
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_SKIPPED 1500
+#define WT_STAT_CONN_TXN_CHECKPOINT_SKIPPED 1499
/*! transaction: transaction failures due to history store */
-#define WT_STAT_CONN_TXN_FAIL_CACHE 1501
+#define WT_STAT_CONN_TXN_FAIL_CACHE 1500
/*!
* transaction: transaction fsync calls for checkpoint after allocating
* the transaction ID
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST 1502
+#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST 1501
/*!
* transaction: transaction fsync duration for checkpoint after
* allocating the transaction ID (usecs)
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST_DURATION 1503
+#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST_DURATION 1502
/*! transaction: transaction range of IDs currently pinned */
-#define WT_STAT_CONN_TXN_PINNED_RANGE 1504
+#define WT_STAT_CONN_TXN_PINNED_RANGE 1503
/*! transaction: transaction range of IDs currently pinned by a checkpoint */
-#define WT_STAT_CONN_TXN_PINNED_CHECKPOINT_RANGE 1505
+#define WT_STAT_CONN_TXN_PINNED_CHECKPOINT_RANGE 1504
/*! transaction: transaction range of timestamps currently pinned */
-#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP 1506
+#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP 1505
/*! transaction: transaction range of timestamps pinned by a checkpoint */
-#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_CHECKPOINT 1507
+#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_CHECKPOINT 1506
/*!
* transaction: transaction range of timestamps pinned by the oldest
* active read timestamp
*/
-#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_READER 1508
+#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_READER 1507
/*!
* transaction: transaction range of timestamps pinned by the oldest
* timestamp
*/
-#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_OLDEST 1509
+#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_OLDEST 1508
/*! transaction: transaction read timestamp of the oldest active reader */
-#define WT_STAT_CONN_TXN_TIMESTAMP_OLDEST_ACTIVE_READ 1510
+#define WT_STAT_CONN_TXN_TIMESTAMP_OLDEST_ACTIVE_READ 1509
/*! transaction: transaction rollback to stable currently running */
-#define WT_STAT_CONN_TXN_ROLLBACK_TO_STABLE_RUNNING 1511
+#define WT_STAT_CONN_TXN_ROLLBACK_TO_STABLE_RUNNING 1510
/*! transaction: transaction walk of concurrent sessions */
-#define WT_STAT_CONN_TXN_WALK_SESSIONS 1512
+#define WT_STAT_CONN_TXN_WALK_SESSIONS 1511
/*! transaction: transactions committed */
-#define WT_STAT_CONN_TXN_COMMIT 1513
+#define WT_STAT_CONN_TXN_COMMIT 1512
/*! transaction: transactions rolled back */
-#define WT_STAT_CONN_TXN_ROLLBACK 1514
+#define WT_STAT_CONN_TXN_ROLLBACK 1513
/*! transaction: update conflicts */
-#define WT_STAT_CONN_TXN_UPDATE_CONFLICT 1515
+#define WT_STAT_CONN_TXN_UPDATE_CONFLICT 1514
/*!
* @}
@@ -6580,511 +6575,516 @@ extern int wiredtiger_extension_terminate(WT_CONNECTION *connection);
* the update chain after the selected on disk update
*/
#define WT_STAT_DSRC_CACHE_EVICTION_BLOCKED_OOO_CHECKPOINT_RACE_4 2055
+/*!
+ * cache: eviction gave up due to needing to remove a record from the
+ * history store but checkpoint is running
+ */
+#define WT_STAT_DSRC_CACHE_EVICTION_BLOCKED_REMOVE_HS_RACE_WITH_CHECKPOINT 2056
/*! cache: eviction walk passes of a file */
-#define WT_STAT_DSRC_CACHE_EVICTION_WALK_PASSES 2056
+#define WT_STAT_DSRC_CACHE_EVICTION_WALK_PASSES 2057
/*! cache: eviction walk target pages histogram - 0-9 */
-#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_LT10 2057
+#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_LT10 2058
/*! cache: eviction walk target pages histogram - 10-31 */
-#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_LT32 2058
+#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_LT32 2059
/*! cache: eviction walk target pages histogram - 128 and higher */
-#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_GE128 2059
+#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_GE128 2060
/*! cache: eviction walk target pages histogram - 32-63 */
-#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_LT64 2060
+#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_LT64 2061
/*! cache: eviction walk target pages histogram - 64-128 */
-#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_LT128 2061
+#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_LT128 2062
/*!
* cache: eviction walk target pages reduced due to history store cache
* pressure
*/
-#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_REDUCED 2062
+#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_REDUCED 2063
/*! cache: eviction walks abandoned */
-#define WT_STAT_DSRC_CACHE_EVICTION_WALKS_ABANDONED 2063
+#define WT_STAT_DSRC_CACHE_EVICTION_WALKS_ABANDONED 2064
/*! cache: eviction walks gave up because they restarted their walk twice */
-#define WT_STAT_DSRC_CACHE_EVICTION_WALKS_STOPPED 2064
+#define WT_STAT_DSRC_CACHE_EVICTION_WALKS_STOPPED 2065
/*!
* cache: eviction walks gave up because they saw too many pages and
* found no candidates
*/
-#define WT_STAT_DSRC_CACHE_EVICTION_WALKS_GAVE_UP_NO_TARGETS 2065
+#define WT_STAT_DSRC_CACHE_EVICTION_WALKS_GAVE_UP_NO_TARGETS 2066
/*!
* cache: eviction walks gave up because they saw too many pages and
* found too few candidates
*/
-#define WT_STAT_DSRC_CACHE_EVICTION_WALKS_GAVE_UP_RATIO 2066
+#define WT_STAT_DSRC_CACHE_EVICTION_WALKS_GAVE_UP_RATIO 2067
/*! cache: eviction walks reached end of tree */
-#define WT_STAT_DSRC_CACHE_EVICTION_WALKS_ENDED 2067
+#define WT_STAT_DSRC_CACHE_EVICTION_WALKS_ENDED 2068
/*! cache: eviction walks restarted */
-#define WT_STAT_DSRC_CACHE_EVICTION_WALK_RESTART 2068
+#define WT_STAT_DSRC_CACHE_EVICTION_WALK_RESTART 2069
/*! cache: eviction walks started from root of tree */
-#define WT_STAT_DSRC_CACHE_EVICTION_WALK_FROM_ROOT 2069
+#define WT_STAT_DSRC_CACHE_EVICTION_WALK_FROM_ROOT 2070
/*! cache: eviction walks started from saved location in tree */
-#define WT_STAT_DSRC_CACHE_EVICTION_WALK_SAVED_POS 2070
+#define WT_STAT_DSRC_CACHE_EVICTION_WALK_SAVED_POS 2071
/*! cache: hazard pointer blocked page eviction */
-#define WT_STAT_DSRC_CACHE_EVICTION_HAZARD 2071
+#define WT_STAT_DSRC_CACHE_EVICTION_HAZARD 2072
/*! cache: history store table insert calls */
-#define WT_STAT_DSRC_CACHE_HS_INSERT 2072
+#define WT_STAT_DSRC_CACHE_HS_INSERT 2073
/*! cache: history store table insert calls that returned restart */
-#define WT_STAT_DSRC_CACHE_HS_INSERT_RESTART 2073
+#define WT_STAT_DSRC_CACHE_HS_INSERT_RESTART 2074
/*!
* cache: history store table out-of-order resolved updates that lose
* their durable timestamp
*/
-#define WT_STAT_DSRC_CACHE_HS_ORDER_LOSE_DURABLE_TIMESTAMP 2074
+#define WT_STAT_DSRC_CACHE_HS_ORDER_LOSE_DURABLE_TIMESTAMP 2075
/*!
* cache: history store table out-of-order updates that were fixed up by
* reinserting with the fixed timestamp
*/
-#define WT_STAT_DSRC_CACHE_HS_ORDER_REINSERT 2075
+#define WT_STAT_DSRC_CACHE_HS_ORDER_REINSERT 2076
/*! cache: history store table reads */
-#define WT_STAT_DSRC_CACHE_HS_READ 2076
+#define WT_STAT_DSRC_CACHE_HS_READ 2077
/*! cache: history store table reads missed */
-#define WT_STAT_DSRC_CACHE_HS_READ_MISS 2077
+#define WT_STAT_DSRC_CACHE_HS_READ_MISS 2078
/*! cache: history store table reads requiring squashed modifies */
-#define WT_STAT_DSRC_CACHE_HS_READ_SQUASH 2078
+#define WT_STAT_DSRC_CACHE_HS_READ_SQUASH 2079
/*!
* cache: history store table truncation by rollback to stable to remove
* an unstable update
*/
-#define WT_STAT_DSRC_CACHE_HS_KEY_TRUNCATE_RTS_UNSTABLE 2079
+#define WT_STAT_DSRC_CACHE_HS_KEY_TRUNCATE_RTS_UNSTABLE 2080
/*!
* cache: history store table truncation by rollback to stable to remove
* an update
*/
-#define WT_STAT_DSRC_CACHE_HS_KEY_TRUNCATE_RTS 2080
+#define WT_STAT_DSRC_CACHE_HS_KEY_TRUNCATE_RTS 2081
/*! cache: history store table truncation to remove an update */
-#define WT_STAT_DSRC_CACHE_HS_KEY_TRUNCATE 2081
+#define WT_STAT_DSRC_CACHE_HS_KEY_TRUNCATE 2082
/*!
* cache: history store table truncation to remove range of updates due
* to key being removed from the data page during reconciliation
*/
-#define WT_STAT_DSRC_CACHE_HS_KEY_TRUNCATE_ONPAGE_REMOVAL 2082
+#define WT_STAT_DSRC_CACHE_HS_KEY_TRUNCATE_ONPAGE_REMOVAL 2083
/*!
* cache: history store table truncation to remove range of updates due
* to out-of-order timestamp update on data page
*/
-#define WT_STAT_DSRC_CACHE_HS_ORDER_REMOVE 2083
+#define WT_STAT_DSRC_CACHE_HS_ORDER_REMOVE 2084
/*! cache: history store table writes requiring squashed modifies */
-#define WT_STAT_DSRC_CACHE_HS_WRITE_SQUASH 2084
+#define WT_STAT_DSRC_CACHE_HS_WRITE_SQUASH 2085
/*! cache: in-memory page passed criteria to be split */
-#define WT_STAT_DSRC_CACHE_INMEM_SPLITTABLE 2085
+#define WT_STAT_DSRC_CACHE_INMEM_SPLITTABLE 2086
/*! cache: in-memory page splits */
-#define WT_STAT_DSRC_CACHE_INMEM_SPLIT 2086
+#define WT_STAT_DSRC_CACHE_INMEM_SPLIT 2087
/*! cache: internal pages evicted */
-#define WT_STAT_DSRC_CACHE_EVICTION_INTERNAL 2087
+#define WT_STAT_DSRC_CACHE_EVICTION_INTERNAL 2088
/*! cache: internal pages split during eviction */
-#define WT_STAT_DSRC_CACHE_EVICTION_SPLIT_INTERNAL 2088
+#define WT_STAT_DSRC_CACHE_EVICTION_SPLIT_INTERNAL 2089
/*! cache: leaf pages split during eviction */
-#define WT_STAT_DSRC_CACHE_EVICTION_SPLIT_LEAF 2089
+#define WT_STAT_DSRC_CACHE_EVICTION_SPLIT_LEAF 2090
/*! cache: modified pages evicted */
-#define WT_STAT_DSRC_CACHE_EVICTION_DIRTY 2090
+#define WT_STAT_DSRC_CACHE_EVICTION_DIRTY 2091
/*! cache: overflow pages read into cache */
-#define WT_STAT_DSRC_CACHE_READ_OVERFLOW 2091
+#define WT_STAT_DSRC_CACHE_READ_OVERFLOW 2092
/*! cache: page split during eviction deepened the tree */
-#define WT_STAT_DSRC_CACHE_EVICTION_DEEPEN 2092
+#define WT_STAT_DSRC_CACHE_EVICTION_DEEPEN 2093
/*! cache: page written requiring history store records */
-#define WT_STAT_DSRC_CACHE_WRITE_HS 2093
+#define WT_STAT_DSRC_CACHE_WRITE_HS 2094
/*! cache: pages read into cache */
-#define WT_STAT_DSRC_CACHE_READ 2094
+#define WT_STAT_DSRC_CACHE_READ 2095
/*! cache: pages read into cache after truncate */
-#define WT_STAT_DSRC_CACHE_READ_DELETED 2095
+#define WT_STAT_DSRC_CACHE_READ_DELETED 2096
/*! cache: pages read into cache after truncate in prepare state */
-#define WT_STAT_DSRC_CACHE_READ_DELETED_PREPARED 2096
+#define WT_STAT_DSRC_CACHE_READ_DELETED_PREPARED 2097
/*! cache: pages requested from the cache */
-#define WT_STAT_DSRC_CACHE_PAGES_REQUESTED 2097
+#define WT_STAT_DSRC_CACHE_PAGES_REQUESTED 2098
/*! cache: pages seen by eviction walk */
-#define WT_STAT_DSRC_CACHE_EVICTION_PAGES_SEEN 2098
+#define WT_STAT_DSRC_CACHE_EVICTION_PAGES_SEEN 2099
/*! cache: pages written from cache */
-#define WT_STAT_DSRC_CACHE_WRITE 2099
+#define WT_STAT_DSRC_CACHE_WRITE 2100
/*! cache: pages written requiring in-memory restoration */
-#define WT_STAT_DSRC_CACHE_WRITE_RESTORE 2100
+#define WT_STAT_DSRC_CACHE_WRITE_RESTORE 2101
/*! cache: the number of times full update inserted to history store */
-#define WT_STAT_DSRC_CACHE_HS_INSERT_FULL_UPDATE 2101
+#define WT_STAT_DSRC_CACHE_HS_INSERT_FULL_UPDATE 2102
/*! cache: the number of times reverse modify inserted to history store */
-#define WT_STAT_DSRC_CACHE_HS_INSERT_REVERSE_MODIFY 2102
+#define WT_STAT_DSRC_CACHE_HS_INSERT_REVERSE_MODIFY 2103
/*! cache: tracked dirty bytes in the cache */
-#define WT_STAT_DSRC_CACHE_BYTES_DIRTY 2103
+#define WT_STAT_DSRC_CACHE_BYTES_DIRTY 2104
/*! cache: unmodified pages evicted */
-#define WT_STAT_DSRC_CACHE_EVICTION_CLEAN 2104
+#define WT_STAT_DSRC_CACHE_EVICTION_CLEAN 2105
/*!
* cache_walk: Average difference between current eviction generation
* when the page was last considered, only reported if cache_walk or all
* statistics are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_GEN_AVG_GAP 2105
+#define WT_STAT_DSRC_CACHE_STATE_GEN_AVG_GAP 2106
/*!
* cache_walk: Average on-disk page image size seen, only reported if
* cache_walk or all statistics are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_AVG_WRITTEN_SIZE 2106
+#define WT_STAT_DSRC_CACHE_STATE_AVG_WRITTEN_SIZE 2107
/*!
* cache_walk: Average time in cache for pages that have been visited by
* the eviction server, only reported if cache_walk or all statistics are
* enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_AVG_VISITED_AGE 2107
+#define WT_STAT_DSRC_CACHE_STATE_AVG_VISITED_AGE 2108
/*!
* cache_walk: Average time in cache for pages that have not been visited
* by the eviction server, only reported if cache_walk or all statistics
* are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_AVG_UNVISITED_AGE 2108
+#define WT_STAT_DSRC_CACHE_STATE_AVG_UNVISITED_AGE 2109
/*!
* cache_walk: Clean pages currently in cache, only reported if
* cache_walk or all statistics are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_PAGES_CLEAN 2109
+#define WT_STAT_DSRC_CACHE_STATE_PAGES_CLEAN 2110
/*!
* cache_walk: Current eviction generation, only reported if cache_walk
* or all statistics are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_GEN_CURRENT 2110
+#define WT_STAT_DSRC_CACHE_STATE_GEN_CURRENT 2111
/*!
* cache_walk: Dirty pages currently in cache, only reported if
* cache_walk or all statistics are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_PAGES_DIRTY 2111
+#define WT_STAT_DSRC_CACHE_STATE_PAGES_DIRTY 2112
/*!
* cache_walk: Entries in the root page, only reported if cache_walk or
* all statistics are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_ROOT_ENTRIES 2112
+#define WT_STAT_DSRC_CACHE_STATE_ROOT_ENTRIES 2113
/*!
* cache_walk: Internal pages currently in cache, only reported if
* cache_walk or all statistics are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_PAGES_INTERNAL 2113
+#define WT_STAT_DSRC_CACHE_STATE_PAGES_INTERNAL 2114
/*!
* cache_walk: Leaf pages currently in cache, only reported if cache_walk
* or all statistics are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_PAGES_LEAF 2114
+#define WT_STAT_DSRC_CACHE_STATE_PAGES_LEAF 2115
/*!
* cache_walk: Maximum difference between current eviction generation
* when the page was last considered, only reported if cache_walk or all
* statistics are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_GEN_MAX_GAP 2115
+#define WT_STAT_DSRC_CACHE_STATE_GEN_MAX_GAP 2116
/*!
* cache_walk: Maximum page size seen, only reported if cache_walk or all
* statistics are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_MAX_PAGESIZE 2116
+#define WT_STAT_DSRC_CACHE_STATE_MAX_PAGESIZE 2117
/*!
* cache_walk: Minimum on-disk page image size seen, only reported if
* cache_walk or all statistics are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_MIN_WRITTEN_SIZE 2117
+#define WT_STAT_DSRC_CACHE_STATE_MIN_WRITTEN_SIZE 2118
/*!
* cache_walk: Number of pages never visited by eviction server, only
* reported if cache_walk or all statistics are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_UNVISITED_COUNT 2118
+#define WT_STAT_DSRC_CACHE_STATE_UNVISITED_COUNT 2119
/*!
* cache_walk: On-disk page image sizes smaller than a single allocation
* unit, only reported if cache_walk or all statistics are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_SMALLER_ALLOC_SIZE 2119
+#define WT_STAT_DSRC_CACHE_STATE_SMALLER_ALLOC_SIZE 2120
/*!
* cache_walk: Pages created in memory and never written, only reported
* if cache_walk or all statistics are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_MEMORY 2120
+#define WT_STAT_DSRC_CACHE_STATE_MEMORY 2121
/*!
* cache_walk: Pages currently queued for eviction, only reported if
* cache_walk or all statistics are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_QUEUED 2121
+#define WT_STAT_DSRC_CACHE_STATE_QUEUED 2122
/*!
* cache_walk: Pages that could not be queued for eviction, only reported
* if cache_walk or all statistics are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_NOT_QUEUEABLE 2122
+#define WT_STAT_DSRC_CACHE_STATE_NOT_QUEUEABLE 2123
/*!
* cache_walk: Refs skipped during cache traversal, only reported if
* cache_walk or all statistics are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_REFS_SKIPPED 2123
+#define WT_STAT_DSRC_CACHE_STATE_REFS_SKIPPED 2124
/*!
* cache_walk: Size of the root page, only reported if cache_walk or all
* statistics are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_ROOT_SIZE 2124
+#define WT_STAT_DSRC_CACHE_STATE_ROOT_SIZE 2125
/*!
* cache_walk: Total number of pages currently in cache, only reported if
* cache_walk or all statistics are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_PAGES 2125
+#define WT_STAT_DSRC_CACHE_STATE_PAGES 2126
/*! checkpoint-cleanup: pages added for eviction */
-#define WT_STAT_DSRC_CC_PAGES_EVICT 2126
+#define WT_STAT_DSRC_CC_PAGES_EVICT 2127
/*! checkpoint-cleanup: pages removed */
-#define WT_STAT_DSRC_CC_PAGES_REMOVED 2127
+#define WT_STAT_DSRC_CC_PAGES_REMOVED 2128
/*! checkpoint-cleanup: pages skipped during tree walk */
-#define WT_STAT_DSRC_CC_PAGES_WALK_SKIPPED 2128
+#define WT_STAT_DSRC_CC_PAGES_WALK_SKIPPED 2129
/*! checkpoint-cleanup: pages visited */
-#define WT_STAT_DSRC_CC_PAGES_VISITED 2129
+#define WT_STAT_DSRC_CC_PAGES_VISITED 2130
/*!
* compression: compressed page maximum internal page size prior to
* compression
*/
-#define WT_STAT_DSRC_COMPRESS_PRECOMP_INTL_MAX_PAGE_SIZE 2130
+#define WT_STAT_DSRC_COMPRESS_PRECOMP_INTL_MAX_PAGE_SIZE 2131
/*!
* compression: compressed page maximum leaf page size prior to
* compression
*/
-#define WT_STAT_DSRC_COMPRESS_PRECOMP_LEAF_MAX_PAGE_SIZE 2131
+#define WT_STAT_DSRC_COMPRESS_PRECOMP_LEAF_MAX_PAGE_SIZE 2132
/*! compression: compressed pages read */
-#define WT_STAT_DSRC_COMPRESS_READ 2132
+#define WT_STAT_DSRC_COMPRESS_READ 2133
/*! compression: compressed pages written */
-#define WT_STAT_DSRC_COMPRESS_WRITE 2133
+#define WT_STAT_DSRC_COMPRESS_WRITE 2134
/*! compression: number of blocks with compress ratio greater than 64 */
-#define WT_STAT_DSRC_COMPRESS_HIST_RATIO_MAX 2134
+#define WT_STAT_DSRC_COMPRESS_HIST_RATIO_MAX 2135
/*! compression: number of blocks with compress ratio smaller than 16 */
-#define WT_STAT_DSRC_COMPRESS_HIST_RATIO_16 2135
+#define WT_STAT_DSRC_COMPRESS_HIST_RATIO_16 2136
/*! compression: number of blocks with compress ratio smaller than 2 */
-#define WT_STAT_DSRC_COMPRESS_HIST_RATIO_2 2136
+#define WT_STAT_DSRC_COMPRESS_HIST_RATIO_2 2137
/*! compression: number of blocks with compress ratio smaller than 32 */
-#define WT_STAT_DSRC_COMPRESS_HIST_RATIO_32 2137
+#define WT_STAT_DSRC_COMPRESS_HIST_RATIO_32 2138
/*! compression: number of blocks with compress ratio smaller than 4 */
-#define WT_STAT_DSRC_COMPRESS_HIST_RATIO_4 2138
+#define WT_STAT_DSRC_COMPRESS_HIST_RATIO_4 2139
/*! compression: number of blocks with compress ratio smaller than 64 */
-#define WT_STAT_DSRC_COMPRESS_HIST_RATIO_64 2139
+#define WT_STAT_DSRC_COMPRESS_HIST_RATIO_64 2140
/*! compression: number of blocks with compress ratio smaller than 8 */
-#define WT_STAT_DSRC_COMPRESS_HIST_RATIO_8 2140
+#define WT_STAT_DSRC_COMPRESS_HIST_RATIO_8 2141
/*! compression: page written failed to compress */
-#define WT_STAT_DSRC_COMPRESS_WRITE_FAIL 2141
+#define WT_STAT_DSRC_COMPRESS_WRITE_FAIL 2142
/*! compression: page written was too small to compress */
-#define WT_STAT_DSRC_COMPRESS_WRITE_TOO_SMALL 2142
+#define WT_STAT_DSRC_COMPRESS_WRITE_TOO_SMALL 2143
/*! cursor: Total number of entries skipped by cursor next calls */
-#define WT_STAT_DSRC_CURSOR_NEXT_SKIP_TOTAL 2143
+#define WT_STAT_DSRC_CURSOR_NEXT_SKIP_TOTAL 2144
/*! cursor: Total number of entries skipped by cursor prev calls */
-#define WT_STAT_DSRC_CURSOR_PREV_SKIP_TOTAL 2144
+#define WT_STAT_DSRC_CURSOR_PREV_SKIP_TOTAL 2145
/*!
* cursor: Total number of entries skipped to position the history store
* cursor
*/
-#define WT_STAT_DSRC_CURSOR_SKIP_HS_CUR_POSITION 2145
+#define WT_STAT_DSRC_CURSOR_SKIP_HS_CUR_POSITION 2146
/*!
* cursor: Total number of times a search near has exited due to prefix
* config
*/
-#define WT_STAT_DSRC_CURSOR_SEARCH_NEAR_PREFIX_FAST_PATHS 2146
+#define WT_STAT_DSRC_CURSOR_SEARCH_NEAR_PREFIX_FAST_PATHS 2147
/*! cursor: bulk loaded cursor insert calls */
-#define WT_STAT_DSRC_CURSOR_INSERT_BULK 2147
+#define WT_STAT_DSRC_CURSOR_INSERT_BULK 2148
/*! cursor: cache cursors reuse count */
-#define WT_STAT_DSRC_CURSOR_REOPEN 2148
+#define WT_STAT_DSRC_CURSOR_REOPEN 2149
/*! cursor: close calls that result in cache */
-#define WT_STAT_DSRC_CURSOR_CACHE 2149
+#define WT_STAT_DSRC_CURSOR_CACHE 2150
/*! cursor: create calls */
-#define WT_STAT_DSRC_CURSOR_CREATE 2150
+#define WT_STAT_DSRC_CURSOR_CREATE 2151
/*!
* cursor: cursor next calls that skip due to a globally visible history
* store tombstone
*/
-#define WT_STAT_DSRC_CURSOR_NEXT_HS_TOMBSTONE 2151
+#define WT_STAT_DSRC_CURSOR_NEXT_HS_TOMBSTONE 2152
/*!
* cursor: cursor next calls that skip greater than or equal to 100
* entries
*/
-#define WT_STAT_DSRC_CURSOR_NEXT_SKIP_GE_100 2152
+#define WT_STAT_DSRC_CURSOR_NEXT_SKIP_GE_100 2153
/*! cursor: cursor next calls that skip less than 100 entries */
-#define WT_STAT_DSRC_CURSOR_NEXT_SKIP_LT_100 2153
+#define WT_STAT_DSRC_CURSOR_NEXT_SKIP_LT_100 2154
/*!
* cursor: cursor prev calls that skip due to a globally visible history
* store tombstone
*/
-#define WT_STAT_DSRC_CURSOR_PREV_HS_TOMBSTONE 2154
+#define WT_STAT_DSRC_CURSOR_PREV_HS_TOMBSTONE 2155
/*!
* cursor: cursor prev calls that skip greater than or equal to 100
* entries
*/
-#define WT_STAT_DSRC_CURSOR_PREV_SKIP_GE_100 2155
+#define WT_STAT_DSRC_CURSOR_PREV_SKIP_GE_100 2156
/*! cursor: cursor prev calls that skip less than 100 entries */
-#define WT_STAT_DSRC_CURSOR_PREV_SKIP_LT_100 2156
+#define WT_STAT_DSRC_CURSOR_PREV_SKIP_LT_100 2157
/*! cursor: insert calls */
-#define WT_STAT_DSRC_CURSOR_INSERT 2157
+#define WT_STAT_DSRC_CURSOR_INSERT 2158
/*! cursor: insert key and value bytes */
-#define WT_STAT_DSRC_CURSOR_INSERT_BYTES 2158
+#define WT_STAT_DSRC_CURSOR_INSERT_BYTES 2159
/*! cursor: modify */
-#define WT_STAT_DSRC_CURSOR_MODIFY 2159
+#define WT_STAT_DSRC_CURSOR_MODIFY 2160
/*! cursor: modify key and value bytes affected */
-#define WT_STAT_DSRC_CURSOR_MODIFY_BYTES 2160
+#define WT_STAT_DSRC_CURSOR_MODIFY_BYTES 2161
/*! cursor: modify value bytes modified */
-#define WT_STAT_DSRC_CURSOR_MODIFY_BYTES_TOUCH 2161
+#define WT_STAT_DSRC_CURSOR_MODIFY_BYTES_TOUCH 2162
/*! cursor: next calls */
-#define WT_STAT_DSRC_CURSOR_NEXT 2162
+#define WT_STAT_DSRC_CURSOR_NEXT 2163
/*! cursor: open cursor count */
-#define WT_STAT_DSRC_CURSOR_OPEN_COUNT 2163
+#define WT_STAT_DSRC_CURSOR_OPEN_COUNT 2164
/*! cursor: operation restarted */
-#define WT_STAT_DSRC_CURSOR_RESTART 2164
+#define WT_STAT_DSRC_CURSOR_RESTART 2165
/*! cursor: prev calls */
-#define WT_STAT_DSRC_CURSOR_PREV 2165
+#define WT_STAT_DSRC_CURSOR_PREV 2166
/*! cursor: remove calls */
-#define WT_STAT_DSRC_CURSOR_REMOVE 2166
+#define WT_STAT_DSRC_CURSOR_REMOVE 2167
/*! cursor: remove key bytes removed */
-#define WT_STAT_DSRC_CURSOR_REMOVE_BYTES 2167
+#define WT_STAT_DSRC_CURSOR_REMOVE_BYTES 2168
/*! cursor: reserve calls */
-#define WT_STAT_DSRC_CURSOR_RESERVE 2168
+#define WT_STAT_DSRC_CURSOR_RESERVE 2169
/*! cursor: reset calls */
-#define WT_STAT_DSRC_CURSOR_RESET 2169
+#define WT_STAT_DSRC_CURSOR_RESET 2170
/*! cursor: search calls */
-#define WT_STAT_DSRC_CURSOR_SEARCH 2170
+#define WT_STAT_DSRC_CURSOR_SEARCH 2171
/*! cursor: search history store calls */
-#define WT_STAT_DSRC_CURSOR_SEARCH_HS 2171
+#define WT_STAT_DSRC_CURSOR_SEARCH_HS 2172
/*! cursor: search near calls */
-#define WT_STAT_DSRC_CURSOR_SEARCH_NEAR 2172
+#define WT_STAT_DSRC_CURSOR_SEARCH_NEAR 2173
/*! cursor: truncate calls */
-#define WT_STAT_DSRC_CURSOR_TRUNCATE 2173
+#define WT_STAT_DSRC_CURSOR_TRUNCATE 2174
/*! cursor: update calls */
-#define WT_STAT_DSRC_CURSOR_UPDATE 2174
+#define WT_STAT_DSRC_CURSOR_UPDATE 2175
/*! cursor: update key and value bytes */
-#define WT_STAT_DSRC_CURSOR_UPDATE_BYTES 2175
+#define WT_STAT_DSRC_CURSOR_UPDATE_BYTES 2176
/*! cursor: update value size change */
-#define WT_STAT_DSRC_CURSOR_UPDATE_BYTES_CHANGED 2176
+#define WT_STAT_DSRC_CURSOR_UPDATE_BYTES_CHANGED 2177
/*! reconciliation: approximate byte size of timestamps in pages written */
-#define WT_STAT_DSRC_REC_TIME_WINDOW_BYTES_TS 2177
+#define WT_STAT_DSRC_REC_TIME_WINDOW_BYTES_TS 2178
/*!
* reconciliation: approximate byte size of transaction IDs in pages
* written
*/
-#define WT_STAT_DSRC_REC_TIME_WINDOW_BYTES_TXN 2178
+#define WT_STAT_DSRC_REC_TIME_WINDOW_BYTES_TXN 2179
/*! reconciliation: dictionary matches */
-#define WT_STAT_DSRC_REC_DICTIONARY 2179
+#define WT_STAT_DSRC_REC_DICTIONARY 2180
/*! reconciliation: fast-path pages deleted */
-#define WT_STAT_DSRC_REC_PAGE_DELETE_FAST 2180
+#define WT_STAT_DSRC_REC_PAGE_DELETE_FAST 2181
/*!
* reconciliation: internal page key bytes discarded using suffix
* compression
*/
-#define WT_STAT_DSRC_REC_SUFFIX_COMPRESSION 2181
+#define WT_STAT_DSRC_REC_SUFFIX_COMPRESSION 2182
/*! reconciliation: internal page multi-block writes */
-#define WT_STAT_DSRC_REC_MULTIBLOCK_INTERNAL 2182
+#define WT_STAT_DSRC_REC_MULTIBLOCK_INTERNAL 2183
/*! reconciliation: leaf page key bytes discarded using prefix compression */
-#define WT_STAT_DSRC_REC_PREFIX_COMPRESSION 2183
+#define WT_STAT_DSRC_REC_PREFIX_COMPRESSION 2184
/*! reconciliation: leaf page multi-block writes */
-#define WT_STAT_DSRC_REC_MULTIBLOCK_LEAF 2184
+#define WT_STAT_DSRC_REC_MULTIBLOCK_LEAF 2185
/*! reconciliation: leaf-page overflow keys */
-#define WT_STAT_DSRC_REC_OVERFLOW_KEY_LEAF 2185
+#define WT_STAT_DSRC_REC_OVERFLOW_KEY_LEAF 2186
/*! reconciliation: maximum blocks required for a page */
-#define WT_STAT_DSRC_REC_MULTIBLOCK_MAX 2186
+#define WT_STAT_DSRC_REC_MULTIBLOCK_MAX 2187
/*! reconciliation: overflow values written */
-#define WT_STAT_DSRC_REC_OVERFLOW_VALUE 2187
+#define WT_STAT_DSRC_REC_OVERFLOW_VALUE 2188
/*! reconciliation: page checksum matches */
-#define WT_STAT_DSRC_REC_PAGE_MATCH 2188
+#define WT_STAT_DSRC_REC_PAGE_MATCH 2189
/*! reconciliation: page reconciliation calls */
-#define WT_STAT_DSRC_REC_PAGES 2189
+#define WT_STAT_DSRC_REC_PAGES 2190
/*! reconciliation: page reconciliation calls for eviction */
-#define WT_STAT_DSRC_REC_PAGES_EVICTION 2190
+#define WT_STAT_DSRC_REC_PAGES_EVICTION 2191
/*! reconciliation: pages deleted */
-#define WT_STAT_DSRC_REC_PAGE_DELETE 2191
+#define WT_STAT_DSRC_REC_PAGE_DELETE 2192
/*!
* reconciliation: pages written including an aggregated newest start
* durable timestamp
*/
-#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_START_DURABLE_TS 2192
+#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_START_DURABLE_TS 2193
/*!
* reconciliation: pages written including an aggregated newest stop
* durable timestamp
*/
-#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_STOP_DURABLE_TS 2193
+#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_STOP_DURABLE_TS 2194
/*!
* reconciliation: pages written including an aggregated newest stop
* timestamp
*/
-#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_STOP_TS 2194
+#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_STOP_TS 2195
/*!
* reconciliation: pages written including an aggregated newest stop
* transaction ID
*/
-#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_STOP_TXN 2195
+#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_STOP_TXN 2196
/*!
* reconciliation: pages written including an aggregated newest
* transaction ID
*/
-#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_TXN 2196
+#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_TXN 2197
/*!
* reconciliation: pages written including an aggregated oldest start
* timestamp
*/
-#define WT_STAT_DSRC_REC_TIME_AGGR_OLDEST_START_TS 2197
+#define WT_STAT_DSRC_REC_TIME_AGGR_OLDEST_START_TS 2198
/*! reconciliation: pages written including an aggregated prepare */
-#define WT_STAT_DSRC_REC_TIME_AGGR_PREPARED 2198
+#define WT_STAT_DSRC_REC_TIME_AGGR_PREPARED 2199
/*! reconciliation: pages written including at least one prepare */
-#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_PREPARED 2199
+#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_PREPARED 2200
/*!
* reconciliation: pages written including at least one start durable
* timestamp
*/
-#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_DURABLE_START_TS 2200
+#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_DURABLE_START_TS 2201
/*! reconciliation: pages written including at least one start timestamp */
-#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_START_TS 2201
+#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_START_TS 2202
/*!
* reconciliation: pages written including at least one start transaction
* ID
*/
-#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_START_TXN 2202
+#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_START_TXN 2203
/*!
* reconciliation: pages written including at least one stop durable
* timestamp
*/
-#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_DURABLE_STOP_TS 2203
+#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_DURABLE_STOP_TS 2204
/*! reconciliation: pages written including at least one stop timestamp */
-#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_STOP_TS 2204
+#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_STOP_TS 2205
/*!
* reconciliation: pages written including at least one stop transaction
* ID
*/
-#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_STOP_TXN 2205
+#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_STOP_TXN 2206
/*! reconciliation: records written including a prepare */
-#define WT_STAT_DSRC_REC_TIME_WINDOW_PREPARED 2206
+#define WT_STAT_DSRC_REC_TIME_WINDOW_PREPARED 2207
/*! reconciliation: records written including a start durable timestamp */
-#define WT_STAT_DSRC_REC_TIME_WINDOW_DURABLE_START_TS 2207
+#define WT_STAT_DSRC_REC_TIME_WINDOW_DURABLE_START_TS 2208
/*! reconciliation: records written including a start timestamp */
-#define WT_STAT_DSRC_REC_TIME_WINDOW_START_TS 2208
+#define WT_STAT_DSRC_REC_TIME_WINDOW_START_TS 2209
/*! reconciliation: records written including a start transaction ID */
-#define WT_STAT_DSRC_REC_TIME_WINDOW_START_TXN 2209
+#define WT_STAT_DSRC_REC_TIME_WINDOW_START_TXN 2210
/*! reconciliation: records written including a stop durable timestamp */
-#define WT_STAT_DSRC_REC_TIME_WINDOW_DURABLE_STOP_TS 2210
+#define WT_STAT_DSRC_REC_TIME_WINDOW_DURABLE_STOP_TS 2211
/*! reconciliation: records written including a stop timestamp */
-#define WT_STAT_DSRC_REC_TIME_WINDOW_STOP_TS 2211
+#define WT_STAT_DSRC_REC_TIME_WINDOW_STOP_TS 2212
/*! reconciliation: records written including a stop transaction ID */
-#define WT_STAT_DSRC_REC_TIME_WINDOW_STOP_TXN 2212
+#define WT_STAT_DSRC_REC_TIME_WINDOW_STOP_TXN 2213
/*! session: object compaction */
-#define WT_STAT_DSRC_SESSION_COMPACT 2213
+#define WT_STAT_DSRC_SESSION_COMPACT 2214
/*! session: tiered operations dequeued and processed */
-#define WT_STAT_DSRC_TIERED_WORK_UNITS_DEQUEUED 2214
+#define WT_STAT_DSRC_TIERED_WORK_UNITS_DEQUEUED 2215
/*! session: tiered operations scheduled */
-#define WT_STAT_DSRC_TIERED_WORK_UNITS_CREATED 2215
+#define WT_STAT_DSRC_TIERED_WORK_UNITS_CREATED 2216
/*! session: tiered storage local retention time (secs) */
-#define WT_STAT_DSRC_TIERED_RETENTION 2216
+#define WT_STAT_DSRC_TIERED_RETENTION 2217
/*! transaction: race to read prepared update retry */
-#define WT_STAT_DSRC_TXN_READ_RACE_PREPARE_UPDATE 2217
+#define WT_STAT_DSRC_TXN_READ_RACE_PREPARE_UPDATE 2218
/*!
* transaction: rollback to stable history store records with stop
* timestamps older than newer records
*/
-#define WT_STAT_DSRC_TXN_RTS_HS_STOP_OLDER_THAN_NEWER_START 2218
+#define WT_STAT_DSRC_TXN_RTS_HS_STOP_OLDER_THAN_NEWER_START 2219
/*! transaction: rollback to stable inconsistent checkpoint */
-#define WT_STAT_DSRC_TXN_RTS_INCONSISTENT_CKPT 2219
+#define WT_STAT_DSRC_TXN_RTS_INCONSISTENT_CKPT 2220
/*! transaction: rollback to stable keys removed */
-#define WT_STAT_DSRC_TXN_RTS_KEYS_REMOVED 2220
+#define WT_STAT_DSRC_TXN_RTS_KEYS_REMOVED 2221
/*! transaction: rollback to stable keys restored */
-#define WT_STAT_DSRC_TXN_RTS_KEYS_RESTORED 2221
+#define WT_STAT_DSRC_TXN_RTS_KEYS_RESTORED 2222
/*! transaction: rollback to stable restored tombstones from history store */
-#define WT_STAT_DSRC_TXN_RTS_HS_RESTORE_TOMBSTONES 2222
+#define WT_STAT_DSRC_TXN_RTS_HS_RESTORE_TOMBSTONES 2223
/*! transaction: rollback to stable restored updates from history store */
-#define WT_STAT_DSRC_TXN_RTS_HS_RESTORE_UPDATES 2223
+#define WT_STAT_DSRC_TXN_RTS_HS_RESTORE_UPDATES 2224
/*! transaction: rollback to stable skipping delete rle */
-#define WT_STAT_DSRC_TXN_RTS_DELETE_RLE_SKIPPED 2224
+#define WT_STAT_DSRC_TXN_RTS_DELETE_RLE_SKIPPED 2225
/*! transaction: rollback to stable skipping stable rle */
-#define WT_STAT_DSRC_TXN_RTS_STABLE_RLE_SKIPPED 2225
+#define WT_STAT_DSRC_TXN_RTS_STABLE_RLE_SKIPPED 2226
/*! transaction: rollback to stable sweeping history store keys */
-#define WT_STAT_DSRC_TXN_RTS_SWEEP_HS_KEYS 2226
+#define WT_STAT_DSRC_TXN_RTS_SWEEP_HS_KEYS 2227
/*! transaction: rollback to stable updates removed from history store */
-#define WT_STAT_DSRC_TXN_RTS_HS_REMOVED 2227
+#define WT_STAT_DSRC_TXN_RTS_HS_REMOVED 2228
/*! transaction: transaction checkpoints due to obsolete pages */
-#define WT_STAT_DSRC_TXN_CHECKPOINT_OBSOLETE_APPLIED 2228
+#define WT_STAT_DSRC_TXN_CHECKPOINT_OBSOLETE_APPLIED 2229
/*! transaction: update conflicts */
-#define WT_STAT_DSRC_TXN_UPDATE_CONFLICT 2229
+#define WT_STAT_DSRC_TXN_UPDATE_CONFLICT 2230
/*!
* @}
diff --git a/src/third_party/wiredtiger/src/reconcile/rec_visibility.c b/src/third_party/wiredtiger/src/reconcile/rec_visibility.c
index c1f48d84612..21ca2b57037 100644
--- a/src/third_party/wiredtiger/src/reconcile/rec_visibility.c
+++ b/src/third_party/wiredtiger/src/reconcile/rec_visibility.c
@@ -189,12 +189,27 @@ static inline bool
__rec_need_save_upd(
WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_UPDATE_SELECT *upd_select, bool has_newer_updates)
{
+ WT_UPDATE *upd;
+
if (upd_select->tw.prepare)
return (true);
if (F_ISSET(r, WT_REC_EVICT) && has_newer_updates)
return (true);
+ /* No need to save the update chain if we want to delete the key from the disk image. */
+ if (upd_select->upd != NULL && upd_select->upd->type == WT_UPDATE_TOMBSTONE)
+ return (false);
+
+ /* Save the update chain to delete the update from the history store later. */
+ for (upd = upd_select->upd; upd != NULL; upd = upd->next) {
+ if (upd->txnid == WT_TXN_ABORTED)
+ continue;
+
+ if (F_ISSET(upd, WT_UPDATE_TO_DELETE_FROM_HS))
+ return (true);
+ }
+
/*
* Don't save updates for any reconciliation that doesn't involve history store (in-memory
* database, metadata, and history store reconciliation itself), except when the selected stop
@@ -279,6 +294,17 @@ __rec_validate_upd_chain(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_UPDATE *s
if (!F_ISSET(r, WT_REC_CHECKPOINT_RUNNING))
return (0);
+ for (upd = select_upd; upd != NULL; upd = upd->next) {
+ if (upd->txnid == WT_TXN_ABORTED)
+ continue;
+
+ /* Cannot delete the update from history store when checkpoint is running. */
+ if (F_ISSET(upd, WT_UPDATE_TO_DELETE_FROM_HS)) {
+ WT_STAT_CONN_DATA_INCR(session, cache_eviction_blocked_remove_hs_race_with_checkpoint);
+ return (EBUSY);
+ }
+ }
+
/*
* The selected time window may contain information that isn't visible given the selected
* update, as such we have to check it separately. This is true when there is a tombstone ahead
@@ -380,6 +406,9 @@ __wt_rec_upd_select(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_INSERT *ins, W
size_t upd_memsize;
uint64_t max_txn, session_txnid, txnid;
bool has_newer_updates, is_hs_page, supd_restore, upd_saved;
+#ifdef HAVE_DIAGNOSTIC
+ bool seen_prepare;
+#endif
/*
* The "saved updates" return value is used independently of returning an update we can write,
@@ -400,6 +429,10 @@ __wt_rec_upd_select(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_INSERT *ins, W
is_hs_page = F_ISSET(session->dhandle, WT_DHANDLE_HS);
session_txnid = WT_SESSION_TXN_SHARED(session)->id;
+#ifdef HAVE_DIAGNOSTIC
+ seen_prepare = false;
+#endif
+
/*
* If called with a WT_INSERT item, use its WT_UPDATE list (which must exist), otherwise check
* for an on-page row-store WT_UPDATE list (which may not exist). Return immediately if the item
@@ -479,6 +512,9 @@ __wt_rec_upd_select(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_INSERT *ins, W
has_newer_updates = true;
if (upd->start_ts > max_ts)
max_ts = upd->start_ts;
+#ifdef HAVE_DIADNOSTIC
+ seen_prepare = true;
+#endif
continue;
} else {
/*
@@ -760,9 +796,16 @@ __wt_rec_upd_select(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_INSERT *ins, W
* Paranoia: check that we didn't choose an update that has since been rolled back.
*/
WT_ASSERT(session, upd_select->upd == NULL || upd_select->upd->txnid != WT_TXN_ABORTED);
- /* We should never select an update that has been written to the history store. */
- WT_ASSERT(session, upd_select->upd == NULL || !F_ISSET(upd_select->upd, WT_UPDATE_HS));
- WT_ASSERT(session, tombstone == NULL || !F_ISSET(tombstone, WT_UPDATE_HS));
+ /*
+ * We should never select an update that has been written to the history store except checkpoint
+ * writes the update that is older than a prepared update.
+ */
+ WT_ASSERT(session,
+ upd_select->upd == NULL || !F_ISSET(upd_select->upd, WT_UPDATE_HS) ||
+ (!F_ISSET(r, WT_REC_EVICT) && seen_prepare));
+ WT_ASSERT(session,
+ tombstone == NULL || !F_ISSET(tombstone, WT_UPDATE_HS) ||
+ (!F_ISSET(r, WT_REC_EVICT) && seen_prepare));
/*
* Returning an update means the original on-page value might be lost, and that's a problem if
@@ -785,5 +828,8 @@ __wt_rec_upd_select(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_INSERT *ins, W
__wt_rec_time_window_clear_obsolete(session, upd_select, NULL, r);
+ WT_ASSERT(
+ session, upd_select->tw.stop_txn != WT_TXN_MAX || upd_select->tw.stop_ts == WT_TS_MAX);
+
return (0);
}
diff --git a/src/third_party/wiredtiger/src/support/stat.c b/src/third_party/wiredtiger/src/support/stat.c
index 5187beac9cc..b3363821bbf 100644
--- a/src/third_party/wiredtiger/src/support/stat.c
+++ b/src/third_party/wiredtiger/src/support/stat.c
@@ -63,6 +63,8 @@ static const char *const __stats_dsrc_desc[] = {
"disk update after validating the update chain",
"cache: eviction gave up due to detecting out of order timestamps on the update chain after the "
"selected on disk update",
+ "cache: eviction gave up due to needing to remove a record from the history store but checkpoint "
+ "is running",
"cache: eviction walk passes of a file",
"cache: eviction walk target pages histogram - 0-9",
"cache: eviction walk target pages histogram - 10-31",
@@ -339,6 +341,7 @@ __wt_stat_dsrc_clear_single(WT_DSRC_STATS *stats)
stats->cache_eviction_blocked_ooo_checkpoint_race_2 = 0;
stats->cache_eviction_blocked_ooo_checkpoint_race_3 = 0;
stats->cache_eviction_blocked_ooo_checkpoint_race_4 = 0;
+ stats->cache_eviction_blocked_remove_hs_race_with_checkpoint = 0;
stats->cache_eviction_walk_passes = 0;
stats->cache_eviction_target_page_lt10 = 0;
stats->cache_eviction_target_page_lt32 = 0;
@@ -598,6 +601,8 @@ __wt_stat_dsrc_aggregate_single(WT_DSRC_STATS *from, WT_DSRC_STATS *to)
from->cache_eviction_blocked_ooo_checkpoint_race_3;
to->cache_eviction_blocked_ooo_checkpoint_race_4 +=
from->cache_eviction_blocked_ooo_checkpoint_race_4;
+ to->cache_eviction_blocked_remove_hs_race_with_checkpoint +=
+ from->cache_eviction_blocked_remove_hs_race_with_checkpoint;
to->cache_eviction_walk_passes += from->cache_eviction_walk_passes;
to->cache_eviction_target_page_lt10 += from->cache_eviction_target_page_lt10;
to->cache_eviction_target_page_lt32 += from->cache_eviction_target_page_lt32;
@@ -852,6 +857,8 @@ __wt_stat_dsrc_aggregate(WT_DSRC_STATS **from, WT_DSRC_STATS *to)
WT_STAT_READ(from, cache_eviction_blocked_ooo_checkpoint_race_3);
to->cache_eviction_blocked_ooo_checkpoint_race_4 +=
WT_STAT_READ(from, cache_eviction_blocked_ooo_checkpoint_race_4);
+ to->cache_eviction_blocked_remove_hs_race_with_checkpoint +=
+ WT_STAT_READ(from, cache_eviction_blocked_remove_hs_race_with_checkpoint);
to->cache_eviction_walk_passes += WT_STAT_READ(from, cache_eviction_walk_passes);
to->cache_eviction_target_page_lt10 += WT_STAT_READ(from, cache_eviction_target_page_lt10);
to->cache_eviction_target_page_lt32 += WT_STAT_READ(from, cache_eviction_target_page_lt32);
@@ -1117,6 +1124,8 @@ static const char *const __stats_connection_desc[] = {
"disk update after validating the update chain",
"cache: eviction gave up due to detecting out of order timestamps on the update chain after the "
"selected on disk update",
+ "cache: eviction gave up due to needing to remove a record from the history store but checkpoint "
+ "is running",
"cache: eviction passes of a file",
"cache: eviction server candidate queue empty when topping up",
"cache: eviction server candidate queue not empty when topping up",
@@ -1507,9 +1516,6 @@ static const char *const __stats_connection_desc[] = {
"transaction: prepared transactions committed",
"transaction: prepared transactions currently active",
"transaction: prepared transactions rolled back",
- "transaction: prepared transactions rolled back and do not remove the history store entry",
- "transaction: prepared transactions rolled back and fix the history store entry with checkpoint "
- "reserved transaction id",
"transaction: query timestamp calls",
"transaction: race to read prepared update retry",
"transaction: rollback to stable calls",
@@ -1685,6 +1691,7 @@ __wt_stat_connection_clear_single(WT_CONNECTION_STATS *stats)
stats->cache_eviction_blocked_ooo_checkpoint_race_2 = 0;
stats->cache_eviction_blocked_ooo_checkpoint_race_3 = 0;
stats->cache_eviction_blocked_ooo_checkpoint_race_4 = 0;
+ stats->cache_eviction_blocked_remove_hs_race_with_checkpoint = 0;
stats->cache_eviction_walk_passes = 0;
stats->cache_eviction_queue_empty = 0;
stats->cache_eviction_queue_not_empty = 0;
@@ -2066,8 +2073,6 @@ __wt_stat_connection_clear_single(WT_CONNECTION_STATS *stats)
stats->txn_prepare_commit = 0;
stats->txn_prepare_active = 0;
stats->txn_prepare_rollback = 0;
- stats->txn_prepare_rollback_do_not_remove_hs_update = 0;
- stats->txn_prepare_rollback_fix_hs_update_with_ckpt_reserved_txnid = 0;
stats->txn_query_ts = 0;
stats->txn_read_race_prepare_update = 0;
stats->txn_rts = 0;
@@ -2222,6 +2227,8 @@ __wt_stat_connection_aggregate(WT_CONNECTION_STATS **from, WT_CONNECTION_STATS *
WT_STAT_READ(from, cache_eviction_blocked_ooo_checkpoint_race_3);
to->cache_eviction_blocked_ooo_checkpoint_race_4 +=
WT_STAT_READ(from, cache_eviction_blocked_ooo_checkpoint_race_4);
+ to->cache_eviction_blocked_remove_hs_race_with_checkpoint +=
+ WT_STAT_READ(from, cache_eviction_blocked_remove_hs_race_with_checkpoint);
to->cache_eviction_walk_passes += WT_STAT_READ(from, cache_eviction_walk_passes);
to->cache_eviction_queue_empty += WT_STAT_READ(from, cache_eviction_queue_empty);
to->cache_eviction_queue_not_empty += WT_STAT_READ(from, cache_eviction_queue_not_empty);
@@ -2638,10 +2645,6 @@ __wt_stat_connection_aggregate(WT_CONNECTION_STATS **from, WT_CONNECTION_STATS *
to->txn_prepare_commit += WT_STAT_READ(from, txn_prepare_commit);
to->txn_prepare_active += WT_STAT_READ(from, txn_prepare_active);
to->txn_prepare_rollback += WT_STAT_READ(from, txn_prepare_rollback);
- to->txn_prepare_rollback_do_not_remove_hs_update +=
- WT_STAT_READ(from, txn_prepare_rollback_do_not_remove_hs_update);
- to->txn_prepare_rollback_fix_hs_update_with_ckpt_reserved_txnid +=
- WT_STAT_READ(from, txn_prepare_rollback_fix_hs_update_with_ckpt_reserved_txnid);
to->txn_query_ts += WT_STAT_READ(from, txn_query_ts);
to->txn_read_race_prepare_update += WT_STAT_READ(from, txn_read_race_prepare_update);
to->txn_rts += WT_STAT_READ(from, txn_rts);
diff --git a/src/third_party/wiredtiger/src/txn/txn.c b/src/third_party/wiredtiger/src/txn/txn.c
index 5beb059c12b..6de0205e967 100644
--- a/src/third_party/wiredtiger/src/txn/txn.c
+++ b/src/third_party/wiredtiger/src/txn/txn.c
@@ -719,7 +719,7 @@ __wt_txn_release(WT_SESSION_IMPL *session)
static int
__txn_locate_hs_record(WT_SESSION_IMPL *session, WT_CURSOR *hs_cursor, WT_PAGE *page,
WT_UPDATE *chain, bool commit, WT_UPDATE **fix_updp, bool *upd_appended,
- bool first_committed_upd_in_hs)
+ WT_UPDATE *first_committed_upd, bool first_committed_upd_in_hs)
{
WT_DECL_ITEM(hs_value);
WT_DECL_RET;
@@ -732,6 +732,7 @@ __txn_locate_hs_record(WT_SESSION_IMPL *session, WT_CURSOR *hs_cursor, WT_PAGE *
WT_ASSERT(session, chain != NULL);
+ hs_tw = NULL;
*fix_updp = NULL;
*upd_appended = false;
size = total_size = 0;
@@ -752,12 +753,16 @@ __txn_locate_hs_record(WT_SESSION_IMPL *session, WT_CURSOR *hs_cursor, WT_PAGE *
if (hs_stop_durable_ts != WT_TS_MAX && commit)
goto done;
- __wt_hs_upd_time_window(hs_cursor, &hs_tw);
- WT_ERR(__wt_upd_alloc(session, hs_value, WT_UPDATE_STANDARD, &upd, &size));
- upd->txnid = hs_tw->start_txn;
- upd->durable_ts = hs_tw->durable_start_ts;
- upd->start_ts = hs_tw->start_ts;
- *fix_updp = upd;
+ if (!first_committed_upd_in_hs) {
+ __wt_hs_upd_time_window(hs_cursor, &hs_tw);
+ WT_ERR(__wt_upd_alloc(session, hs_value, WT_UPDATE_STANDARD, &upd, &size));
+ upd->txnid = hs_tw->start_txn;
+ upd->durable_ts = hs_tw->durable_start_ts;
+ upd->start_ts = hs_tw->start_ts;
+ if (commit)
+ *fix_updp = upd;
+ } else if (commit)
+ *fix_updp = first_committed_upd;
/*
* When the prepared update is getting committed or the history store update is still on the
@@ -770,7 +775,7 @@ __txn_locate_hs_record(WT_SESSION_IMPL *session, WT_CURSOR *hs_cursor, WT_PAGE *
* Set the flag to indicate that this update has been restored from history store for the
* rollback of a prepared transaction.
*/
- F_SET(upd, WT_UPDATE_RESTORED_FROM_HS);
+ F_SET(upd, WT_UPDATE_RESTORED_FROM_HS | WT_UPDATE_TO_DELETE_FROM_HS);
total_size += size;
__wt_verbose(session, WT_VERB_TRANSACTION,
@@ -790,7 +795,7 @@ __txn_locate_hs_record(WT_SESSION_IMPL *session, WT_CURSOR *hs_cursor, WT_PAGE *
* Set the flag to indicate that this update has been restored from history store for the
* rollback of a prepared transaction.
*/
- F_SET(tombstone, WT_UPDATE_RESTORED_FROM_HS);
+ F_SET(tombstone, WT_UPDATE_RESTORED_FROM_HS | WT_UPDATE_TO_DELETE_FROM_HS);
total_size += size;
__wt_verbose(session, WT_VERB_TRANSACTION,
@@ -814,7 +819,6 @@ __txn_locate_hs_record(WT_SESSION_IMPL *session, WT_CURSOR *hs_cursor, WT_PAGE *
WT_PUBLISH(chain->next, upd);
*upd_appended = true;
- *fix_updp = upd;
__wt_cache_page_inmem_incr(session, page, total_size);
if (0) {
@@ -909,18 +913,15 @@ __txn_timestamp_usage_check(WT_SESSION_IMPL *session, WT_TXN_OP *op, WT_UPDATE *
/*
* __txn_fixup_prepared_update --
- * Fix/restore the history store update of a prepared datastore update based on transaction
- * status.
+ * Fix the history store record with the max stop time point if we commit the prepared update.
*/
static int
-__txn_fixup_prepared_update(
- WT_SESSION_IMPL *session, WT_CURSOR *hs_cursor, WT_UPDATE *fix_upd, bool commit)
+__txn_fixup_prepared_update(WT_SESSION_IMPL *session, WT_CURSOR *hs_cursor, WT_UPDATE *fix_upd)
{
WT_DECL_RET;
WT_ITEM hs_value;
WT_TIME_WINDOW tw;
WT_TXN *txn;
- WT_TXN_GLOBAL *txn_global;
uint32_t txn_flags;
#ifdef HAVE_DIAGNOSTIC
uint64_t hs_upd_type;
@@ -928,12 +929,14 @@ __txn_fixup_prepared_update(
#endif
txn = session->txn;
- txn_global = &S2C(session)->txn_global;
WT_TIME_WINDOW_INIT(&tw);
+ /* We should not fix a history store record already with a valid tombstone. */
+ WT_ASSERT(session, fix_upd->type != WT_UPDATE_TOMBSTONE);
+
/*
- * Transaction error and prepare are cleared temporarily as cursor functions are not allowed
- * after an error or a prepared transaction.
+ * Transaction error is cleared temporarily as cursor functions are not allowed after an error
+ * or a prepared transaction.
*/
txn_flags = FLD_MASK(txn->flags, WT_TXN_ERROR);
F_CLR(txn, txn_flags);
@@ -947,75 +950,28 @@ __txn_fixup_prepared_update(
*/
F_SET(txn, WT_TXN_PREPARE_IGNORE_API_CHECK);
- /*
- * If the history update already has a stop time point and we are committing the prepared update
- * there is no work to do.
- */
- if (commit) {
- tw.stop_ts = txn->commit_timestamp;
- tw.durable_stop_ts = txn->durable_timestamp;
- tw.stop_txn = txn->id;
- WT_TIME_WINDOW_SET_START(&tw, fix_upd);
+ tw.stop_ts = txn->commit_timestamp;
+ tw.durable_stop_ts = txn->durable_timestamp;
+ tw.stop_txn = txn->id;
+ WT_TIME_WINDOW_SET_START(&tw, fix_upd);
#ifdef HAVE_DIAGNOSTIC
- /* Retrieve the existing update value and stop timestamp. */
- WT_ERR(hs_cursor->get_value(
- hs_cursor, &hs_stop_durable_ts, &hs_durable_ts, &hs_upd_type, &hs_value));
- WT_ASSERT(session, hs_stop_durable_ts == WT_TS_MAX);
- WT_ASSERT(session, (uint8_t)hs_upd_type == WT_UPDATE_STANDARD);
+ /* Retrieve the existing update value and stop timestamp. */
+ WT_ERR(hs_cursor->get_value(
+ hs_cursor, &hs_stop_durable_ts, &hs_durable_ts, &hs_upd_type, &hs_value));
+ WT_ASSERT(session, hs_stop_durable_ts == WT_TS_MAX);
+ WT_ASSERT(session, (uint8_t)hs_upd_type == WT_UPDATE_STANDARD);
#endif
- /*
- * We need to update the stop durable timestamp stored in the history store value.
- *
- * Pack the value using cursor api.
- */
- hs_value.data = fix_upd->data;
- hs_value.size = fix_upd->size;
- hs_cursor->set_value(hs_cursor, &tw, tw.durable_stop_ts, tw.durable_start_ts,
- (uint64_t)WT_UPDATE_STANDARD, &hs_value);
- WT_ERR(hs_cursor->update(hs_cursor));
- } else {
- /*
- * Remove the history store entry if a checkpoint is not running, otherwise place a
- * tombstone in front of the history store entry if it doesn't have a stop timestamp.
- */
- if (txn_global->checkpoint_running) {
- /* Don't update the history store entry if the entry already has a stop timestamp. */
- if (fix_upd->type != WT_UPDATE_TOMBSTONE) {
- /*
- * When the history store's update start transaction id is greater than the
- * checkpoint's reserved transaction id, the durable timestamp of this update is
- * guaranteed to be greater than the checkpoint timestamp, as such there is no need
- * to save this unstable update in the history store.
- */
- if (fix_upd->txnid > txn_global->checkpoint_reserved_txn_id)
- WT_ERR(hs_cursor->remove(hs_cursor));
- else {
- tw.durable_stop_ts = fix_upd->durable_ts;
- tw.stop_ts = fix_upd->start_ts;
-
- /*
- * Set the stop transaction id of the time window to the checkpoint reserved
- * transaction id. As such the tombstone won't be visible to rollback to stable,
- * additionally checkpoint garbage collection cannot clean it up as it greater
- * than the globally visible transaction id.
- */
- tw.stop_txn = txn_global->checkpoint_reserved_txn_id;
- WT_TIME_WINDOW_SET_START(&tw, fix_upd);
-
- hs_value.data = fix_upd->data;
- hs_value.size = fix_upd->size;
- hs_cursor->set_value(hs_cursor, &tw, tw.durable_stop_ts, tw.durable_start_ts,
- (uint64_t)WT_UPDATE_STANDARD, &hs_value);
- WT_ERR(hs_cursor->update(hs_cursor));
- WT_STAT_CONN_INCR(
- session, txn_prepare_rollback_fix_hs_update_with_ckpt_reserved_txnid);
- }
- } else
- WT_STAT_CONN_INCR(session, txn_prepare_rollback_do_not_remove_hs_update);
- } else
- WT_ERR(hs_cursor->remove(hs_cursor));
- }
+ /*
+ * We need to update the stop durable timestamp stored in the history store value.
+ *
+ * Pack the value using cursor api.
+ */
+ hs_value.data = fix_upd->data;
+ hs_value.size = fix_upd->size;
+ hs_cursor->set_value(hs_cursor, &tw, tw.durable_stop_ts, tw.durable_start_ts,
+ (uint64_t)WT_UPDATE_STANDARD, &hs_value);
+ WT_ERR(hs_cursor->update(hs_cursor));
err:
F_SET(txn, txn_flags);
@@ -1197,7 +1153,7 @@ __txn_resolve_prepared_op(WT_SESSION_IMPL *session, WT_TXN_OP *op, bool commit,
WT_PAGE *page;
WT_TIME_WINDOW tw;
WT_TXN *txn;
- WT_UPDATE *first_committed_upd, *fix_upd, *upd;
+ WT_UPDATE *first_committed_upd, *fix_upd, *upd, *upd_followed_tombstone;
#ifdef HAVE_DIAGNOSTIC
WT_UPDATE *head_upd;
#endif
@@ -1282,6 +1238,27 @@ __txn_resolve_prepared_op(WT_SESSION_IMPL *session, WT_TXN_OP *op, bool commit,
upd->txnid == upd->next->txnid && upd->start_ts == upd->next->start_ts));
first_committed_upd_in_hs =
first_committed_upd != NULL && F_ISSET(first_committed_upd, WT_UPDATE_HS);
+
+ /*
+ * Marked the update older than the prepared update that is already in the history store to be
+ * deleted from the history store.
+ */
+ if (first_committed_upd_in_hs && !commit) {
+ if (first_committed_upd->type == WT_UPDATE_TOMBSTONE) {
+ for (upd_followed_tombstone = first_committed_upd->next; upd_followed_tombstone != NULL;
+ upd_followed_tombstone = upd_followed_tombstone->next)
+ if (upd_followed_tombstone->txnid != WT_TXN_ABORTED)
+ break;
+ /* We may not find a full update following the tombstone if it is obsolete. */
+ if (upd_followed_tombstone != NULL) {
+ WT_ASSERT(session, F_ISSET(upd_followed_tombstone, WT_UPDATE_HS));
+ F_SET(first_committed_upd, WT_UPDATE_TO_DELETE_FROM_HS);
+ F_SET(upd_followed_tombstone, WT_UPDATE_TO_DELETE_FROM_HS);
+ }
+ } else
+ F_SET(first_committed_upd, WT_UPDATE_TO_DELETE_FROM_HS);
+ }
+
if (prepare_on_disk || first_committed_upd_in_hs) {
btree = S2BT(session);
@@ -1312,8 +1289,8 @@ __txn_resolve_prepared_op(WT_SESSION_IMPL *session, WT_TXN_OP *op, bool commit,
*/
WT_ERR(__txn_append_tombstone(session, op, cbt));
} else if (ret == 0)
- WT_ERR(__txn_locate_hs_record(
- session, hs_cursor, page, upd, commit, &fix_upd, &upd_appended, first_committed_upd));
+ WT_ERR(__txn_locate_hs_record(session, hs_cursor, page, upd, commit, &fix_upd,
+ &upd_appended, first_committed_upd, first_committed_upd_in_hs));
else
ret = 0;
} else if (F_ISSET(S2C(session), WT_CONN_IN_MEMORY) && !commit && first_committed_upd == NULL) {
@@ -1365,10 +1342,8 @@ __txn_resolve_prepared_op(WT_SESSION_IMPL *session, WT_TXN_OP *op, bool commit,
* will be only one uncommitted prepared update.
*/
if (fix_upd != NULL) {
- WT_ERR(__txn_fixup_prepared_update(session, hs_cursor, fix_upd, commit));
- /* Clear the WT_UPDATE_HS flag as we should have removed it from the history store. */
- if (first_committed_upd_in_hs && !commit)
- F_CLR(first_committed_upd, WT_UPDATE_HS);
+ WT_ASSERT(session, commit && fix_upd->type != WT_UPDATE_TOMBSTONE);
+ WT_ERR(__txn_fixup_prepared_update(session, hs_cursor, fix_upd));
}
prepare_verify:
diff --git a/src/third_party/wiredtiger/test/suite/test_prepare20.py b/src/third_party/wiredtiger/test/suite/test_prepare20.py
index 0b541d40730..6f219ea2c83 100644
--- a/src/third_party/wiredtiger/test/suite/test_prepare20.py
+++ b/src/third_party/wiredtiger/test/suite/test_prepare20.py
@@ -27,14 +27,14 @@
# OTHER DEALINGS IN THE SOFTWARE.
-# test_prepare19.py
+# test_prepare20.py
# Check that we can use an application-level log to replay unstable transactions.
-import wiredtiger, wttest
+import wttest
from wtscenario import make_scenarios
from helper import simulate_crash_restart
-class test_prepare19(wttest.WiredTigerTestCase):
+class test_prepare20(wttest.WiredTigerTestCase):
# Do write the logs immediately, but don't waste time fsyncing them.
conn_config = 'log=(enabled),transaction_sync=(enabled=true,method=none)'
@@ -131,7 +131,7 @@ class test_prepare19(wttest.WiredTigerTestCase):
# First pass: find prepared txns. Ignore (thus abort) any that didn't even prepare.
txns = {}
self.lcursor.reset()
- for lsn, op, k, oldv, newv in self.lcursor:
+ for _, op, k, oldv, newv in self.lcursor:
if op == self.BEGIN:
# "key" is the txnid
txns[k] = False
@@ -143,7 +143,7 @@ class test_prepare19(wttest.WiredTigerTestCase):
writing = False
committime = None
durabletime = None
- for lsn, op, k, oldv, newv in self.lcursor:
+ for _, op, k, oldv, newv in self.lcursor:
if op == self.BEGIN:
# "key" is the txnid
if txns[k]:
@@ -198,9 +198,9 @@ class test_prepare19(wttest.WiredTigerTestCase):
# Now the test.
- def test_prepare19(self):
- data_uri = 'file:prepare19data'
- log_uri = 'file:prepare19log'
+ def test_prepare20(self):
+ data_uri = 'file:prepare20data'
+ log_uri = 'file:prepare20log'
# Create one table for data and another to be an application-level log.
# The log's format is application-lsn -> operation, key, oldvalue, newvalue
diff --git a/src/third_party/wiredtiger/test/suite/test_prepare21.py b/src/third_party/wiredtiger/test/suite/test_prepare21.py
new file mode 100644
index 00000000000..ec61092d04c
--- /dev/null
+++ b/src/third_party/wiredtiger/test/suite/test_prepare21.py
@@ -0,0 +1,135 @@
+#!/usr/bin/env python
+#
+# Public Domain 2014-present MongoDB, Inc.
+# Public Domain 2008-2014 WiredTiger, Inc.
+#
+# This is free and unencumbered software released into the public domain.
+#
+# Anyone is free to copy, modify, publish, use, compile, sell, or
+# distribute this software, either in source code form or as a compiled
+# binary, for any purpose, commercial or non-commercial, and by any
+# means.
+#
+# In jurisdictions that recognize copyright laws, the author or authors
+# of this software dedicate any and all copyright interest in the
+# software to the public domain. We make this dedication for the benefit
+# of the public at large and to the detriment of our heirs and
+# successors. We intend this dedication to be an overt act of
+# relinquishment in perpetuity of all present and future rights to this
+# software under copyright law.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+# OTHER DEALINGS IN THE SOFTWARE.
+
+import threading, time
+from helper import simulate_crash_restart
+from test_rollback_to_stable01 import test_rollback_to_stable_base
+from wiredtiger import stat
+from wtdataset import SimpleDataSet
+from wtscenario import make_scenarios
+from wtthread import checkpoint_thread
+
+# test_prepare21.py
+# Test prepare rollback doesn't crash because of triggering out of order fix.
+class test_prepare21(test_rollback_to_stable_base):
+
+ format_values = [
+ ('column', dict(key_format='r', value_format='S')),
+ ('column_fix', dict(key_format='r', value_format='8t')),
+ ('row_integer', dict(key_format='i', value_format='S')),
+ ]
+
+ scenarios = make_scenarios(format_values)
+
+ def conn_config(self):
+ config = 'cache_size=10MB,statistics=(all),timing_stress_for_test=[history_store_checkpoint_delay]'
+ return config
+
+ def evict_cursor(self, uri, nrows):
+ # Configure debug behavior on a cursor to evict the page positioned on when the reset API is used.
+ evict_cursor = self.session.open_cursor(uri, None, "debug=(release_evict)")
+ self.session.begin_transaction("ignore_prepare=true")
+ for i in range (1, nrows + 1):
+ evict_cursor.set_key(i)
+ evict_cursor.search()
+ evict_cursor.reset()
+ evict_cursor.close()
+ self.session.rollback_transaction()
+
+ def test_prepare_rollback(self):
+ nrows = 10
+
+ # Create a table.
+ uri = "table:prepare21"
+ ds = SimpleDataSet(self, uri, 0, key_format=self.key_format, value_format=self.value_format)
+ ds.populate()
+
+ if self.value_format == '8t':
+ value_a = 97
+ value_b = 98
+ value_c = 99
+ value_d = 100
+ else:
+ value_a = "aaaaa" * 100
+ value_b = "bbbbb" * 100
+ value_c = "ccccc" * 100
+ value_d = "ddddd" * 100
+
+ # Pin oldest and stable to timestamp 10.
+ self.conn.set_timestamp('oldest_timestamp=' + self.timestamp_str(10) +
+ ',stable_timestamp=' + self.timestamp_str(10))
+
+ self.large_updates(uri, value_a, ds, nrows, False, 20)
+ self.large_updates(uri, value_b, ds, nrows, False, 30)
+ self.large_removes(uri, ds, nrows, False, 40)
+
+ prepare_session = self.conn.open_session()
+ prepare_session.begin_transaction()
+ cursor = prepare_session.open_cursor(uri)
+ for i in range (1, nrows + 1):
+ cursor[i] = value_c
+ cursor.close()
+ prepare_session.prepare_transaction('prepare_timestamp=' + self.timestamp_str(50))
+
+ # Verify data is visible and correct.
+ self.check(value_a, uri, nrows, None, 20)
+ self.check(value_b, uri, nrows, None, 30)
+
+ self.evict_cursor(uri, nrows)
+
+ # Pin stable to timestamp 40.
+ self.conn.set_timestamp('stable_timestamp=' + self.timestamp_str(40))
+
+ # Rollback the prepared update
+ prepare_session.rollback_transaction()
+ self.large_updates(uri, value_d, ds, nrows, False, 60)
+
+ done = threading.Event()
+ ckpt = checkpoint_thread(self.conn, done)
+ try:
+ ckpt.start()
+
+ # Wait for checkpoint to start before committing last transaction.
+ ckpt_started = 0
+ while not ckpt_started:
+ stat_cursor = self.session.open_cursor('statistics:', None, None)
+ ckpt_started = stat_cursor[stat.conn.txn_checkpoint_running][2]
+ stat_cursor.close()
+
+ self.evict_cursor(uri, nrows)
+ finally:
+ done.set()
+ ckpt.join()
+
+ # Verify data is visible and correct.
+ self.check(value_a, uri, nrows, None, 20)
+ self.check(value_b, uri, nrows, None, 30)
+ self.check(value_d, uri, nrows, None, 60)
+
+if __name__ == '__main__':
+ wttest.run()