summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/third_party/wiredtiger/dist/s_string.ok1
-rw-r--r--src/third_party/wiredtiger/dist/stat_data.py4
-rw-r--r--src/third_party/wiredtiger/import.data2
-rw-r--r--src/third_party/wiredtiger/src/history/hs_rec.c83
-rw-r--r--src/third_party/wiredtiger/src/include/extern.h2
-rw-r--r--src/third_party/wiredtiger/src/include/stat.h8
-rw-r--r--src/third_party/wiredtiger/src/include/wiredtiger.in1262
-rw-r--r--src/third_party/wiredtiger/src/reconcile/rec_col.c12
-rw-r--r--src/third_party/wiredtiger/src/reconcile/rec_row.c11
-rw-r--r--src/third_party/wiredtiger/src/reconcile/rec_visibility.c175
-rw-r--r--src/third_party/wiredtiger/src/support/stat.c48
-rw-r--r--src/third_party/wiredtiger/test/suite/test_hs24.py19
-rw-r--r--src/third_party/wiredtiger/test/suite/test_hs_evict_race01.py109
13 files changed, 1051 insertions, 685 deletions
diff --git a/src/third_party/wiredtiger/dist/s_string.ok b/src/third_party/wiredtiger/dist/s_string.ok
index 7ed2f3b6473..4de70302311 100644
--- a/src/third_party/wiredtiger/dist/s_string.ok
+++ b/src/third_party/wiredtiger/dist/s_string.ok
@@ -103,6 +103,7 @@ DIRECTIO
DNE
DOI
DONTNEED
+DS
DSK
DUPLICATEV
DataSet
diff --git a/src/third_party/wiredtiger/dist/stat_data.py b/src/third_party/wiredtiger/dist/stat_data.py
index 05efc9107ca..b26301b26bb 100644
--- a/src/third_party/wiredtiger/dist/stat_data.py
+++ b/src/third_party/wiredtiger/dist/stat_data.py
@@ -762,6 +762,10 @@ conn_dsrc_stats = [
CacheStat('cache_bytes_write', 'bytes written from cache', 'size'),
CacheStat('cache_eviction_checkpoint', 'checkpoint blocked page eviction'),
CacheStat('cache_eviction_blocked_checkpoint_hs', 'checkpoint of history store file blocked non-history store page eviction'),
+ CacheStat('cache_eviction_blocked_ooo_checkpoint_race_1', 'eviction gave up due to detecting an out of order on disk value behind the last update on the chain'),
+ 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_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 fc19d257fb8..1d385104d0a 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-4.4",
- "commit": "7f9d2bd3eefbb725301d6075db7ce48c3b33e159"
+ "commit": "9893156289e444466848ae5d2b5ada7a4e0d6c0d"
}
diff --git a/src/third_party/wiredtiger/src/history/hs_rec.c b/src/third_party/wiredtiger/src/history/hs_rec.c
index 1f927309f94..777c2a74863 100644
--- a/src/third_party/wiredtiger/src/history/hs_rec.c
+++ b/src/third_party/wiredtiger/src/history/hs_rec.c
@@ -9,7 +9,8 @@
#include "wt_internal.h"
static int __hs_delete_reinsert_from_pos(WT_SESSION_IMPL *session, WT_CURSOR *hs_cursor,
- uint32_t btree_id, const WT_ITEM *key, wt_timestamp_t ts, bool reinsert, uint64_t *hs_counter);
+ uint32_t btree_id, const WT_ITEM *key, wt_timestamp_t ts, bool reinsert, bool error_on_ooo_ts,
+ uint64_t *hs_counter);
/*
* __hs_verbose_cache_stats --
@@ -63,7 +64,7 @@ __hs_verbose_cache_stats(WT_SESSION_IMPL *session, WT_BTREE *btree)
*/
static int
__hs_insert_record(WT_SESSION_IMPL *session, WT_CURSOR *cursor, WT_BTREE *btree, const WT_ITEM *key,
- const uint8_t type, const WT_ITEM *hs_value, WT_TIME_WINDOW *tw, bool checkpoint_running)
+ const uint8_t type, const WT_ITEM *hs_value, WT_TIME_WINDOW *tw, bool error_on_ooo_ts)
{
#ifdef HAVE_DIAGNOSTIC
WT_CURSOR_BTREE *hs_cbt;
@@ -137,10 +138,6 @@ __hs_insert_record(WT_SESSION_IMPL *session, WT_CURSOR *cursor, WT_BTREE *btree,
cursor->set_key(cursor, 4, btree->id, key, tw->start_ts, UINT64_MAX);
WT_ERR_NOTFOUND_OK(__wt_curhs_search_near_before(session, cursor), true);
- /* Only clear the flag if it wasn't set when we entered the function. */
- if (!hs_read_all_flag)
- F_CLR(cursor, WT_CURSTD_HS_READ_ALL);
-
if (ret == 0) {
WT_ERR(cursor->get_key(cursor, &hs_btree_id, hs_key, &hs_start_ts, &hs_counter));
@@ -189,28 +186,12 @@ __hs_insert_record(WT_SESSION_IMPL *session, WT_CURSOR *cursor, WT_BTREE *btree,
if (ret == 0)
WT_ERR_NOTFOUND_OK(cursor->next(cursor), true);
else {
- F_SET(cursor, WT_CURSTD_HS_READ_ALL);
-
cursor->set_key(cursor, 3, btree->id, key, tw->start_ts + 1);
WT_ERR_NOTFOUND_OK(__wt_curhs_search_near_after(session, cursor), true);
-
- if (!hs_read_all_flag)
- F_CLR(cursor, WT_CURSTD_HS_READ_ALL);
}
- if (ret == 0) {
- /*
- * Fail the eviction if we detect out of order timestamp when checkpoint is running. We
- * cannot modify the history store to fix the out of order timestamp updates as it may make
- * the history store checkpoint inconsistent.
- */
- if (checkpoint_running) {
- ret = EBUSY;
- WT_STAT_CONN_INCR(session, cache_eviction_fail_checkpoint_out_of_order_ts);
- goto err;
- }
+ if (ret == 0)
WT_ERR(__hs_delete_reinsert_from_pos(
- session, cursor, btree->id, key, tw->start_ts + 1, true, &counter));
- }
+ session, cursor, btree->id, key, tw->start_ts + 1, true, error_on_ooo_ts, &counter));
#ifdef HAVE_DIAGNOSTIC
/*
@@ -312,9 +293,9 @@ __wt_hs_insert_updates(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_MULTI *mult
uint32_t i;
uint8_t *p;
int nentries;
- bool checkpoint_running, enable_reverse_modify, hs_inserted, squashed;
+ bool enable_reverse_modify, error_on_ooo_ts, hs_inserted, squashed;
- checkpoint_running = F_ISSET(r, WT_REC_CHECKPOINT_RUNNING);
+ error_on_ooo_ts = F_ISSET(r, WT_REC_CHECKPOINT_RUNNING);
r->cache_write_hs = false;
btree = S2BT(session);
prev_upd = NULL;
@@ -434,11 +415,11 @@ __wt_hs_insert_updates(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_MULTI *mult
if (min_ts_upd != NULL && min_ts_upd->start_ts < upd->start_ts &&
out_of_order_ts_upd != min_ts_upd) {
/*
- * Fail the eviction if we detect out of order timestamp when checkpoint is running.
+ * Fail the eviction if we detect out of order timestamps and the error flag is set.
* We cannot modify the history store to fix the out of order timestamp updates as
* it may make the history store checkpoint inconsistent.
*/
- if (checkpoint_running) {
+ if (error_on_ooo_ts) {
ret = EBUSY;
WT_STAT_CONN_INCR(session, cache_eviction_fail_checkpoint_out_of_order_ts);
goto err;
@@ -513,7 +494,7 @@ __wt_hs_insert_updates(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_MULTI *mult
if (!F_ISSET(fix_ts_upd, WT_UPDATE_FIXED_HS)) {
/* Delete and reinsert any update of the key with a higher timestamp. */
WT_ERR(__wt_hs_delete_key_from_ts(session, hs_cursor, btree->id, key,
- fix_ts_upd->start_ts + 1, true, checkpoint_running));
+ fix_ts_upd->start_ts + 1, true, error_on_ooo_ts));
F_SET(fix_ts_upd, WT_UPDATE_FIXED_HS);
}
}
@@ -670,13 +651,13 @@ __wt_hs_insert_updates(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_MULTI *mult
entries, &nentries) == 0) {
WT_ERR(__wt_modify_pack(hs_cursor, entries, nentries, &modify_value));
ret = __hs_insert_record(session, hs_cursor, btree, key, WT_UPDATE_MODIFY,
- modify_value, &tw, checkpoint_running);
+ modify_value, &tw, error_on_ooo_ts);
__wt_scr_free(session, &modify_value);
++modify_cnt;
} else {
modify_cnt = 0;
ret = __hs_insert_record(session, hs_cursor, btree, key, WT_UPDATE_STANDARD,
- full_value, &tw, checkpoint_running);
+ full_value, &tw, error_on_ooo_ts);
}
/*
@@ -763,7 +744,7 @@ err:
*/
int
__wt_hs_delete_key_from_ts(WT_SESSION_IMPL *session, WT_CURSOR *hs_cursor, uint32_t btree_id,
- const WT_ITEM *key, wt_timestamp_t ts, bool reinsert, bool checkpoint_running)
+ const WT_ITEM *key, wt_timestamp_t ts, bool reinsert, bool error_on_ooo_ts)
{
WT_DECL_RET;
WT_ITEM hs_key;
@@ -781,6 +762,10 @@ __wt_hs_delete_key_from_ts(WT_SESSION_IMPL *session, WT_CURSOR *hs_cursor, uint3
hs_read_all_flag = F_ISSET(hs_cursor, WT_CURSTD_HS_READ_ALL);
hs_cursor->set_key(hs_cursor, 3, btree_id, key, ts);
+ /*
+ * Setting the flag WT_CURSTD_HS_READ_ALL before searching the history store optimizes the
+ * search routine as we do not skip globally visible tombstones during the search.
+ */
F_SET(hs_cursor, WT_CURSTD_HS_READ_ALL);
WT_ERR_NOTFOUND_OK(__wt_curhs_search_near_after(session, hs_cursor), true);
/* Empty history store is fine. */
@@ -792,19 +777,9 @@ __wt_hs_delete_key_from_ts(WT_SESSION_IMPL *session, WT_CURSOR *hs_cursor, uint3
++hs_counter;
}
- /*
- * Fail the eviction if we detect out of order timestamp when checkpoint is running. We cannot
- * modify the history store to fix the out of order timestamp updates as it may make the history
- * store checkpoint inconsistent.
- */
- if (checkpoint_running) {
- ret = EBUSY;
- WT_STAT_CONN_INCR(session, cache_eviction_fail_checkpoint_out_of_order_ts);
- goto err;
- }
+ WT_ERR(__hs_delete_reinsert_from_pos(
+ session, hs_cursor, btree_id, key, ts, reinsert, error_on_ooo_ts, &hs_counter));
- WT_ERR(
- __hs_delete_reinsert_from_pos(session, hs_cursor, btree_id, key, ts, reinsert, &hs_counter));
done:
err:
if (!hs_read_all_flag)
@@ -821,13 +796,13 @@ err:
*/
static int
__hs_delete_reinsert_from_pos(WT_SESSION_IMPL *session, WT_CURSOR *hs_cursor, uint32_t btree_id,
- const WT_ITEM *key, wt_timestamp_t ts, bool reinsert, uint64_t *counter)
+ const WT_ITEM *key, wt_timestamp_t ts, bool reinsert, bool error_on_ooo_ts, uint64_t *counter)
{
WT_CURSOR *hs_insert_cursor;
WT_CURSOR_BTREE *hs_cbt;
WT_DECL_RET;
WT_ITEM hs_key, hs_value;
- WT_TIME_WINDOW tw, hs_insert_tw;
+ WT_TIME_WINDOW hs_insert_tw, tw, *twp;
wt_timestamp_t hs_ts;
uint64_t hs_counter, hs_upd_type;
uint32_t hs_btree_id;
@@ -850,6 +825,11 @@ __hs_delete_reinsert_from_pos(WT_SESSION_IMPL *session, WT_CURSOR *hs_cursor, ui
WT_ASSERT(session, ts > WT_TS_NONE || !reinsert);
for (; ret == 0; ret = hs_cursor->next(hs_cursor)) {
+ /* Ignore records that are obsolete. */
+ __wt_hs_upd_time_window(hs_cursor, &twp);
+ if (__wt_txn_tw_stop_visible_all(session, twp))
+ continue;
+
/* We shouldn't have crossed the btree and user key search space. */
WT_ERR(hs_cursor->get_key(hs_cursor, &hs_btree_id, &hs_key, &hs_ts, &hs_counter));
WT_ASSERT(session, hs_btree_id == btree_id);
@@ -866,6 +846,17 @@ __hs_delete_reinsert_from_pos(WT_SESSION_IMPL *session, WT_CURSOR *hs_cursor, ui
WT_ERR(ret);
/*
+ * Fail the eviction if we detect out of order timestamps when we've passed the error return
+ * flag. We cannot modify the history store to fix the out of order timestamp updates as it may
+ * make the history store checkpoint inconsistent.
+ */
+ if (error_on_ooo_ts) {
+ ret = EBUSY;
+ WT_STAT_CONN_INCR(session, cache_eviction_fail_checkpoint_out_of_order_ts);
+ goto err;
+ }
+
+ /*
* The goal of this function is to move out-of-order content to maintain ordering in the
* history store. We do this by removing content with higher timestamps and reinserting it
* behind (from search's point of view) the newly inserted update. Even though these updates
diff --git a/src/third_party/wiredtiger/src/include/extern.h b/src/third_party/wiredtiger/src/include/extern.h
index 601eff81c29..de46a4347be 100644
--- a/src/third_party/wiredtiger/src/include/extern.h
+++ b/src/third_party/wiredtiger/src/include/extern.h
@@ -778,7 +778,7 @@ extern int __wt_hex_to_raw(WT_SESSION_IMPL *session, const char *from, WT_ITEM *
extern int __wt_hs_config(WT_SESSION_IMPL *session, const char **cfg)
WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
extern int __wt_hs_delete_key_from_ts(WT_SESSION_IMPL *session, WT_CURSOR *hs_cursor,
- uint32_t btree_id, const WT_ITEM *key, wt_timestamp_t ts, bool reinsert, bool checkpoint_running)
+ uint32_t btree_id, const WT_ITEM *key, wt_timestamp_t ts, bool reinsert, bool error_on_ooo_ts)
WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result));
extern int __wt_hs_find_upd(WT_SESSION_IMPL *session, uint32_t btree_id, WT_ITEM *key,
const char *value_format, uint64_t recno, WT_UPDATE_VALUE *upd_value, WT_ITEM *base_value_buf)
diff --git a/src/third_party/wiredtiger/src/include/stat.h b/src/third_party/wiredtiger/src/include/stat.h
index 4b6b9cec111..fa97bd881c9 100644
--- a/src/third_party/wiredtiger/src/include/stat.h
+++ b/src/third_party/wiredtiger/src/include/stat.h
@@ -357,6 +357,10 @@ struct __wt_connection_stats {
int64_t cache_eviction_get_ref_empty2;
int64_t cache_eviction_aggressive_set;
int64_t cache_eviction_empty_score;
+ int64_t cache_eviction_blocked_ooo_checkpoint_race_1;
+ 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_walk_passes;
int64_t cache_eviction_queue_empty;
int64_t cache_eviction_queue_not_empty;
@@ -855,6 +859,10 @@ struct __wt_dsrc_stats {
int64_t cache_eviction_checkpoint;
int64_t cache_eviction_blocked_checkpoint_hs;
int64_t cache_eviction_fail;
+ int64_t cache_eviction_blocked_ooo_checkpoint_race_1;
+ 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_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 5b12a73e017..f35b643db2b 100644
--- a/src/third_party/wiredtiger/src/include/wiredtiger.in
+++ b/src/third_party/wiredtiger/src/include/wiredtiger.in
@@ -5080,1085 +5080,1105 @@ extern int wiredtiger_extension_terminate(WT_CONNECTION *connection);
#define WT_STAT_CONN_CACHE_EVICTION_AGGRESSIVE_SET 1042
/*! cache: eviction empty score */
#define WT_STAT_CONN_CACHE_EVICTION_EMPTY_SCORE 1043
+/*!
+ * cache: eviction gave up due to detecting an out of order on disk value
+ * behind the last update on the chain
+ */
+#define WT_STAT_CONN_CACHE_EVICTION_BLOCKED_OOO_CHECKPOINT_RACE_1 1044
+/*!
+ * cache: eviction gave up due to detecting an out of order tombstone
+ * ahead of the selected on disk update
+ */
+#define WT_STAT_CONN_CACHE_EVICTION_BLOCKED_OOO_CHECKPOINT_RACE_2 1045
+/*!
+ * cache: eviction gave up due to detecting an out of order tombstone
+ * ahead of the selected on disk update after validating the update chain
+ */
+#define WT_STAT_CONN_CACHE_EVICTION_BLOCKED_OOO_CHECKPOINT_RACE_3 1046
+/*!
+ * cache: eviction gave up due to detecting out of order timestamps on
+ * the update chain after the selected on disk update
+ */
+#define WT_STAT_CONN_CACHE_EVICTION_BLOCKED_OOO_CHECKPOINT_RACE_4 1047
/*! cache: eviction passes of a file */
-#define WT_STAT_CONN_CACHE_EVICTION_WALK_PASSES 1044
+#define WT_STAT_CONN_CACHE_EVICTION_WALK_PASSES 1048
/*! cache: eviction server candidate queue empty when topping up */
-#define WT_STAT_CONN_CACHE_EVICTION_QUEUE_EMPTY 1045
+#define WT_STAT_CONN_CACHE_EVICTION_QUEUE_EMPTY 1049
/*! cache: eviction server candidate queue not empty when topping up */
-#define WT_STAT_CONN_CACHE_EVICTION_QUEUE_NOT_EMPTY 1046
+#define WT_STAT_CONN_CACHE_EVICTION_QUEUE_NOT_EMPTY 1050
/*! cache: eviction server evicting pages */
-#define WT_STAT_CONN_CACHE_EVICTION_SERVER_EVICTING 1047
+#define WT_STAT_CONN_CACHE_EVICTION_SERVER_EVICTING 1051
/*!
* cache: eviction server slept, because we did not make progress with
* eviction
*/
-#define WT_STAT_CONN_CACHE_EVICTION_SERVER_SLEPT 1048
+#define WT_STAT_CONN_CACHE_EVICTION_SERVER_SLEPT 1052
/*! cache: eviction server unable to reach eviction goal */
-#define WT_STAT_CONN_CACHE_EVICTION_SLOW 1049
+#define WT_STAT_CONN_CACHE_EVICTION_SLOW 1053
/*! cache: eviction server waiting for a leaf page */
-#define WT_STAT_CONN_CACHE_EVICTION_WALK_LEAF_NOTFOUND 1050
+#define WT_STAT_CONN_CACHE_EVICTION_WALK_LEAF_NOTFOUND 1054
/*! cache: eviction state */
-#define WT_STAT_CONN_CACHE_EVICTION_STATE 1051
+#define WT_STAT_CONN_CACHE_EVICTION_STATE 1055
/*! cache: eviction walk target pages histogram - 0-9 */
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT10 1052
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT10 1056
/*! cache: eviction walk target pages histogram - 10-31 */
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT32 1053
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT32 1057
/*! cache: eviction walk target pages histogram - 128 and higher */
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_GE128 1054
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_GE128 1058
/*! cache: eviction walk target pages histogram - 32-63 */
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT64 1055
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT64 1059
/*! cache: eviction walk target pages histogram - 64-128 */
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT128 1056
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT128 1060
/*!
* cache: eviction walk target pages reduced due to history store cache
* pressure
*/
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_REDUCED 1057
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_REDUCED 1061
/*! cache: eviction walk target strategy both clean and dirty pages */
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_STRATEGY_BOTH_CLEAN_AND_DIRTY 1058
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_STRATEGY_BOTH_CLEAN_AND_DIRTY 1062
/*! cache: eviction walk target strategy only clean pages */
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_STRATEGY_CLEAN 1059
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_STRATEGY_CLEAN 1063
/*! cache: eviction walk target strategy only dirty pages */
-#define WT_STAT_CONN_CACHE_EVICTION_TARGET_STRATEGY_DIRTY 1060
+#define WT_STAT_CONN_CACHE_EVICTION_TARGET_STRATEGY_DIRTY 1064
/*! cache: eviction walks abandoned */
-#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ABANDONED 1061
+#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ABANDONED 1065
/*! cache: eviction walks gave up because they restarted their walk twice */
-#define WT_STAT_CONN_CACHE_EVICTION_WALKS_STOPPED 1062
+#define WT_STAT_CONN_CACHE_EVICTION_WALKS_STOPPED 1066
/*!
* 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 1063
+#define WT_STAT_CONN_CACHE_EVICTION_WALKS_GAVE_UP_NO_TARGETS 1067
/*!
* 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 1064
+#define WT_STAT_CONN_CACHE_EVICTION_WALKS_GAVE_UP_RATIO 1068
/*! cache: eviction walks reached end of tree */
-#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ENDED 1065
+#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ENDED 1069
/*! cache: eviction walks restarted */
-#define WT_STAT_CONN_CACHE_EVICTION_WALK_RESTART 1066
+#define WT_STAT_CONN_CACHE_EVICTION_WALK_RESTART 1070
/*! cache: eviction walks started from root of tree */
-#define WT_STAT_CONN_CACHE_EVICTION_WALK_FROM_ROOT 1067
+#define WT_STAT_CONN_CACHE_EVICTION_WALK_FROM_ROOT 1071
/*! cache: eviction walks started from saved location in tree */
-#define WT_STAT_CONN_CACHE_EVICTION_WALK_SAVED_POS 1068
+#define WT_STAT_CONN_CACHE_EVICTION_WALK_SAVED_POS 1072
/*! cache: eviction worker thread active */
-#define WT_STAT_CONN_CACHE_EVICTION_ACTIVE_WORKERS 1069
+#define WT_STAT_CONN_CACHE_EVICTION_ACTIVE_WORKERS 1073
/*! cache: eviction worker thread created */
-#define WT_STAT_CONN_CACHE_EVICTION_WORKER_CREATED 1070
+#define WT_STAT_CONN_CACHE_EVICTION_WORKER_CREATED 1074
/*! cache: eviction worker thread evicting pages */
-#define WT_STAT_CONN_CACHE_EVICTION_WORKER_EVICTING 1071
+#define WT_STAT_CONN_CACHE_EVICTION_WORKER_EVICTING 1075
/*! cache: eviction worker thread removed */
-#define WT_STAT_CONN_CACHE_EVICTION_WORKER_REMOVED 1072
+#define WT_STAT_CONN_CACHE_EVICTION_WORKER_REMOVED 1076
/*! cache: eviction worker thread stable number */
-#define WT_STAT_CONN_CACHE_EVICTION_STABLE_STATE_WORKERS 1073
+#define WT_STAT_CONN_CACHE_EVICTION_STABLE_STATE_WORKERS 1077
/*! cache: files with active eviction walks */
-#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ACTIVE 1074
+#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ACTIVE 1078
/*! cache: files with new eviction walks started */
-#define WT_STAT_CONN_CACHE_EVICTION_WALKS_STARTED 1075
+#define WT_STAT_CONN_CACHE_EVICTION_WALKS_STARTED 1079
/*! cache: force re-tuning of eviction workers once in a while */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_RETUNE 1076
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_RETUNE 1080
/*!
* 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 1077
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_HS_FAIL 1081
/*!
* cache: forced eviction - history store pages selected while session
* has history store cursor open
*/
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_HS 1078
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_HS 1082
/*!
* cache: forced eviction - history store pages successfully evicted
* while session has history store cursor open
*/
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_HS_SUCCESS 1079
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_HS_SUCCESS 1083
/*! cache: forced eviction - pages evicted that were clean count */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_CLEAN 1080
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_CLEAN 1084
/*! cache: forced eviction - pages evicted that were clean time (usecs) */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_CLEAN_TIME 1081
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_CLEAN_TIME 1085
/*! cache: forced eviction - pages evicted that were dirty count */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DIRTY 1082
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DIRTY 1086
/*! cache: forced eviction - pages evicted that were dirty time (usecs) */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DIRTY_TIME 1083
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DIRTY_TIME 1087
/*!
* 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 1084
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_LONG_UPDATE_LIST 1088
/*!
* cache: forced eviction - pages selected because of too many deleted
* items count
*/
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DELETE 1085
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DELETE 1089
/*! cache: forced eviction - pages selected count */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE 1086
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE 1090
/*! cache: forced eviction - pages selected unable to be evicted count */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_FAIL 1087
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_FAIL 1091
/*! cache: forced eviction - pages selected unable to be evicted time */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_FAIL_TIME 1088
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_FAIL_TIME 1092
/*! cache: hazard pointer blocked page eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_HAZARD 1089
+#define WT_STAT_CONN_CACHE_EVICTION_HAZARD 1093
/*! cache: hazard pointer check calls */
-#define WT_STAT_CONN_CACHE_HAZARD_CHECKS 1090
+#define WT_STAT_CONN_CACHE_HAZARD_CHECKS 1094
/*! cache: hazard pointer check entries walked */
-#define WT_STAT_CONN_CACHE_HAZARD_WALKS 1091
+#define WT_STAT_CONN_CACHE_HAZARD_WALKS 1095
/*! cache: hazard pointer maximum array length */
-#define WT_STAT_CONN_CACHE_HAZARD_MAX 1092
+#define WT_STAT_CONN_CACHE_HAZARD_MAX 1096
/*! cache: history store score */
-#define WT_STAT_CONN_CACHE_HS_SCORE 1093
+#define WT_STAT_CONN_CACHE_HS_SCORE 1097
/*! cache: history store table insert calls */
-#define WT_STAT_CONN_CACHE_HS_INSERT 1094
+#define WT_STAT_CONN_CACHE_HS_INSERT 1098
/*! cache: history store table insert calls that returned restart */
-#define WT_STAT_CONN_CACHE_HS_INSERT_RESTART 1095
+#define WT_STAT_CONN_CACHE_HS_INSERT_RESTART 1099
/*! cache: history store table max on-disk size */
-#define WT_STAT_CONN_CACHE_HS_ONDISK_MAX 1096
+#define WT_STAT_CONN_CACHE_HS_ONDISK_MAX 1100
/*! cache: history store table on-disk size */
-#define WT_STAT_CONN_CACHE_HS_ONDISK 1097
+#define WT_STAT_CONN_CACHE_HS_ONDISK 1101
/*!
* cache: history store table out-of-order resolved updates that lose
* their durable timestamp
*/
-#define WT_STAT_CONN_CACHE_HS_ORDER_LOSE_DURABLE_TIMESTAMP 1098
+#define WT_STAT_CONN_CACHE_HS_ORDER_LOSE_DURABLE_TIMESTAMP 1102
/*!
* 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 1099
+#define WT_STAT_CONN_CACHE_HS_ORDER_REINSERT 1103
/*! cache: history store table reads */
-#define WT_STAT_CONN_CACHE_HS_READ 1100
+#define WT_STAT_CONN_CACHE_HS_READ 1104
/*! cache: history store table reads missed */
-#define WT_STAT_CONN_CACHE_HS_READ_MISS 1101
+#define WT_STAT_CONN_CACHE_HS_READ_MISS 1105
/*! cache: history store table reads requiring squashed modifies */
-#define WT_STAT_CONN_CACHE_HS_READ_SQUASH 1102
+#define WT_STAT_CONN_CACHE_HS_READ_SQUASH 1106
/*!
* cache: history store table truncation by rollback to stable to remove
* an unstable update
*/
-#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_RTS_UNSTABLE 1103
+#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_RTS_UNSTABLE 1107
/*!
* cache: history store table truncation by rollback to stable to remove
* an update
*/
-#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_RTS 1104
+#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_RTS 1108
/*! cache: history store table truncation to remove an update */
-#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE 1105
+#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE 1109
/*!
* 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 1106
+#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_ONPAGE_REMOVAL 1110
/*!
* 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 1107
+#define WT_STAT_CONN_CACHE_HS_ORDER_REMOVE 1111
/*! cache: history store table writes requiring squashed modifies */
-#define WT_STAT_CONN_CACHE_HS_WRITE_SQUASH 1108
+#define WT_STAT_CONN_CACHE_HS_WRITE_SQUASH 1112
/*! cache: in-memory page passed criteria to be split */
-#define WT_STAT_CONN_CACHE_INMEM_SPLITTABLE 1109
+#define WT_STAT_CONN_CACHE_INMEM_SPLITTABLE 1113
/*! cache: in-memory page splits */
-#define WT_STAT_CONN_CACHE_INMEM_SPLIT 1110
+#define WT_STAT_CONN_CACHE_INMEM_SPLIT 1114
/*! cache: internal pages evicted */
-#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL 1111
+#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL 1115
/*! cache: internal pages queued for eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL_PAGES_QUEUED 1112
+#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL_PAGES_QUEUED 1116
/*! cache: internal pages seen by eviction walk */
-#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL_PAGES_SEEN 1113
+#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL_PAGES_SEEN 1117
/*! cache: internal pages seen by eviction walk that are already queued */
-#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL_PAGES_ALREADY_QUEUED 1114
+#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL_PAGES_ALREADY_QUEUED 1118
/*! cache: internal pages split during eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_SPLIT_INTERNAL 1115
+#define WT_STAT_CONN_CACHE_EVICTION_SPLIT_INTERNAL 1119
/*! cache: leaf pages split during eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_SPLIT_LEAF 1116
+#define WT_STAT_CONN_CACHE_EVICTION_SPLIT_LEAF 1120
/*! cache: maximum bytes configured */
-#define WT_STAT_CONN_CACHE_BYTES_MAX 1117
+#define WT_STAT_CONN_CACHE_BYTES_MAX 1121
/*! cache: maximum page size at eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_MAXIMUM_PAGE_SIZE 1118
+#define WT_STAT_CONN_CACHE_EVICTION_MAXIMUM_PAGE_SIZE 1122
/*! cache: modified pages evicted */
-#define WT_STAT_CONN_CACHE_EVICTION_DIRTY 1119
+#define WT_STAT_CONN_CACHE_EVICTION_DIRTY 1123
/*! cache: modified pages evicted by application threads */
-#define WT_STAT_CONN_CACHE_EVICTION_APP_DIRTY 1120
+#define WT_STAT_CONN_CACHE_EVICTION_APP_DIRTY 1124
/*! cache: operations timed out waiting for space in cache */
-#define WT_STAT_CONN_CACHE_TIMED_OUT_OPS 1121
+#define WT_STAT_CONN_CACHE_TIMED_OUT_OPS 1125
/*! cache: overflow pages read into cache */
-#define WT_STAT_CONN_CACHE_READ_OVERFLOW 1122
+#define WT_STAT_CONN_CACHE_READ_OVERFLOW 1126
/*! cache: page split during eviction deepened the tree */
-#define WT_STAT_CONN_CACHE_EVICTION_DEEPEN 1123
+#define WT_STAT_CONN_CACHE_EVICTION_DEEPEN 1127
/*! cache: page written requiring history store records */
-#define WT_STAT_CONN_CACHE_WRITE_HS 1124
+#define WT_STAT_CONN_CACHE_WRITE_HS 1128
/*! cache: pages currently held in the cache */
-#define WT_STAT_CONN_CACHE_PAGES_INUSE 1125
+#define WT_STAT_CONN_CACHE_PAGES_INUSE 1129
/*! cache: pages evicted by application threads */
-#define WT_STAT_CONN_CACHE_EVICTION_APP 1126
+#define WT_STAT_CONN_CACHE_EVICTION_APP 1130
/*! cache: pages evicted in parallel with checkpoint */
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_IN_PARALLEL_WITH_CHECKPOINT 1127
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_IN_PARALLEL_WITH_CHECKPOINT 1131
/*! cache: pages queued for eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED 1128
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED 1132
/*! cache: pages queued for eviction post lru sorting */
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_POST_LRU 1129
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_POST_LRU 1133
/*! cache: pages queued for urgent eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_URGENT 1130
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_URGENT 1134
/*! cache: pages queued for urgent eviction during walk */
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_OLDEST 1131
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_OLDEST 1135
/*!
* 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 1132
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_URGENT_HS_DIRTY 1136
/*! cache: pages read into cache */
-#define WT_STAT_CONN_CACHE_READ 1133
+#define WT_STAT_CONN_CACHE_READ 1137
/*! cache: pages read into cache after truncate */
-#define WT_STAT_CONN_CACHE_READ_DELETED 1134
+#define WT_STAT_CONN_CACHE_READ_DELETED 1138
/*! cache: pages read into cache after truncate in prepare state */
-#define WT_STAT_CONN_CACHE_READ_DELETED_PREPARED 1135
+#define WT_STAT_CONN_CACHE_READ_DELETED_PREPARED 1139
/*! cache: pages requested from the cache */
-#define WT_STAT_CONN_CACHE_PAGES_REQUESTED 1136
+#define WT_STAT_CONN_CACHE_PAGES_REQUESTED 1140
/*! cache: pages seen by eviction walk */
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_SEEN 1137
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_SEEN 1141
/*! cache: pages seen by eviction walk that are already queued */
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_ALREADY_QUEUED 1138
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_ALREADY_QUEUED 1142
/*! cache: pages selected for eviction unable to be evicted */
-#define WT_STAT_CONN_CACHE_EVICTION_FAIL 1139
+#define WT_STAT_CONN_CACHE_EVICTION_FAIL 1143
/*!
* cache: pages selected for eviction unable to be evicted as the parent
* page has overflow items
*/
-#define WT_STAT_CONN_CACHE_EVICTION_FAIL_PARENT_HAS_OVERFLOW_ITEMS 1140
+#define WT_STAT_CONN_CACHE_EVICTION_FAIL_PARENT_HAS_OVERFLOW_ITEMS 1144
/*!
* 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 1141
+#define WT_STAT_CONN_CACHE_EVICTION_FAIL_ACTIVE_CHILDREN_ON_AN_INTERNAL_PAGE 1145
/*!
* cache: pages selected for eviction unable to be evicted because of
* failure in reconciliation
*/
-#define WT_STAT_CONN_CACHE_EVICTION_FAIL_IN_RECONCILIATION 1142
+#define WT_STAT_CONN_CACHE_EVICTION_FAIL_IN_RECONCILIATION 1146
/*!
* 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 1143
+#define WT_STAT_CONN_CACHE_EVICTION_FAIL_CHECKPOINT_OUT_OF_ORDER_TS 1147
/*! cache: pages walked for eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_WALK 1144
+#define WT_STAT_CONN_CACHE_EVICTION_WALK 1148
/*! cache: pages written from cache */
-#define WT_STAT_CONN_CACHE_WRITE 1145
+#define WT_STAT_CONN_CACHE_WRITE 1149
/*! cache: pages written requiring in-memory restoration */
-#define WT_STAT_CONN_CACHE_WRITE_RESTORE 1146
+#define WT_STAT_CONN_CACHE_WRITE_RESTORE 1150
/*! cache: percentage overhead */
-#define WT_STAT_CONN_CACHE_OVERHEAD 1147
+#define WT_STAT_CONN_CACHE_OVERHEAD 1151
/*! cache: tracked bytes belonging to internal pages in the cache */
-#define WT_STAT_CONN_CACHE_BYTES_INTERNAL 1148
+#define WT_STAT_CONN_CACHE_BYTES_INTERNAL 1152
/*! cache: tracked bytes belonging to leaf pages in the cache */
-#define WT_STAT_CONN_CACHE_BYTES_LEAF 1149
+#define WT_STAT_CONN_CACHE_BYTES_LEAF 1153
/*! cache: tracked dirty bytes in the cache */
-#define WT_STAT_CONN_CACHE_BYTES_DIRTY 1150
+#define WT_STAT_CONN_CACHE_BYTES_DIRTY 1154
/*! cache: tracked dirty pages in the cache */
-#define WT_STAT_CONN_CACHE_PAGES_DIRTY 1151
+#define WT_STAT_CONN_CACHE_PAGES_DIRTY 1155
/*! cache: unmodified pages evicted */
-#define WT_STAT_CONN_CACHE_EVICTION_CLEAN 1152
+#define WT_STAT_CONN_CACHE_EVICTION_CLEAN 1156
/*! capacity: background fsync file handles considered */
-#define WT_STAT_CONN_FSYNC_ALL_FH_TOTAL 1153
+#define WT_STAT_CONN_FSYNC_ALL_FH_TOTAL 1157
/*! capacity: background fsync file handles synced */
-#define WT_STAT_CONN_FSYNC_ALL_FH 1154
+#define WT_STAT_CONN_FSYNC_ALL_FH 1158
/*! capacity: background fsync time (msecs) */
-#define WT_STAT_CONN_FSYNC_ALL_TIME 1155
+#define WT_STAT_CONN_FSYNC_ALL_TIME 1159
/*! capacity: bytes read */
-#define WT_STAT_CONN_CAPACITY_BYTES_READ 1156
+#define WT_STAT_CONN_CAPACITY_BYTES_READ 1160
/*! capacity: bytes written for checkpoint */
-#define WT_STAT_CONN_CAPACITY_BYTES_CKPT 1157
+#define WT_STAT_CONN_CAPACITY_BYTES_CKPT 1161
/*! capacity: bytes written for eviction */
-#define WT_STAT_CONN_CAPACITY_BYTES_EVICT 1158
+#define WT_STAT_CONN_CAPACITY_BYTES_EVICT 1162
/*! capacity: bytes written for log */
-#define WT_STAT_CONN_CAPACITY_BYTES_LOG 1159
+#define WT_STAT_CONN_CAPACITY_BYTES_LOG 1163
/*! capacity: bytes written total */
-#define WT_STAT_CONN_CAPACITY_BYTES_WRITTEN 1160
+#define WT_STAT_CONN_CAPACITY_BYTES_WRITTEN 1164
/*! capacity: threshold to call fsync */
-#define WT_STAT_CONN_CAPACITY_THRESHOLD 1161
+#define WT_STAT_CONN_CAPACITY_THRESHOLD 1165
/*! capacity: time waiting due to total capacity (usecs) */
-#define WT_STAT_CONN_CAPACITY_TIME_TOTAL 1162
+#define WT_STAT_CONN_CAPACITY_TIME_TOTAL 1166
/*! capacity: time waiting during checkpoint (usecs) */
-#define WT_STAT_CONN_CAPACITY_TIME_CKPT 1163
+#define WT_STAT_CONN_CAPACITY_TIME_CKPT 1167
/*! capacity: time waiting during eviction (usecs) */
-#define WT_STAT_CONN_CAPACITY_TIME_EVICT 1164
+#define WT_STAT_CONN_CAPACITY_TIME_EVICT 1168
/*! capacity: time waiting during logging (usecs) */
-#define WT_STAT_CONN_CAPACITY_TIME_LOG 1165
+#define WT_STAT_CONN_CAPACITY_TIME_LOG 1169
/*! capacity: time waiting during read (usecs) */
-#define WT_STAT_CONN_CAPACITY_TIME_READ 1166
+#define WT_STAT_CONN_CAPACITY_TIME_READ 1170
/*! checkpoint-cleanup: pages added for eviction */
-#define WT_STAT_CONN_CC_PAGES_EVICT 1167
+#define WT_STAT_CONN_CC_PAGES_EVICT 1171
/*! checkpoint-cleanup: pages removed */
-#define WT_STAT_CONN_CC_PAGES_REMOVED 1168
+#define WT_STAT_CONN_CC_PAGES_REMOVED 1172
/*! checkpoint-cleanup: pages skipped during tree walk */
-#define WT_STAT_CONN_CC_PAGES_WALK_SKIPPED 1169
+#define WT_STAT_CONN_CC_PAGES_WALK_SKIPPED 1173
/*! checkpoint-cleanup: pages visited */
-#define WT_STAT_CONN_CC_PAGES_VISITED 1170
+#define WT_STAT_CONN_CC_PAGES_VISITED 1174
/*! connection: auto adjusting condition resets */
-#define WT_STAT_CONN_COND_AUTO_WAIT_RESET 1171
+#define WT_STAT_CONN_COND_AUTO_WAIT_RESET 1175
/*! connection: auto adjusting condition wait calls */
-#define WT_STAT_CONN_COND_AUTO_WAIT 1172
+#define WT_STAT_CONN_COND_AUTO_WAIT 1176
/*!
* connection: auto adjusting condition wait raced to update timeout and
* skipped updating
*/
-#define WT_STAT_CONN_COND_AUTO_WAIT_SKIPPED 1173
+#define WT_STAT_CONN_COND_AUTO_WAIT_SKIPPED 1177
/*! connection: detected system time went backwards */
-#define WT_STAT_CONN_TIME_TRAVEL 1174
+#define WT_STAT_CONN_TIME_TRAVEL 1178
/*! connection: files currently open */
-#define WT_STAT_CONN_FILE_OPEN 1175
+#define WT_STAT_CONN_FILE_OPEN 1179
/*! connection: hash bucket array size for data handles */
-#define WT_STAT_CONN_BUCKETS_DH 1176
+#define WT_STAT_CONN_BUCKETS_DH 1180
/*! connection: hash bucket array size general */
-#define WT_STAT_CONN_BUCKETS 1177
+#define WT_STAT_CONN_BUCKETS 1181
/*! connection: memory allocations */
-#define WT_STAT_CONN_MEMORY_ALLOCATION 1178
+#define WT_STAT_CONN_MEMORY_ALLOCATION 1182
/*! connection: memory frees */
-#define WT_STAT_CONN_MEMORY_FREE 1179
+#define WT_STAT_CONN_MEMORY_FREE 1183
/*! connection: memory re-allocations */
-#define WT_STAT_CONN_MEMORY_GROW 1180
+#define WT_STAT_CONN_MEMORY_GROW 1184
/*! connection: pthread mutex condition wait calls */
-#define WT_STAT_CONN_COND_WAIT 1181
+#define WT_STAT_CONN_COND_WAIT 1185
/*! connection: pthread mutex shared lock read-lock calls */
-#define WT_STAT_CONN_RWLOCK_READ 1182
+#define WT_STAT_CONN_RWLOCK_READ 1186
/*! connection: pthread mutex shared lock write-lock calls */
-#define WT_STAT_CONN_RWLOCK_WRITE 1183
+#define WT_STAT_CONN_RWLOCK_WRITE 1187
/*! connection: total fsync I/Os */
-#define WT_STAT_CONN_FSYNC_IO 1184
+#define WT_STAT_CONN_FSYNC_IO 1188
/*! connection: total read I/Os */
-#define WT_STAT_CONN_READ_IO 1185
+#define WT_STAT_CONN_READ_IO 1189
/*! connection: total write I/Os */
-#define WT_STAT_CONN_WRITE_IO 1186
+#define WT_STAT_CONN_WRITE_IO 1190
/*! cursor: Total number of entries skipped by cursor next calls */
-#define WT_STAT_CONN_CURSOR_NEXT_SKIP_TOTAL 1187
+#define WT_STAT_CONN_CURSOR_NEXT_SKIP_TOTAL 1191
/*! cursor: Total number of entries skipped by cursor prev calls */
-#define WT_STAT_CONN_CURSOR_PREV_SKIP_TOTAL 1188
+#define WT_STAT_CONN_CURSOR_PREV_SKIP_TOTAL 1192
/*!
* cursor: Total number of entries skipped to position the history store
* cursor
*/
-#define WT_STAT_CONN_CURSOR_SKIP_HS_CUR_POSITION 1189
+#define WT_STAT_CONN_CURSOR_SKIP_HS_CUR_POSITION 1193
/*!
* cursor: Total number of pages skipped without reading by cursor next
* calls
*/
-#define WT_STAT_CONN_CURSOR_NEXT_SKIP_PAGE_COUNT 1190
+#define WT_STAT_CONN_CURSOR_NEXT_SKIP_PAGE_COUNT 1194
/*!
* cursor: Total number of pages skipped without reading by cursor prev
* calls
*/
-#define WT_STAT_CONN_CURSOR_PREV_SKIP_PAGE_COUNT 1191
+#define WT_STAT_CONN_CURSOR_PREV_SKIP_PAGE_COUNT 1195
/*!
* cursor: Total number of times a search near has exited due to prefix
* config
*/
-#define WT_STAT_CONN_CURSOR_SEARCH_NEAR_PREFIX_FAST_PATHS 1192
+#define WT_STAT_CONN_CURSOR_SEARCH_NEAR_PREFIX_FAST_PATHS 1196
/*! cursor: cached cursor count */
-#define WT_STAT_CONN_CURSOR_CACHED_COUNT 1193
+#define WT_STAT_CONN_CURSOR_CACHED_COUNT 1197
/*! cursor: cursor bulk loaded cursor insert calls */
-#define WT_STAT_CONN_CURSOR_INSERT_BULK 1194
+#define WT_STAT_CONN_CURSOR_INSERT_BULK 1198
/*! cursor: cursor close calls that result in cache */
-#define WT_STAT_CONN_CURSOR_CACHE 1195
+#define WT_STAT_CONN_CURSOR_CACHE 1199
/*! cursor: cursor create calls */
-#define WT_STAT_CONN_CURSOR_CREATE 1196
+#define WT_STAT_CONN_CURSOR_CREATE 1200
/*! cursor: cursor insert calls */
-#define WT_STAT_CONN_CURSOR_INSERT 1197
+#define WT_STAT_CONN_CURSOR_INSERT 1201
/*! cursor: cursor insert key and value bytes */
-#define WT_STAT_CONN_CURSOR_INSERT_BYTES 1198
+#define WT_STAT_CONN_CURSOR_INSERT_BYTES 1202
/*! cursor: cursor modify calls */
-#define WT_STAT_CONN_CURSOR_MODIFY 1199
+#define WT_STAT_CONN_CURSOR_MODIFY 1203
/*! cursor: cursor modify key and value bytes affected */
-#define WT_STAT_CONN_CURSOR_MODIFY_BYTES 1200
+#define WT_STAT_CONN_CURSOR_MODIFY_BYTES 1204
/*! cursor: cursor modify value bytes modified */
-#define WT_STAT_CONN_CURSOR_MODIFY_BYTES_TOUCH 1201
+#define WT_STAT_CONN_CURSOR_MODIFY_BYTES_TOUCH 1205
/*! cursor: cursor next calls */
-#define WT_STAT_CONN_CURSOR_NEXT 1202
+#define WT_STAT_CONN_CURSOR_NEXT 1206
/*!
* cursor: cursor next calls that skip due to a globally visible history
* store tombstone
*/
-#define WT_STAT_CONN_CURSOR_NEXT_HS_TOMBSTONE 1203
+#define WT_STAT_CONN_CURSOR_NEXT_HS_TOMBSTONE 1207
/*!
* cursor: cursor next calls that skip greater than or equal to 100
* entries
*/
-#define WT_STAT_CONN_CURSOR_NEXT_SKIP_GE_100 1204
+#define WT_STAT_CONN_CURSOR_NEXT_SKIP_GE_100 1208
/*! cursor: cursor next calls that skip less than 100 entries */
-#define WT_STAT_CONN_CURSOR_NEXT_SKIP_LT_100 1205
+#define WT_STAT_CONN_CURSOR_NEXT_SKIP_LT_100 1209
/*! cursor: cursor operation restarted */
-#define WT_STAT_CONN_CURSOR_RESTART 1206
+#define WT_STAT_CONN_CURSOR_RESTART 1210
/*! cursor: cursor prev calls */
-#define WT_STAT_CONN_CURSOR_PREV 1207
+#define WT_STAT_CONN_CURSOR_PREV 1211
/*!
* cursor: cursor prev calls that skip due to a globally visible history
* store tombstone
*/
-#define WT_STAT_CONN_CURSOR_PREV_HS_TOMBSTONE 1208
+#define WT_STAT_CONN_CURSOR_PREV_HS_TOMBSTONE 1212
/*!
* cursor: cursor prev calls that skip greater than or equal to 100
* entries
*/
-#define WT_STAT_CONN_CURSOR_PREV_SKIP_GE_100 1209
+#define WT_STAT_CONN_CURSOR_PREV_SKIP_GE_100 1213
/*! cursor: cursor prev calls that skip less than 100 entries */
-#define WT_STAT_CONN_CURSOR_PREV_SKIP_LT_100 1210
+#define WT_STAT_CONN_CURSOR_PREV_SKIP_LT_100 1214
/*! cursor: cursor remove calls */
-#define WT_STAT_CONN_CURSOR_REMOVE 1211
+#define WT_STAT_CONN_CURSOR_REMOVE 1215
/*! cursor: cursor remove key bytes removed */
-#define WT_STAT_CONN_CURSOR_REMOVE_BYTES 1212
+#define WT_STAT_CONN_CURSOR_REMOVE_BYTES 1216
/*! cursor: cursor reserve calls */
-#define WT_STAT_CONN_CURSOR_RESERVE 1213
+#define WT_STAT_CONN_CURSOR_RESERVE 1217
/*! cursor: cursor reset calls */
-#define WT_STAT_CONN_CURSOR_RESET 1214
+#define WT_STAT_CONN_CURSOR_RESET 1218
/*! cursor: cursor search calls */
-#define WT_STAT_CONN_CURSOR_SEARCH 1215
+#define WT_STAT_CONN_CURSOR_SEARCH 1219
/*! cursor: cursor search history store calls */
-#define WT_STAT_CONN_CURSOR_SEARCH_HS 1216
+#define WT_STAT_CONN_CURSOR_SEARCH_HS 1220
/*! cursor: cursor search near calls */
-#define WT_STAT_CONN_CURSOR_SEARCH_NEAR 1217
+#define WT_STAT_CONN_CURSOR_SEARCH_NEAR 1221
/*! cursor: cursor sweep buckets */
-#define WT_STAT_CONN_CURSOR_SWEEP_BUCKETS 1218
+#define WT_STAT_CONN_CURSOR_SWEEP_BUCKETS 1222
/*! cursor: cursor sweep cursors closed */
-#define WT_STAT_CONN_CURSOR_SWEEP_CLOSED 1219
+#define WT_STAT_CONN_CURSOR_SWEEP_CLOSED 1223
/*! cursor: cursor sweep cursors examined */
-#define WT_STAT_CONN_CURSOR_SWEEP_EXAMINED 1220
+#define WT_STAT_CONN_CURSOR_SWEEP_EXAMINED 1224
/*! cursor: cursor sweeps */
-#define WT_STAT_CONN_CURSOR_SWEEP 1221
+#define WT_STAT_CONN_CURSOR_SWEEP 1225
/*! cursor: cursor truncate calls */
-#define WT_STAT_CONN_CURSOR_TRUNCATE 1222
+#define WT_STAT_CONN_CURSOR_TRUNCATE 1226
/*! cursor: cursor update calls */
-#define WT_STAT_CONN_CURSOR_UPDATE 1223
+#define WT_STAT_CONN_CURSOR_UPDATE 1227
/*! cursor: cursor update key and value bytes */
-#define WT_STAT_CONN_CURSOR_UPDATE_BYTES 1224
+#define WT_STAT_CONN_CURSOR_UPDATE_BYTES 1228
/*! cursor: cursor update value size change */
-#define WT_STAT_CONN_CURSOR_UPDATE_BYTES_CHANGED 1225
+#define WT_STAT_CONN_CURSOR_UPDATE_BYTES_CHANGED 1229
/*! cursor: cursors reused from cache */
-#define WT_STAT_CONN_CURSOR_REOPEN 1226
+#define WT_STAT_CONN_CURSOR_REOPEN 1230
/*! cursor: open cursor count */
-#define WT_STAT_CONN_CURSOR_OPEN_COUNT 1227
+#define WT_STAT_CONN_CURSOR_OPEN_COUNT 1231
/*! data-handle: connection data handle size */
-#define WT_STAT_CONN_DH_CONN_HANDLE_SIZE 1228
+#define WT_STAT_CONN_DH_CONN_HANDLE_SIZE 1232
/*! data-handle: connection data handles currently active */
-#define WT_STAT_CONN_DH_CONN_HANDLE_COUNT 1229
+#define WT_STAT_CONN_DH_CONN_HANDLE_COUNT 1233
/*! data-handle: connection sweep candidate became referenced */
-#define WT_STAT_CONN_DH_SWEEP_REF 1230
+#define WT_STAT_CONN_DH_SWEEP_REF 1234
/*! data-handle: connection sweep dhandles closed */
-#define WT_STAT_CONN_DH_SWEEP_CLOSE 1231
+#define WT_STAT_CONN_DH_SWEEP_CLOSE 1235
/*! data-handle: connection sweep dhandles removed from hash list */
-#define WT_STAT_CONN_DH_SWEEP_REMOVE 1232
+#define WT_STAT_CONN_DH_SWEEP_REMOVE 1236
/*! data-handle: connection sweep time-of-death sets */
-#define WT_STAT_CONN_DH_SWEEP_TOD 1233
+#define WT_STAT_CONN_DH_SWEEP_TOD 1237
/*! data-handle: connection sweeps */
-#define WT_STAT_CONN_DH_SWEEPS 1234
+#define WT_STAT_CONN_DH_SWEEPS 1238
/*!
* data-handle: connection sweeps skipped due to checkpoint gathering
* handles
*/
-#define WT_STAT_CONN_DH_SWEEP_SKIP_CKPT 1235
+#define WT_STAT_CONN_DH_SWEEP_SKIP_CKPT 1239
/*! data-handle: session dhandles swept */
-#define WT_STAT_CONN_DH_SESSION_HANDLES 1236
+#define WT_STAT_CONN_DH_SESSION_HANDLES 1240
/*! data-handle: session sweep attempts */
-#define WT_STAT_CONN_DH_SESSION_SWEEPS 1237
+#define WT_STAT_CONN_DH_SESSION_SWEEPS 1241
/*! lock: checkpoint lock acquisitions */
-#define WT_STAT_CONN_LOCK_CHECKPOINT_COUNT 1238
+#define WT_STAT_CONN_LOCK_CHECKPOINT_COUNT 1242
/*! lock: checkpoint lock application thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_APPLICATION 1239
+#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_APPLICATION 1243
/*! lock: checkpoint lock internal thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_INTERNAL 1240
+#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_INTERNAL 1244
/*! lock: dhandle lock application thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_APPLICATION 1241
+#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_APPLICATION 1245
/*! lock: dhandle lock internal thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_INTERNAL 1242
+#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_INTERNAL 1246
/*! lock: dhandle read lock acquisitions */
-#define WT_STAT_CONN_LOCK_DHANDLE_READ_COUNT 1243
+#define WT_STAT_CONN_LOCK_DHANDLE_READ_COUNT 1247
/*! lock: dhandle write lock acquisitions */
-#define WT_STAT_CONN_LOCK_DHANDLE_WRITE_COUNT 1244
+#define WT_STAT_CONN_LOCK_DHANDLE_WRITE_COUNT 1248
/*!
* lock: durable timestamp queue lock application thread time waiting
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WAIT_APPLICATION 1245
+#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WAIT_APPLICATION 1249
/*!
* lock: durable timestamp queue lock internal thread time waiting
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WAIT_INTERNAL 1246
+#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WAIT_INTERNAL 1250
/*! lock: durable timestamp queue read lock acquisitions */
-#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_READ_COUNT 1247
+#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_READ_COUNT 1251
/*! lock: durable timestamp queue write lock acquisitions */
-#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WRITE_COUNT 1248
+#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WRITE_COUNT 1252
/*! lock: metadata lock acquisitions */
-#define WT_STAT_CONN_LOCK_METADATA_COUNT 1249
+#define WT_STAT_CONN_LOCK_METADATA_COUNT 1253
/*! lock: metadata lock application thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_METADATA_WAIT_APPLICATION 1250
+#define WT_STAT_CONN_LOCK_METADATA_WAIT_APPLICATION 1254
/*! lock: metadata lock internal thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_METADATA_WAIT_INTERNAL 1251
+#define WT_STAT_CONN_LOCK_METADATA_WAIT_INTERNAL 1255
/*!
* lock: read timestamp queue lock application thread time waiting
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_APPLICATION 1252
+#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_APPLICATION 1256
/*! lock: read timestamp queue lock internal thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_INTERNAL 1253
+#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_INTERNAL 1257
/*! lock: read timestamp queue read lock acquisitions */
-#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_READ_COUNT 1254
+#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_READ_COUNT 1258
/*! lock: read timestamp queue write lock acquisitions */
-#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WRITE_COUNT 1255
+#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WRITE_COUNT 1259
/*! lock: schema lock acquisitions */
-#define WT_STAT_CONN_LOCK_SCHEMA_COUNT 1256
+#define WT_STAT_CONN_LOCK_SCHEMA_COUNT 1260
/*! lock: schema lock application thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_APPLICATION 1257
+#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_APPLICATION 1261
/*! lock: schema lock internal thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_INTERNAL 1258
+#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_INTERNAL 1262
/*!
* lock: table lock application thread time waiting for the table lock
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_TABLE_WAIT_APPLICATION 1259
+#define WT_STAT_CONN_LOCK_TABLE_WAIT_APPLICATION 1263
/*!
* lock: table lock internal thread time waiting for the table lock
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_TABLE_WAIT_INTERNAL 1260
+#define WT_STAT_CONN_LOCK_TABLE_WAIT_INTERNAL 1264
/*! lock: table read lock acquisitions */
-#define WT_STAT_CONN_LOCK_TABLE_READ_COUNT 1261
+#define WT_STAT_CONN_LOCK_TABLE_READ_COUNT 1265
/*! lock: table write lock acquisitions */
-#define WT_STAT_CONN_LOCK_TABLE_WRITE_COUNT 1262
+#define WT_STAT_CONN_LOCK_TABLE_WRITE_COUNT 1266
/*! lock: txn global lock application thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_APPLICATION 1263
+#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_APPLICATION 1267
/*! lock: txn global lock internal thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_INTERNAL 1264
+#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_INTERNAL 1268
/*! lock: txn global read lock acquisitions */
-#define WT_STAT_CONN_LOCK_TXN_GLOBAL_READ_COUNT 1265
+#define WT_STAT_CONN_LOCK_TXN_GLOBAL_READ_COUNT 1269
/*! lock: txn global write lock acquisitions */
-#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WRITE_COUNT 1266
+#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WRITE_COUNT 1270
/*! log: busy returns attempting to switch slots */
-#define WT_STAT_CONN_LOG_SLOT_SWITCH_BUSY 1267
+#define WT_STAT_CONN_LOG_SLOT_SWITCH_BUSY 1271
/*! log: force archive time sleeping (usecs) */
-#define WT_STAT_CONN_LOG_FORCE_ARCHIVE_SLEEP 1268
+#define WT_STAT_CONN_LOG_FORCE_ARCHIVE_SLEEP 1272
/*! log: log bytes of payload data */
-#define WT_STAT_CONN_LOG_BYTES_PAYLOAD 1269
+#define WT_STAT_CONN_LOG_BYTES_PAYLOAD 1273
/*! log: log bytes written */
-#define WT_STAT_CONN_LOG_BYTES_WRITTEN 1270
+#define WT_STAT_CONN_LOG_BYTES_WRITTEN 1274
/*! log: log files manually zero-filled */
-#define WT_STAT_CONN_LOG_ZERO_FILLS 1271
+#define WT_STAT_CONN_LOG_ZERO_FILLS 1275
/*! log: log flush operations */
-#define WT_STAT_CONN_LOG_FLUSH 1272
+#define WT_STAT_CONN_LOG_FLUSH 1276
/*! log: log force write operations */
-#define WT_STAT_CONN_LOG_FORCE_WRITE 1273
+#define WT_STAT_CONN_LOG_FORCE_WRITE 1277
/*! log: log force write operations skipped */
-#define WT_STAT_CONN_LOG_FORCE_WRITE_SKIP 1274
+#define WT_STAT_CONN_LOG_FORCE_WRITE_SKIP 1278
/*! log: log records compressed */
-#define WT_STAT_CONN_LOG_COMPRESS_WRITES 1275
+#define WT_STAT_CONN_LOG_COMPRESS_WRITES 1279
/*! log: log records not compressed */
-#define WT_STAT_CONN_LOG_COMPRESS_WRITE_FAILS 1276
+#define WT_STAT_CONN_LOG_COMPRESS_WRITE_FAILS 1280
/*! log: log records too small to compress */
-#define WT_STAT_CONN_LOG_COMPRESS_SMALL 1277
+#define WT_STAT_CONN_LOG_COMPRESS_SMALL 1281
/*! log: log release advances write LSN */
-#define WT_STAT_CONN_LOG_RELEASE_WRITE_LSN 1278
+#define WT_STAT_CONN_LOG_RELEASE_WRITE_LSN 1282
/*! log: log scan operations */
-#define WT_STAT_CONN_LOG_SCANS 1279
+#define WT_STAT_CONN_LOG_SCANS 1283
/*! log: log scan records requiring two reads */
-#define WT_STAT_CONN_LOG_SCAN_REREADS 1280
+#define WT_STAT_CONN_LOG_SCAN_REREADS 1284
/*! log: log server thread advances write LSN */
-#define WT_STAT_CONN_LOG_WRITE_LSN 1281
+#define WT_STAT_CONN_LOG_WRITE_LSN 1285
/*! log: log server thread write LSN walk skipped */
-#define WT_STAT_CONN_LOG_WRITE_LSN_SKIP 1282
+#define WT_STAT_CONN_LOG_WRITE_LSN_SKIP 1286
/*! log: log sync operations */
-#define WT_STAT_CONN_LOG_SYNC 1283
+#define WT_STAT_CONN_LOG_SYNC 1287
/*! log: log sync time duration (usecs) */
-#define WT_STAT_CONN_LOG_SYNC_DURATION 1284
+#define WT_STAT_CONN_LOG_SYNC_DURATION 1288
/*! log: log sync_dir operations */
-#define WT_STAT_CONN_LOG_SYNC_DIR 1285
+#define WT_STAT_CONN_LOG_SYNC_DIR 1289
/*! log: log sync_dir time duration (usecs) */
-#define WT_STAT_CONN_LOG_SYNC_DIR_DURATION 1286
+#define WT_STAT_CONN_LOG_SYNC_DIR_DURATION 1290
/*! log: log write operations */
-#define WT_STAT_CONN_LOG_WRITES 1287
+#define WT_STAT_CONN_LOG_WRITES 1291
/*! log: logging bytes consolidated */
-#define WT_STAT_CONN_LOG_SLOT_CONSOLIDATED 1288
+#define WT_STAT_CONN_LOG_SLOT_CONSOLIDATED 1292
/*! log: maximum log file size */
-#define WT_STAT_CONN_LOG_MAX_FILESIZE 1289
+#define WT_STAT_CONN_LOG_MAX_FILESIZE 1293
/*! log: number of pre-allocated log files to create */
-#define WT_STAT_CONN_LOG_PREALLOC_MAX 1290
+#define WT_STAT_CONN_LOG_PREALLOC_MAX 1294
/*! log: pre-allocated log files not ready and missed */
-#define WT_STAT_CONN_LOG_PREALLOC_MISSED 1291
+#define WT_STAT_CONN_LOG_PREALLOC_MISSED 1295
/*! log: pre-allocated log files prepared */
-#define WT_STAT_CONN_LOG_PREALLOC_FILES 1292
+#define WT_STAT_CONN_LOG_PREALLOC_FILES 1296
/*! log: pre-allocated log files used */
-#define WT_STAT_CONN_LOG_PREALLOC_USED 1293
+#define WT_STAT_CONN_LOG_PREALLOC_USED 1297
/*! log: records processed by log scan */
-#define WT_STAT_CONN_LOG_SCAN_RECORDS 1294
+#define WT_STAT_CONN_LOG_SCAN_RECORDS 1298
/*! log: slot close lost race */
-#define WT_STAT_CONN_LOG_SLOT_CLOSE_RACE 1295
+#define WT_STAT_CONN_LOG_SLOT_CLOSE_RACE 1299
/*! log: slot close unbuffered waits */
-#define WT_STAT_CONN_LOG_SLOT_CLOSE_UNBUF 1296
+#define WT_STAT_CONN_LOG_SLOT_CLOSE_UNBUF 1300
/*! log: slot closures */
-#define WT_STAT_CONN_LOG_SLOT_CLOSES 1297
+#define WT_STAT_CONN_LOG_SLOT_CLOSES 1301
/*! log: slot join atomic update races */
-#define WT_STAT_CONN_LOG_SLOT_RACES 1298
+#define WT_STAT_CONN_LOG_SLOT_RACES 1302
/*! log: slot join calls atomic updates raced */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_RACE 1299
+#define WT_STAT_CONN_LOG_SLOT_YIELD_RACE 1303
/*! log: slot join calls did not yield */
-#define WT_STAT_CONN_LOG_SLOT_IMMEDIATE 1300
+#define WT_STAT_CONN_LOG_SLOT_IMMEDIATE 1304
/*! log: slot join calls found active slot closed */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_CLOSE 1301
+#define WT_STAT_CONN_LOG_SLOT_YIELD_CLOSE 1305
/*! log: slot join calls slept */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_SLEEP 1302
+#define WT_STAT_CONN_LOG_SLOT_YIELD_SLEEP 1306
/*! log: slot join calls yielded */
-#define WT_STAT_CONN_LOG_SLOT_YIELD 1303
+#define WT_STAT_CONN_LOG_SLOT_YIELD 1307
/*! log: slot join found active slot closed */
-#define WT_STAT_CONN_LOG_SLOT_ACTIVE_CLOSED 1304
+#define WT_STAT_CONN_LOG_SLOT_ACTIVE_CLOSED 1308
/*! log: slot joins yield time (usecs) */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_DURATION 1305
+#define WT_STAT_CONN_LOG_SLOT_YIELD_DURATION 1309
/*! log: slot transitions unable to find free slot */
-#define WT_STAT_CONN_LOG_SLOT_NO_FREE_SLOTS 1306
+#define WT_STAT_CONN_LOG_SLOT_NO_FREE_SLOTS 1310
/*! log: slot unbuffered writes */
-#define WT_STAT_CONN_LOG_SLOT_UNBUFFERED 1307
+#define WT_STAT_CONN_LOG_SLOT_UNBUFFERED 1311
/*! log: total in-memory size of compressed records */
-#define WT_STAT_CONN_LOG_COMPRESS_MEM 1308
+#define WT_STAT_CONN_LOG_COMPRESS_MEM 1312
/*! log: total log buffer size */
-#define WT_STAT_CONN_LOG_BUFFER_SIZE 1309
+#define WT_STAT_CONN_LOG_BUFFER_SIZE 1313
/*! log: total size of compressed records */
-#define WT_STAT_CONN_LOG_COMPRESS_LEN 1310
+#define WT_STAT_CONN_LOG_COMPRESS_LEN 1314
/*! log: written slots coalesced */
-#define WT_STAT_CONN_LOG_SLOT_COALESCED 1311
+#define WT_STAT_CONN_LOG_SLOT_COALESCED 1315
/*! log: yields waiting for previous log file close */
-#define WT_STAT_CONN_LOG_CLOSE_YIELDS 1312
+#define WT_STAT_CONN_LOG_CLOSE_YIELDS 1316
/*! perf: file system read latency histogram (bucket 1) - 10-49ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT50 1313
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT50 1317
/*! perf: file system read latency histogram (bucket 2) - 50-99ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT100 1314
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT100 1318
/*! perf: file system read latency histogram (bucket 3) - 100-249ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT250 1315
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT250 1319
/*! perf: file system read latency histogram (bucket 4) - 250-499ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT500 1316
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT500 1320
/*! perf: file system read latency histogram (bucket 5) - 500-999ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT1000 1317
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT1000 1321
/*! perf: file system read latency histogram (bucket 6) - 1000ms+ */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_GT1000 1318
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_GT1000 1322
/*! perf: file system write latency histogram (bucket 1) - 10-49ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT50 1319
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT50 1323
/*! perf: file system write latency histogram (bucket 2) - 50-99ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT100 1320
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT100 1324
/*! perf: file system write latency histogram (bucket 3) - 100-249ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT250 1321
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT250 1325
/*! perf: file system write latency histogram (bucket 4) - 250-499ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT500 1322
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT500 1326
/*! perf: file system write latency histogram (bucket 5) - 500-999ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT1000 1323
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT1000 1327
/*! perf: file system write latency histogram (bucket 6) - 1000ms+ */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_GT1000 1324
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_GT1000 1328
/*! perf: operation read latency histogram (bucket 1) - 100-249us */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT250 1325
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT250 1329
/*! perf: operation read latency histogram (bucket 2) - 250-499us */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT500 1326
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT500 1330
/*! perf: operation read latency histogram (bucket 3) - 500-999us */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT1000 1327
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT1000 1331
/*! perf: operation read latency histogram (bucket 4) - 1000-9999us */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT10000 1328
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT10000 1332
/*! perf: operation read latency histogram (bucket 5) - 10000us+ */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_GT10000 1329
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_GT10000 1333
/*! perf: operation write latency histogram (bucket 1) - 100-249us */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT250 1330
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT250 1334
/*! perf: operation write latency histogram (bucket 2) - 250-499us */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT500 1331
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT500 1335
/*! perf: operation write latency histogram (bucket 3) - 500-999us */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT1000 1332
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT1000 1336
/*! perf: operation write latency histogram (bucket 4) - 1000-9999us */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT10000 1333
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT10000 1337
/*! perf: operation write latency histogram (bucket 5) - 10000us+ */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_GT10000 1334
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_GT10000 1338
/*! reconciliation: approximate byte size of timestamps in pages written */
-#define WT_STAT_CONN_REC_TIME_WINDOW_BYTES_TS 1335
+#define WT_STAT_CONN_REC_TIME_WINDOW_BYTES_TS 1339
/*!
* reconciliation: approximate byte size of transaction IDs in pages
* written
*/
-#define WT_STAT_CONN_REC_TIME_WINDOW_BYTES_TXN 1336
+#define WT_STAT_CONN_REC_TIME_WINDOW_BYTES_TXN 1340
/*! reconciliation: fast-path pages deleted */
-#define WT_STAT_CONN_REC_PAGE_DELETE_FAST 1337
+#define WT_STAT_CONN_REC_PAGE_DELETE_FAST 1341
/*! reconciliation: internal-page overflow keys */
-#define WT_STAT_CONN_REC_OVERFLOW_KEY_INTERNAL 1338
+#define WT_STAT_CONN_REC_OVERFLOW_KEY_INTERNAL 1342
/*! reconciliation: leaf-page overflow keys */
-#define WT_STAT_CONN_REC_OVERFLOW_KEY_LEAF 1339
+#define WT_STAT_CONN_REC_OVERFLOW_KEY_LEAF 1343
/*! reconciliation: maximum seconds spent in a reconciliation call */
-#define WT_STAT_CONN_REC_MAXIMUM_SECONDS 1340
+#define WT_STAT_CONN_REC_MAXIMUM_SECONDS 1344
/*! reconciliation: page reconciliation calls */
-#define WT_STAT_CONN_REC_PAGES 1341
+#define WT_STAT_CONN_REC_PAGES 1345
/*! reconciliation: page reconciliation calls for eviction */
-#define WT_STAT_CONN_REC_PAGES_EVICTION 1342
+#define WT_STAT_CONN_REC_PAGES_EVICTION 1346
/*!
* reconciliation: page reconciliation calls that resulted in values with
* prepared transaction metadata
*/
-#define WT_STAT_CONN_REC_PAGES_WITH_PREPARE 1343
+#define WT_STAT_CONN_REC_PAGES_WITH_PREPARE 1347
/*!
* reconciliation: page reconciliation calls that resulted in values with
* timestamps
*/
-#define WT_STAT_CONN_REC_PAGES_WITH_TS 1344
+#define WT_STAT_CONN_REC_PAGES_WITH_TS 1348
/*!
* reconciliation: page reconciliation calls that resulted in values with
* transaction ids
*/
-#define WT_STAT_CONN_REC_PAGES_WITH_TXN 1345
+#define WT_STAT_CONN_REC_PAGES_WITH_TXN 1349
/*! reconciliation: pages deleted */
-#define WT_STAT_CONN_REC_PAGE_DELETE 1346
+#define WT_STAT_CONN_REC_PAGE_DELETE 1350
/*!
* reconciliation: pages written including an aggregated newest start
* durable timestamp
*/
-#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_START_DURABLE_TS 1347
+#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_START_DURABLE_TS 1351
/*!
* reconciliation: pages written including an aggregated newest stop
* durable timestamp
*/
-#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_DURABLE_TS 1348
+#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_DURABLE_TS 1352
/*!
* reconciliation: pages written including an aggregated newest stop
* timestamp
*/
-#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_TS 1349
+#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_TS 1353
/*!
* reconciliation: pages written including an aggregated newest stop
* transaction ID
*/
-#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_TXN 1350
+#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_TXN 1354
/*!
* reconciliation: pages written including an aggregated newest
* transaction ID
*/
-#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_TXN 1351
+#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_TXN 1355
/*!
* reconciliation: pages written including an aggregated oldest start
* timestamp
*/
-#define WT_STAT_CONN_REC_TIME_AGGR_OLDEST_START_TS 1352
+#define WT_STAT_CONN_REC_TIME_AGGR_OLDEST_START_TS 1356
/*! reconciliation: pages written including an aggregated prepare */
-#define WT_STAT_CONN_REC_TIME_AGGR_PREPARED 1353
+#define WT_STAT_CONN_REC_TIME_AGGR_PREPARED 1357
/*! reconciliation: pages written including at least one prepare state */
-#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_PREPARED 1354
+#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_PREPARED 1358
/*!
* reconciliation: pages written including at least one start durable
* timestamp
*/
-#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_DURABLE_START_TS 1355
+#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_DURABLE_START_TS 1359
/*! reconciliation: pages written including at least one start timestamp */
-#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_START_TS 1356
+#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_START_TS 1360
/*!
* reconciliation: pages written including at least one start transaction
* ID
*/
-#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_START_TXN 1357
+#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_START_TXN 1361
/*!
* reconciliation: pages written including at least one stop durable
* timestamp
*/
-#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_DURABLE_STOP_TS 1358
+#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_DURABLE_STOP_TS 1362
/*! reconciliation: pages written including at least one stop timestamp */
-#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_STOP_TS 1359
+#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_STOP_TS 1363
/*!
* reconciliation: pages written including at least one stop transaction
* ID
*/
-#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_STOP_TXN 1360
+#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_STOP_TXN 1364
/*! reconciliation: records written including a prepare state */
-#define WT_STAT_CONN_REC_TIME_WINDOW_PREPARED 1361
+#define WT_STAT_CONN_REC_TIME_WINDOW_PREPARED 1365
/*! reconciliation: records written including a start durable timestamp */
-#define WT_STAT_CONN_REC_TIME_WINDOW_DURABLE_START_TS 1362
+#define WT_STAT_CONN_REC_TIME_WINDOW_DURABLE_START_TS 1366
/*! reconciliation: records written including a start timestamp */
-#define WT_STAT_CONN_REC_TIME_WINDOW_START_TS 1363
+#define WT_STAT_CONN_REC_TIME_WINDOW_START_TS 1367
/*! reconciliation: records written including a start transaction ID */
-#define WT_STAT_CONN_REC_TIME_WINDOW_START_TXN 1364
+#define WT_STAT_CONN_REC_TIME_WINDOW_START_TXN 1368
/*! reconciliation: records written including a stop durable timestamp */
-#define WT_STAT_CONN_REC_TIME_WINDOW_DURABLE_STOP_TS 1365
+#define WT_STAT_CONN_REC_TIME_WINDOW_DURABLE_STOP_TS 1369
/*! reconciliation: records written including a stop timestamp */
-#define WT_STAT_CONN_REC_TIME_WINDOW_STOP_TS 1366
+#define WT_STAT_CONN_REC_TIME_WINDOW_STOP_TS 1370
/*! reconciliation: records written including a stop transaction ID */
-#define WT_STAT_CONN_REC_TIME_WINDOW_STOP_TXN 1367
+#define WT_STAT_CONN_REC_TIME_WINDOW_STOP_TXN 1371
/*! reconciliation: split bytes currently awaiting free */
-#define WT_STAT_CONN_REC_SPLIT_STASHED_BYTES 1368
+#define WT_STAT_CONN_REC_SPLIT_STASHED_BYTES 1372
/*! reconciliation: split objects currently awaiting free */
-#define WT_STAT_CONN_REC_SPLIT_STASHED_OBJECTS 1369
+#define WT_STAT_CONN_REC_SPLIT_STASHED_OBJECTS 1373
/*! session: flush state races */
-#define WT_STAT_CONN_FLUSH_STATE_RACES 1370
+#define WT_STAT_CONN_FLUSH_STATE_RACES 1374
/*! session: flush_tier operation calls */
-#define WT_STAT_CONN_FLUSH_TIER 1371
+#define WT_STAT_CONN_FLUSH_TIER 1375
/*! session: open session count */
-#define WT_STAT_CONN_SESSION_OPEN 1372
+#define WT_STAT_CONN_SESSION_OPEN 1376
/*! session: session query timestamp calls */
-#define WT_STAT_CONN_SESSION_QUERY_TS 1373
+#define WT_STAT_CONN_SESSION_QUERY_TS 1377
/*! session: table alter failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_ALTER_FAIL 1374
+#define WT_STAT_CONN_SESSION_TABLE_ALTER_FAIL 1378
/*! session: table alter successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_ALTER_SUCCESS 1375
+#define WT_STAT_CONN_SESSION_TABLE_ALTER_SUCCESS 1379
/*! session: table alter unchanged and skipped */
-#define WT_STAT_CONN_SESSION_TABLE_ALTER_SKIP 1376
+#define WT_STAT_CONN_SESSION_TABLE_ALTER_SKIP 1380
/*! session: table compact failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_COMPACT_FAIL 1377
+#define WT_STAT_CONN_SESSION_TABLE_COMPACT_FAIL 1381
/*! session: table compact successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_COMPACT_SUCCESS 1378
+#define WT_STAT_CONN_SESSION_TABLE_COMPACT_SUCCESS 1382
/*! session: table create failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_CREATE_FAIL 1379
+#define WT_STAT_CONN_SESSION_TABLE_CREATE_FAIL 1383
/*! session: table create successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_CREATE_SUCCESS 1380
+#define WT_STAT_CONN_SESSION_TABLE_CREATE_SUCCESS 1384
/*! session: table drop failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_DROP_FAIL 1381
+#define WT_STAT_CONN_SESSION_TABLE_DROP_FAIL 1385
/*! session: table drop successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_DROP_SUCCESS 1382
+#define WT_STAT_CONN_SESSION_TABLE_DROP_SUCCESS 1386
/*! session: table rename failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_RENAME_FAIL 1383
+#define WT_STAT_CONN_SESSION_TABLE_RENAME_FAIL 1387
/*! session: table rename successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_RENAME_SUCCESS 1384
+#define WT_STAT_CONN_SESSION_TABLE_RENAME_SUCCESS 1388
/*! session: table salvage failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_FAIL 1385
+#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_FAIL 1389
/*! session: table salvage successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_SUCCESS 1386
+#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_SUCCESS 1390
/*! session: table truncate failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_FAIL 1387
+#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_FAIL 1391
/*! session: table truncate successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_SUCCESS 1388
+#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_SUCCESS 1392
/*! session: table verify failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_VERIFY_FAIL 1389
+#define WT_STAT_CONN_SESSION_TABLE_VERIFY_FAIL 1393
/*! session: table verify successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_VERIFY_SUCCESS 1390
+#define WT_STAT_CONN_SESSION_TABLE_VERIFY_SUCCESS 1394
/*! session: tiered operations dequeued and processed */
-#define WT_STAT_CONN_TIERED_WORK_UNITS_DEQUEUED 1391
+#define WT_STAT_CONN_TIERED_WORK_UNITS_DEQUEUED 1395
/*! session: tiered operations scheduled */
-#define WT_STAT_CONN_TIERED_WORK_UNITS_CREATED 1392
+#define WT_STAT_CONN_TIERED_WORK_UNITS_CREATED 1396
/*! session: tiered storage local retention time (secs) */
-#define WT_STAT_CONN_TIERED_RETENTION 1393
+#define WT_STAT_CONN_TIERED_RETENTION 1397
/*! session: tiered storage object size */
-#define WT_STAT_CONN_TIERED_OBJECT_SIZE 1394
+#define WT_STAT_CONN_TIERED_OBJECT_SIZE 1398
/*! thread-state: active filesystem fsync calls */
-#define WT_STAT_CONN_THREAD_FSYNC_ACTIVE 1395
+#define WT_STAT_CONN_THREAD_FSYNC_ACTIVE 1399
/*! thread-state: active filesystem read calls */
-#define WT_STAT_CONN_THREAD_READ_ACTIVE 1396
+#define WT_STAT_CONN_THREAD_READ_ACTIVE 1400
/*! thread-state: active filesystem write calls */
-#define WT_STAT_CONN_THREAD_WRITE_ACTIVE 1397
+#define WT_STAT_CONN_THREAD_WRITE_ACTIVE 1401
/*! thread-yield: application thread time evicting (usecs) */
-#define WT_STAT_CONN_APPLICATION_EVICT_TIME 1398
+#define WT_STAT_CONN_APPLICATION_EVICT_TIME 1402
/*! thread-yield: application thread time waiting for cache (usecs) */
-#define WT_STAT_CONN_APPLICATION_CACHE_TIME 1399
+#define WT_STAT_CONN_APPLICATION_CACHE_TIME 1403
/*!
* thread-yield: connection close blocked waiting for transaction state
* stabilization
*/
-#define WT_STAT_CONN_TXN_RELEASE_BLOCKED 1400
+#define WT_STAT_CONN_TXN_RELEASE_BLOCKED 1404
/*! thread-yield: connection close yielded for lsm manager shutdown */
-#define WT_STAT_CONN_CONN_CLOSE_BLOCKED_LSM 1401
+#define WT_STAT_CONN_CONN_CLOSE_BLOCKED_LSM 1405
/*! thread-yield: data handle lock yielded */
-#define WT_STAT_CONN_DHANDLE_LOCK_BLOCKED 1402
+#define WT_STAT_CONN_DHANDLE_LOCK_BLOCKED 1406
/*!
* thread-yield: get reference for page index and slot time sleeping
* (usecs)
*/
-#define WT_STAT_CONN_PAGE_INDEX_SLOT_REF_BLOCKED 1403
+#define WT_STAT_CONN_PAGE_INDEX_SLOT_REF_BLOCKED 1407
/*! thread-yield: page access yielded due to prepare state change */
-#define WT_STAT_CONN_PREPARED_TRANSITION_BLOCKED_PAGE 1404
+#define WT_STAT_CONN_PREPARED_TRANSITION_BLOCKED_PAGE 1408
/*! thread-yield: page acquire busy blocked */
-#define WT_STAT_CONN_PAGE_BUSY_BLOCKED 1405
+#define WT_STAT_CONN_PAGE_BUSY_BLOCKED 1409
/*! thread-yield: page acquire eviction blocked */
-#define WT_STAT_CONN_PAGE_FORCIBLE_EVICT_BLOCKED 1406
+#define WT_STAT_CONN_PAGE_FORCIBLE_EVICT_BLOCKED 1410
/*! thread-yield: page acquire locked blocked */
-#define WT_STAT_CONN_PAGE_LOCKED_BLOCKED 1407
+#define WT_STAT_CONN_PAGE_LOCKED_BLOCKED 1411
/*! thread-yield: page acquire read blocked */
-#define WT_STAT_CONN_PAGE_READ_BLOCKED 1408
+#define WT_STAT_CONN_PAGE_READ_BLOCKED 1412
/*! thread-yield: page acquire time sleeping (usecs) */
-#define WT_STAT_CONN_PAGE_SLEEP 1409
+#define WT_STAT_CONN_PAGE_SLEEP 1413
/*!
* thread-yield: page delete rollback time sleeping for state change
* (usecs)
*/
-#define WT_STAT_CONN_PAGE_DEL_ROLLBACK_BLOCKED 1410
+#define WT_STAT_CONN_PAGE_DEL_ROLLBACK_BLOCKED 1414
/*! thread-yield: page reconciliation yielded due to child modification */
-#define WT_STAT_CONN_CHILD_MODIFY_BLOCKED_PAGE 1411
+#define WT_STAT_CONN_CHILD_MODIFY_BLOCKED_PAGE 1415
/*! transaction: Number of prepared updates */
-#define WT_STAT_CONN_TXN_PREPARED_UPDATES 1412
+#define WT_STAT_CONN_TXN_PREPARED_UPDATES 1416
/*! transaction: Number of prepared updates committed */
-#define WT_STAT_CONN_TXN_PREPARED_UPDATES_COMMITTED 1413
+#define WT_STAT_CONN_TXN_PREPARED_UPDATES_COMMITTED 1417
/*! transaction: Number of prepared updates repeated on the same key */
-#define WT_STAT_CONN_TXN_PREPARED_UPDATES_KEY_REPEATED 1414
+#define WT_STAT_CONN_TXN_PREPARED_UPDATES_KEY_REPEATED 1418
/*! transaction: Number of prepared updates rolled back */
-#define WT_STAT_CONN_TXN_PREPARED_UPDATES_ROLLEDBACK 1415
+#define WT_STAT_CONN_TXN_PREPARED_UPDATES_ROLLEDBACK 1419
/*! transaction: prepared transactions */
-#define WT_STAT_CONN_TXN_PREPARE 1416
+#define WT_STAT_CONN_TXN_PREPARE 1420
/*! transaction: prepared transactions committed */
-#define WT_STAT_CONN_TXN_PREPARE_COMMIT 1417
+#define WT_STAT_CONN_TXN_PREPARE_COMMIT 1421
/*! transaction: prepared transactions currently active */
-#define WT_STAT_CONN_TXN_PREPARE_ACTIVE 1418
+#define WT_STAT_CONN_TXN_PREPARE_ACTIVE 1422
/*! transaction: prepared transactions rolled back */
-#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK 1419
+#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK 1423
/*!
* 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 1420
+#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK_DO_NOT_REMOVE_HS_UPDATE 1424
/*!
* 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 1421
+#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK_FIX_HS_UPDATE_WITH_CKPT_RESERVED_TXNID 1425
/*! transaction: query timestamp calls */
-#define WT_STAT_CONN_TXN_QUERY_TS 1422
+#define WT_STAT_CONN_TXN_QUERY_TS 1426
/*! transaction: race to read prepared update retry */
-#define WT_STAT_CONN_TXN_READ_RACE_PREPARE_UPDATE 1423
+#define WT_STAT_CONN_TXN_READ_RACE_PREPARE_UPDATE 1427
/*! transaction: rollback to stable calls */
-#define WT_STAT_CONN_TXN_RTS 1424
+#define WT_STAT_CONN_TXN_RTS 1428
/*!
* 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 1425
+#define WT_STAT_CONN_TXN_RTS_HS_STOP_OLDER_THAN_NEWER_START 1429
/*! transaction: rollback to stable inconsistent checkpoint */
-#define WT_STAT_CONN_TXN_RTS_INCONSISTENT_CKPT 1426
+#define WT_STAT_CONN_TXN_RTS_INCONSISTENT_CKPT 1430
/*! transaction: rollback to stable keys removed */
-#define WT_STAT_CONN_TXN_RTS_KEYS_REMOVED 1427
+#define WT_STAT_CONN_TXN_RTS_KEYS_REMOVED 1431
/*! transaction: rollback to stable keys restored */
-#define WT_STAT_CONN_TXN_RTS_KEYS_RESTORED 1428
+#define WT_STAT_CONN_TXN_RTS_KEYS_RESTORED 1432
/*! transaction: rollback to stable pages visited */
-#define WT_STAT_CONN_TXN_RTS_PAGES_VISITED 1429
+#define WT_STAT_CONN_TXN_RTS_PAGES_VISITED 1433
/*! transaction: rollback to stable restored tombstones from history store */
-#define WT_STAT_CONN_TXN_RTS_HS_RESTORE_TOMBSTONES 1430
+#define WT_STAT_CONN_TXN_RTS_HS_RESTORE_TOMBSTONES 1434
/*! transaction: rollback to stable restored updates from history store */
-#define WT_STAT_CONN_TXN_RTS_HS_RESTORE_UPDATES 1431
+#define WT_STAT_CONN_TXN_RTS_HS_RESTORE_UPDATES 1435
/*! transaction: rollback to stable skipping delete rle */
-#define WT_STAT_CONN_TXN_RTS_DELETE_RLE_SKIPPED 1432
+#define WT_STAT_CONN_TXN_RTS_DELETE_RLE_SKIPPED 1436
/*! transaction: rollback to stable skipping stable rle */
-#define WT_STAT_CONN_TXN_RTS_STABLE_RLE_SKIPPED 1433
+#define WT_STAT_CONN_TXN_RTS_STABLE_RLE_SKIPPED 1437
/*! transaction: rollback to stable sweeping history store keys */
-#define WT_STAT_CONN_TXN_RTS_SWEEP_HS_KEYS 1434
+#define WT_STAT_CONN_TXN_RTS_SWEEP_HS_KEYS 1438
/*! transaction: rollback to stable tree walk skipping pages */
-#define WT_STAT_CONN_TXN_RTS_TREE_WALK_SKIP_PAGES 1435
+#define WT_STAT_CONN_TXN_RTS_TREE_WALK_SKIP_PAGES 1439
/*! transaction: rollback to stable updates aborted */
-#define WT_STAT_CONN_TXN_RTS_UPD_ABORTED 1436
+#define WT_STAT_CONN_TXN_RTS_UPD_ABORTED 1440
/*! transaction: rollback to stable updates removed from history store */
-#define WT_STAT_CONN_TXN_RTS_HS_REMOVED 1437
+#define WT_STAT_CONN_TXN_RTS_HS_REMOVED 1441
/*! transaction: sessions scanned in each walk of concurrent sessions */
-#define WT_STAT_CONN_TXN_SESSIONS_WALKED 1438
+#define WT_STAT_CONN_TXN_SESSIONS_WALKED 1442
/*! transaction: set timestamp calls */
-#define WT_STAT_CONN_TXN_SET_TS 1439
+#define WT_STAT_CONN_TXN_SET_TS 1443
/*! transaction: set timestamp durable calls */
-#define WT_STAT_CONN_TXN_SET_TS_DURABLE 1440
+#define WT_STAT_CONN_TXN_SET_TS_DURABLE 1444
/*! transaction: set timestamp durable updates */
-#define WT_STAT_CONN_TXN_SET_TS_DURABLE_UPD 1441
+#define WT_STAT_CONN_TXN_SET_TS_DURABLE_UPD 1445
/*! transaction: set timestamp oldest calls */
-#define WT_STAT_CONN_TXN_SET_TS_OLDEST 1442
+#define WT_STAT_CONN_TXN_SET_TS_OLDEST 1446
/*! transaction: set timestamp oldest updates */
-#define WT_STAT_CONN_TXN_SET_TS_OLDEST_UPD 1443
+#define WT_STAT_CONN_TXN_SET_TS_OLDEST_UPD 1447
/*! transaction: set timestamp stable calls */
-#define WT_STAT_CONN_TXN_SET_TS_STABLE 1444
+#define WT_STAT_CONN_TXN_SET_TS_STABLE 1448
/*! transaction: set timestamp stable updates */
-#define WT_STAT_CONN_TXN_SET_TS_STABLE_UPD 1445
+#define WT_STAT_CONN_TXN_SET_TS_STABLE_UPD 1449
/*! transaction: transaction begins */
-#define WT_STAT_CONN_TXN_BEGIN 1446
+#define WT_STAT_CONN_TXN_BEGIN 1450
/*! transaction: transaction checkpoint currently running */
-#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1447
+#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1451
/*!
* transaction: transaction checkpoint currently running for history
* store file
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING_HS 1448
+#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING_HS 1452
/*! transaction: transaction checkpoint generation */
-#define WT_STAT_CONN_TXN_CHECKPOINT_GENERATION 1449
+#define WT_STAT_CONN_TXN_CHECKPOINT_GENERATION 1453
/*!
* transaction: transaction checkpoint history store file duration
* (usecs)
*/
-#define WT_STAT_CONN_TXN_HS_CKPT_DURATION 1450
+#define WT_STAT_CONN_TXN_HS_CKPT_DURATION 1454
/*! transaction: transaction checkpoint max time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MAX 1451
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MAX 1455
/*! transaction: transaction checkpoint min time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MIN 1452
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MIN 1456
/*!
* transaction: transaction checkpoint most recent duration for gathering
* all handles (usecs)
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION 1453
+#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION 1457
/*!
* transaction: transaction checkpoint most recent duration for gathering
* applied handles (usecs)
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION_APPLY 1454
+#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION_APPLY 1458
/*!
* transaction: transaction checkpoint most recent duration for gathering
* skipped handles (usecs)
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION_SKIP 1455
+#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION_SKIP 1459
/*! transaction: transaction checkpoint most recent handles applied */
-#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_APPLIED 1456
+#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_APPLIED 1460
/*! transaction: transaction checkpoint most recent handles skipped */
-#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_SKIPPED 1457
+#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_SKIPPED 1461
/*! transaction: transaction checkpoint most recent handles walked */
-#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_WALKED 1458
+#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_WALKED 1462
/*! transaction: transaction checkpoint most recent time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_RECENT 1459
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_RECENT 1463
/*! transaction: transaction checkpoint prepare currently running */
-#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RUNNING 1460
+#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RUNNING 1464
/*! transaction: transaction checkpoint prepare max time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MAX 1461
+#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MAX 1465
/*! transaction: transaction checkpoint prepare min time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MIN 1462
+#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MIN 1466
/*! transaction: transaction checkpoint prepare most recent time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RECENT 1463
+#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RECENT 1467
/*! transaction: transaction checkpoint prepare total time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_TOTAL 1464
+#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_TOTAL 1468
/*! transaction: transaction checkpoint scrub dirty target */
-#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TARGET 1465
+#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TARGET 1469
/*! transaction: transaction checkpoint scrub time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TIME 1466
+#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TIME 1470
/*! transaction: transaction checkpoint total time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_TOTAL 1467
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_TOTAL 1471
/*! transaction: transaction checkpoints */
-#define WT_STAT_CONN_TXN_CHECKPOINT 1468
+#define WT_STAT_CONN_TXN_CHECKPOINT 1472
/*! transaction: transaction checkpoints due to obsolete pages */
-#define WT_STAT_CONN_TXN_CHECKPOINT_OBSOLETE_APPLIED 1469
+#define WT_STAT_CONN_TXN_CHECKPOINT_OBSOLETE_APPLIED 1473
/*!
* transaction: transaction checkpoints skipped because database was
* clean
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_SKIPPED 1470
+#define WT_STAT_CONN_TXN_CHECKPOINT_SKIPPED 1474
/*! transaction: transaction failures due to history store */
-#define WT_STAT_CONN_TXN_FAIL_CACHE 1471
+#define WT_STAT_CONN_TXN_FAIL_CACHE 1475
/*!
* transaction: transaction fsync calls for checkpoint after allocating
* the transaction ID
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST 1472
+#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST 1476
/*!
* transaction: transaction fsync duration for checkpoint after
* allocating the transaction ID (usecs)
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST_DURATION 1473
+#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST_DURATION 1477
/*! transaction: transaction range of IDs currently pinned */
-#define WT_STAT_CONN_TXN_PINNED_RANGE 1474
+#define WT_STAT_CONN_TXN_PINNED_RANGE 1478
/*! transaction: transaction range of IDs currently pinned by a checkpoint */
-#define WT_STAT_CONN_TXN_PINNED_CHECKPOINT_RANGE 1475
+#define WT_STAT_CONN_TXN_PINNED_CHECKPOINT_RANGE 1479
/*! transaction: transaction range of timestamps currently pinned */
-#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP 1476
+#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP 1480
/*! transaction: transaction range of timestamps pinned by a checkpoint */
-#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_CHECKPOINT 1477
+#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_CHECKPOINT 1481
/*!
* transaction: transaction range of timestamps pinned by the oldest
* active read timestamp
*/
-#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_READER 1478
+#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_READER 1482
/*!
* transaction: transaction range of timestamps pinned by the oldest
* timestamp
*/
-#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_OLDEST 1479
+#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_OLDEST 1483
/*! transaction: transaction read timestamp of the oldest active reader */
-#define WT_STAT_CONN_TXN_TIMESTAMP_OLDEST_ACTIVE_READ 1480
+#define WT_STAT_CONN_TXN_TIMESTAMP_OLDEST_ACTIVE_READ 1484
/*! transaction: transaction rollback to stable currently running */
-#define WT_STAT_CONN_TXN_ROLLBACK_TO_STABLE_RUNNING 1481
+#define WT_STAT_CONN_TXN_ROLLBACK_TO_STABLE_RUNNING 1485
/*! transaction: transaction walk of concurrent sessions */
-#define WT_STAT_CONN_TXN_WALK_SESSIONS 1482
+#define WT_STAT_CONN_TXN_WALK_SESSIONS 1486
/*! transaction: transactions committed */
-#define WT_STAT_CONN_TXN_COMMIT 1483
+#define WT_STAT_CONN_TXN_COMMIT 1487
/*! transaction: transactions rolled back */
-#define WT_STAT_CONN_TXN_ROLLBACK 1484
+#define WT_STAT_CONN_TXN_ROLLBACK 1488
/*! transaction: update conflicts */
-#define WT_STAT_CONN_TXN_UPDATE_CONFLICT 1485
+#define WT_STAT_CONN_TXN_UPDATE_CONFLICT 1489
/*!
* @}
@@ -6300,507 +6320,527 @@ extern int wiredtiger_extension_terminate(WT_CONNECTION *connection);
#define WT_STAT_DSRC_CACHE_EVICTION_BLOCKED_CHECKPOINT_HS 2047
/*! cache: data source pages selected for eviction unable to be evicted */
#define WT_STAT_DSRC_CACHE_EVICTION_FAIL 2048
+/*!
+ * cache: eviction gave up due to detecting an out of order on disk value
+ * behind the last update on the chain
+ */
+#define WT_STAT_DSRC_CACHE_EVICTION_BLOCKED_OOO_CHECKPOINT_RACE_1 2049
+/*!
+ * cache: eviction gave up due to detecting an out of order tombstone
+ * ahead of the selected on disk update
+ */
+#define WT_STAT_DSRC_CACHE_EVICTION_BLOCKED_OOO_CHECKPOINT_RACE_2 2050
+/*!
+ * cache: eviction gave up due to detecting an out of order tombstone
+ * ahead of the selected on disk update after validating the update chain
+ */
+#define WT_STAT_DSRC_CACHE_EVICTION_BLOCKED_OOO_CHECKPOINT_RACE_3 2051
+/*!
+ * cache: eviction gave up due to detecting out of order timestamps on
+ * the update chain after the selected on disk update
+ */
+#define WT_STAT_DSRC_CACHE_EVICTION_BLOCKED_OOO_CHECKPOINT_RACE_4 2052
/*! cache: eviction walk passes of a file */
-#define WT_STAT_DSRC_CACHE_EVICTION_WALK_PASSES 2049
+#define WT_STAT_DSRC_CACHE_EVICTION_WALK_PASSES 2053
/*! cache: eviction walk target pages histogram - 0-9 */
-#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_LT10 2050
+#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_LT10 2054
/*! cache: eviction walk target pages histogram - 10-31 */
-#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_LT32 2051
+#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_LT32 2055
/*! cache: eviction walk target pages histogram - 128 and higher */
-#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_GE128 2052
+#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_GE128 2056
/*! cache: eviction walk target pages histogram - 32-63 */
-#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_LT64 2053
+#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_LT64 2057
/*! cache: eviction walk target pages histogram - 64-128 */
-#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_LT128 2054
+#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_LT128 2058
/*!
* cache: eviction walk target pages reduced due to history store cache
* pressure
*/
-#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_REDUCED 2055
+#define WT_STAT_DSRC_CACHE_EVICTION_TARGET_PAGE_REDUCED 2059
/*! cache: eviction walks abandoned */
-#define WT_STAT_DSRC_CACHE_EVICTION_WALKS_ABANDONED 2056
+#define WT_STAT_DSRC_CACHE_EVICTION_WALKS_ABANDONED 2060
/*! cache: eviction walks gave up because they restarted their walk twice */
-#define WT_STAT_DSRC_CACHE_EVICTION_WALKS_STOPPED 2057
+#define WT_STAT_DSRC_CACHE_EVICTION_WALKS_STOPPED 2061
/*!
* 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 2058
+#define WT_STAT_DSRC_CACHE_EVICTION_WALKS_GAVE_UP_NO_TARGETS 2062
/*!
* 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 2059
+#define WT_STAT_DSRC_CACHE_EVICTION_WALKS_GAVE_UP_RATIO 2063
/*! cache: eviction walks reached end of tree */
-#define WT_STAT_DSRC_CACHE_EVICTION_WALKS_ENDED 2060
+#define WT_STAT_DSRC_CACHE_EVICTION_WALKS_ENDED 2064
/*! cache: eviction walks restarted */
-#define WT_STAT_DSRC_CACHE_EVICTION_WALK_RESTART 2061
+#define WT_STAT_DSRC_CACHE_EVICTION_WALK_RESTART 2065
/*! cache: eviction walks started from root of tree */
-#define WT_STAT_DSRC_CACHE_EVICTION_WALK_FROM_ROOT 2062
+#define WT_STAT_DSRC_CACHE_EVICTION_WALK_FROM_ROOT 2066
/*! cache: eviction walks started from saved location in tree */
-#define WT_STAT_DSRC_CACHE_EVICTION_WALK_SAVED_POS 2063
+#define WT_STAT_DSRC_CACHE_EVICTION_WALK_SAVED_POS 2067
/*! cache: hazard pointer blocked page eviction */
-#define WT_STAT_DSRC_CACHE_EVICTION_HAZARD 2064
+#define WT_STAT_DSRC_CACHE_EVICTION_HAZARD 2068
/*! cache: history store table insert calls */
-#define WT_STAT_DSRC_CACHE_HS_INSERT 2065
+#define WT_STAT_DSRC_CACHE_HS_INSERT 2069
/*! cache: history store table insert calls that returned restart */
-#define WT_STAT_DSRC_CACHE_HS_INSERT_RESTART 2066
+#define WT_STAT_DSRC_CACHE_HS_INSERT_RESTART 2070
/*!
* cache: history store table out-of-order resolved updates that lose
* their durable timestamp
*/
-#define WT_STAT_DSRC_CACHE_HS_ORDER_LOSE_DURABLE_TIMESTAMP 2067
+#define WT_STAT_DSRC_CACHE_HS_ORDER_LOSE_DURABLE_TIMESTAMP 2071
/*!
* 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 2068
+#define WT_STAT_DSRC_CACHE_HS_ORDER_REINSERT 2072
/*! cache: history store table reads */
-#define WT_STAT_DSRC_CACHE_HS_READ 2069
+#define WT_STAT_DSRC_CACHE_HS_READ 2073
/*! cache: history store table reads missed */
-#define WT_STAT_DSRC_CACHE_HS_READ_MISS 2070
+#define WT_STAT_DSRC_CACHE_HS_READ_MISS 2074
/*! cache: history store table reads requiring squashed modifies */
-#define WT_STAT_DSRC_CACHE_HS_READ_SQUASH 2071
+#define WT_STAT_DSRC_CACHE_HS_READ_SQUASH 2075
/*!
* cache: history store table truncation by rollback to stable to remove
* an unstable update
*/
-#define WT_STAT_DSRC_CACHE_HS_KEY_TRUNCATE_RTS_UNSTABLE 2072
+#define WT_STAT_DSRC_CACHE_HS_KEY_TRUNCATE_RTS_UNSTABLE 2076
/*!
* cache: history store table truncation by rollback to stable to remove
* an update
*/
-#define WT_STAT_DSRC_CACHE_HS_KEY_TRUNCATE_RTS 2073
+#define WT_STAT_DSRC_CACHE_HS_KEY_TRUNCATE_RTS 2077
/*! cache: history store table truncation to remove an update */
-#define WT_STAT_DSRC_CACHE_HS_KEY_TRUNCATE 2074
+#define WT_STAT_DSRC_CACHE_HS_KEY_TRUNCATE 2078
/*!
* 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 2075
+#define WT_STAT_DSRC_CACHE_HS_KEY_TRUNCATE_ONPAGE_REMOVAL 2079
/*!
* 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 2076
+#define WT_STAT_DSRC_CACHE_HS_ORDER_REMOVE 2080
/*! cache: history store table writes requiring squashed modifies */
-#define WT_STAT_DSRC_CACHE_HS_WRITE_SQUASH 2077
+#define WT_STAT_DSRC_CACHE_HS_WRITE_SQUASH 2081
/*! cache: in-memory page passed criteria to be split */
-#define WT_STAT_DSRC_CACHE_INMEM_SPLITTABLE 2078
+#define WT_STAT_DSRC_CACHE_INMEM_SPLITTABLE 2082
/*! cache: in-memory page splits */
-#define WT_STAT_DSRC_CACHE_INMEM_SPLIT 2079
+#define WT_STAT_DSRC_CACHE_INMEM_SPLIT 2083
/*! cache: internal pages evicted */
-#define WT_STAT_DSRC_CACHE_EVICTION_INTERNAL 2080
+#define WT_STAT_DSRC_CACHE_EVICTION_INTERNAL 2084
/*! cache: internal pages split during eviction */
-#define WT_STAT_DSRC_CACHE_EVICTION_SPLIT_INTERNAL 2081
+#define WT_STAT_DSRC_CACHE_EVICTION_SPLIT_INTERNAL 2085
/*! cache: leaf pages split during eviction */
-#define WT_STAT_DSRC_CACHE_EVICTION_SPLIT_LEAF 2082
+#define WT_STAT_DSRC_CACHE_EVICTION_SPLIT_LEAF 2086
/*! cache: modified pages evicted */
-#define WT_STAT_DSRC_CACHE_EVICTION_DIRTY 2083
+#define WT_STAT_DSRC_CACHE_EVICTION_DIRTY 2087
/*! cache: overflow pages read into cache */
-#define WT_STAT_DSRC_CACHE_READ_OVERFLOW 2084
+#define WT_STAT_DSRC_CACHE_READ_OVERFLOW 2088
/*! cache: page split during eviction deepened the tree */
-#define WT_STAT_DSRC_CACHE_EVICTION_DEEPEN 2085
+#define WT_STAT_DSRC_CACHE_EVICTION_DEEPEN 2089
/*! cache: page written requiring history store records */
-#define WT_STAT_DSRC_CACHE_WRITE_HS 2086
+#define WT_STAT_DSRC_CACHE_WRITE_HS 2090
/*! cache: pages read into cache */
-#define WT_STAT_DSRC_CACHE_READ 2087
+#define WT_STAT_DSRC_CACHE_READ 2091
/*! cache: pages read into cache after truncate */
-#define WT_STAT_DSRC_CACHE_READ_DELETED 2088
+#define WT_STAT_DSRC_CACHE_READ_DELETED 2092
/*! cache: pages read into cache after truncate in prepare state */
-#define WT_STAT_DSRC_CACHE_READ_DELETED_PREPARED 2089
+#define WT_STAT_DSRC_CACHE_READ_DELETED_PREPARED 2093
/*! cache: pages requested from the cache */
-#define WT_STAT_DSRC_CACHE_PAGES_REQUESTED 2090
+#define WT_STAT_DSRC_CACHE_PAGES_REQUESTED 2094
/*! cache: pages seen by eviction walk */
-#define WT_STAT_DSRC_CACHE_EVICTION_PAGES_SEEN 2091
+#define WT_STAT_DSRC_CACHE_EVICTION_PAGES_SEEN 2095
/*! cache: pages written from cache */
-#define WT_STAT_DSRC_CACHE_WRITE 2092
+#define WT_STAT_DSRC_CACHE_WRITE 2096
/*! cache: pages written requiring in-memory restoration */
-#define WT_STAT_DSRC_CACHE_WRITE_RESTORE 2093
+#define WT_STAT_DSRC_CACHE_WRITE_RESTORE 2097
/*! cache: tracked dirty bytes in the cache */
-#define WT_STAT_DSRC_CACHE_BYTES_DIRTY 2094
+#define WT_STAT_DSRC_CACHE_BYTES_DIRTY 2098
/*! cache: unmodified pages evicted */
-#define WT_STAT_DSRC_CACHE_EVICTION_CLEAN 2095
+#define WT_STAT_DSRC_CACHE_EVICTION_CLEAN 2099
/*!
* 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 2096
+#define WT_STAT_DSRC_CACHE_STATE_GEN_AVG_GAP 2100
/*!
* 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 2097
+#define WT_STAT_DSRC_CACHE_STATE_AVG_WRITTEN_SIZE 2101
/*!
* 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 2098
+#define WT_STAT_DSRC_CACHE_STATE_AVG_VISITED_AGE 2102
/*!
* 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 2099
+#define WT_STAT_DSRC_CACHE_STATE_AVG_UNVISITED_AGE 2103
/*!
* 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 2100
+#define WT_STAT_DSRC_CACHE_STATE_PAGES_CLEAN 2104
/*!
* cache_walk: Current eviction generation, only reported if cache_walk
* or all statistics are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_GEN_CURRENT 2101
+#define WT_STAT_DSRC_CACHE_STATE_GEN_CURRENT 2105
/*!
* 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 2102
+#define WT_STAT_DSRC_CACHE_STATE_PAGES_DIRTY 2106
/*!
* 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 2103
+#define WT_STAT_DSRC_CACHE_STATE_ROOT_ENTRIES 2107
/*!
* 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 2104
+#define WT_STAT_DSRC_CACHE_STATE_PAGES_INTERNAL 2108
/*!
* 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 2105
+#define WT_STAT_DSRC_CACHE_STATE_PAGES_LEAF 2109
/*!
* 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 2106
+#define WT_STAT_DSRC_CACHE_STATE_GEN_MAX_GAP 2110
/*!
* cache_walk: Maximum page size seen, only reported if cache_walk or all
* statistics are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_MAX_PAGESIZE 2107
+#define WT_STAT_DSRC_CACHE_STATE_MAX_PAGESIZE 2111
/*!
* 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 2108
+#define WT_STAT_DSRC_CACHE_STATE_MIN_WRITTEN_SIZE 2112
/*!
* 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 2109
+#define WT_STAT_DSRC_CACHE_STATE_UNVISITED_COUNT 2113
/*!
* 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 2110
+#define WT_STAT_DSRC_CACHE_STATE_SMALLER_ALLOC_SIZE 2114
/*!
* 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 2111
+#define WT_STAT_DSRC_CACHE_STATE_MEMORY 2115
/*!
* cache_walk: Pages currently queued for eviction, only reported if
* cache_walk or all statistics are enabled
*/
-#define WT_STAT_DSRC_CACHE_STATE_QUEUED 2112
+#define WT_STAT_DSRC_CACHE_STATE_QUEUED 2116
/*!
* 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 2113
+#define WT_STAT_DSRC_CACHE_STATE_NOT_QUEUEABLE 2117
/*!
* 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 2114
+#define WT_STAT_DSRC_CACHE_STATE_REFS_SKIPPED 2118
/*!
* 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 2115
+#define WT_STAT_DSRC_CACHE_STATE_ROOT_SIZE 2119
/*!
* 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 2116
+#define WT_STAT_DSRC_CACHE_STATE_PAGES 2120
/*! checkpoint-cleanup: pages added for eviction */
-#define WT_STAT_DSRC_CC_PAGES_EVICT 2117
+#define WT_STAT_DSRC_CC_PAGES_EVICT 2121
/*! checkpoint-cleanup: pages removed */
-#define WT_STAT_DSRC_CC_PAGES_REMOVED 2118
+#define WT_STAT_DSRC_CC_PAGES_REMOVED 2122
/*! checkpoint-cleanup: pages skipped during tree walk */
-#define WT_STAT_DSRC_CC_PAGES_WALK_SKIPPED 2119
+#define WT_STAT_DSRC_CC_PAGES_WALK_SKIPPED 2123
/*! checkpoint-cleanup: pages visited */
-#define WT_STAT_DSRC_CC_PAGES_VISITED 2120
+#define WT_STAT_DSRC_CC_PAGES_VISITED 2124
/*!
* compression: compressed page maximum internal page size prior to
* compression
*/
-#define WT_STAT_DSRC_COMPRESS_PRECOMP_INTL_MAX_PAGE_SIZE 2121
+#define WT_STAT_DSRC_COMPRESS_PRECOMP_INTL_MAX_PAGE_SIZE 2125
/*!
* compression: compressed page maximum leaf page size prior to
* compression
*/
-#define WT_STAT_DSRC_COMPRESS_PRECOMP_LEAF_MAX_PAGE_SIZE 2122
+#define WT_STAT_DSRC_COMPRESS_PRECOMP_LEAF_MAX_PAGE_SIZE 2126
/*! compression: compressed pages read */
-#define WT_STAT_DSRC_COMPRESS_READ 2123
+#define WT_STAT_DSRC_COMPRESS_READ 2127
/*! compression: compressed pages written */
-#define WT_STAT_DSRC_COMPRESS_WRITE 2124
+#define WT_STAT_DSRC_COMPRESS_WRITE 2128
/*! compression: page written failed to compress */
-#define WT_STAT_DSRC_COMPRESS_WRITE_FAIL 2125
+#define WT_STAT_DSRC_COMPRESS_WRITE_FAIL 2129
/*! compression: page written was too small to compress */
-#define WT_STAT_DSRC_COMPRESS_WRITE_TOO_SMALL 2126
+#define WT_STAT_DSRC_COMPRESS_WRITE_TOO_SMALL 2130
/*! cursor: Total number of entries skipped by cursor next calls */
-#define WT_STAT_DSRC_CURSOR_NEXT_SKIP_TOTAL 2127
+#define WT_STAT_DSRC_CURSOR_NEXT_SKIP_TOTAL 2131
/*! cursor: Total number of entries skipped by cursor prev calls */
-#define WT_STAT_DSRC_CURSOR_PREV_SKIP_TOTAL 2128
+#define WT_STAT_DSRC_CURSOR_PREV_SKIP_TOTAL 2132
/*!
* cursor: Total number of entries skipped to position the history store
* cursor
*/
-#define WT_STAT_DSRC_CURSOR_SKIP_HS_CUR_POSITION 2129
+#define WT_STAT_DSRC_CURSOR_SKIP_HS_CUR_POSITION 2133
/*!
* cursor: Total number of pages skipped without reading by cursor next
* calls
*/
-#define WT_STAT_DSRC_CURSOR_NEXT_SKIP_PAGE_COUNT 2130
+#define WT_STAT_DSRC_CURSOR_NEXT_SKIP_PAGE_COUNT 2134
/*!
* cursor: Total number of pages skipped without reading by cursor prev
* calls
*/
-#define WT_STAT_DSRC_CURSOR_PREV_SKIP_PAGE_COUNT 2131
+#define WT_STAT_DSRC_CURSOR_PREV_SKIP_PAGE_COUNT 2135
/*!
* cursor: Total number of times a search near has exited due to prefix
* config
*/
-#define WT_STAT_DSRC_CURSOR_SEARCH_NEAR_PREFIX_FAST_PATHS 2132
+#define WT_STAT_DSRC_CURSOR_SEARCH_NEAR_PREFIX_FAST_PATHS 2136
/*! cursor: bulk loaded cursor insert calls */
-#define WT_STAT_DSRC_CURSOR_INSERT_BULK 2133
+#define WT_STAT_DSRC_CURSOR_INSERT_BULK 2137
/*! cursor: cache cursors reuse count */
-#define WT_STAT_DSRC_CURSOR_REOPEN 2134
+#define WT_STAT_DSRC_CURSOR_REOPEN 2138
/*! cursor: close calls that result in cache */
-#define WT_STAT_DSRC_CURSOR_CACHE 2135
+#define WT_STAT_DSRC_CURSOR_CACHE 2139
/*! cursor: create calls */
-#define WT_STAT_DSRC_CURSOR_CREATE 2136
+#define WT_STAT_DSRC_CURSOR_CREATE 2140
/*!
* cursor: cursor next calls that skip due to a globally visible history
* store tombstone
*/
-#define WT_STAT_DSRC_CURSOR_NEXT_HS_TOMBSTONE 2137
+#define WT_STAT_DSRC_CURSOR_NEXT_HS_TOMBSTONE 2141
/*!
* cursor: cursor next calls that skip greater than or equal to 100
* entries
*/
-#define WT_STAT_DSRC_CURSOR_NEXT_SKIP_GE_100 2138
+#define WT_STAT_DSRC_CURSOR_NEXT_SKIP_GE_100 2142
/*! cursor: cursor next calls that skip less than 100 entries */
-#define WT_STAT_DSRC_CURSOR_NEXT_SKIP_LT_100 2139
+#define WT_STAT_DSRC_CURSOR_NEXT_SKIP_LT_100 2143
/*!
* cursor: cursor prev calls that skip due to a globally visible history
* store tombstone
*/
-#define WT_STAT_DSRC_CURSOR_PREV_HS_TOMBSTONE 2140
+#define WT_STAT_DSRC_CURSOR_PREV_HS_TOMBSTONE 2144
/*!
* cursor: cursor prev calls that skip greater than or equal to 100
* entries
*/
-#define WT_STAT_DSRC_CURSOR_PREV_SKIP_GE_100 2141
+#define WT_STAT_DSRC_CURSOR_PREV_SKIP_GE_100 2145
/*! cursor: cursor prev calls that skip less than 100 entries */
-#define WT_STAT_DSRC_CURSOR_PREV_SKIP_LT_100 2142
+#define WT_STAT_DSRC_CURSOR_PREV_SKIP_LT_100 2146
/*! cursor: insert calls */
-#define WT_STAT_DSRC_CURSOR_INSERT 2143
+#define WT_STAT_DSRC_CURSOR_INSERT 2147
/*! cursor: insert key and value bytes */
-#define WT_STAT_DSRC_CURSOR_INSERT_BYTES 2144
+#define WT_STAT_DSRC_CURSOR_INSERT_BYTES 2148
/*! cursor: modify */
-#define WT_STAT_DSRC_CURSOR_MODIFY 2145
+#define WT_STAT_DSRC_CURSOR_MODIFY 2149
/*! cursor: modify key and value bytes affected */
-#define WT_STAT_DSRC_CURSOR_MODIFY_BYTES 2146
+#define WT_STAT_DSRC_CURSOR_MODIFY_BYTES 2150
/*! cursor: modify value bytes modified */
-#define WT_STAT_DSRC_CURSOR_MODIFY_BYTES_TOUCH 2147
+#define WT_STAT_DSRC_CURSOR_MODIFY_BYTES_TOUCH 2151
/*! cursor: next calls */
-#define WT_STAT_DSRC_CURSOR_NEXT 2148
+#define WT_STAT_DSRC_CURSOR_NEXT 2152
/*! cursor: open cursor count */
-#define WT_STAT_DSRC_CURSOR_OPEN_COUNT 2149
+#define WT_STAT_DSRC_CURSOR_OPEN_COUNT 2153
/*! cursor: operation restarted */
-#define WT_STAT_DSRC_CURSOR_RESTART 2150
+#define WT_STAT_DSRC_CURSOR_RESTART 2154
/*! cursor: prev calls */
-#define WT_STAT_DSRC_CURSOR_PREV 2151
+#define WT_STAT_DSRC_CURSOR_PREV 2155
/*! cursor: remove calls */
-#define WT_STAT_DSRC_CURSOR_REMOVE 2152
+#define WT_STAT_DSRC_CURSOR_REMOVE 2156
/*! cursor: remove key bytes removed */
-#define WT_STAT_DSRC_CURSOR_REMOVE_BYTES 2153
+#define WT_STAT_DSRC_CURSOR_REMOVE_BYTES 2157
/*! cursor: reserve calls */
-#define WT_STAT_DSRC_CURSOR_RESERVE 2154
+#define WT_STAT_DSRC_CURSOR_RESERVE 2158
/*! cursor: reset calls */
-#define WT_STAT_DSRC_CURSOR_RESET 2155
+#define WT_STAT_DSRC_CURSOR_RESET 2159
/*! cursor: search calls */
-#define WT_STAT_DSRC_CURSOR_SEARCH 2156
+#define WT_STAT_DSRC_CURSOR_SEARCH 2160
/*! cursor: search history store calls */
-#define WT_STAT_DSRC_CURSOR_SEARCH_HS 2157
+#define WT_STAT_DSRC_CURSOR_SEARCH_HS 2161
/*! cursor: search near calls */
-#define WT_STAT_DSRC_CURSOR_SEARCH_NEAR 2158
+#define WT_STAT_DSRC_CURSOR_SEARCH_NEAR 2162
/*! cursor: truncate calls */
-#define WT_STAT_DSRC_CURSOR_TRUNCATE 2159
+#define WT_STAT_DSRC_CURSOR_TRUNCATE 2163
/*! cursor: update calls */
-#define WT_STAT_DSRC_CURSOR_UPDATE 2160
+#define WT_STAT_DSRC_CURSOR_UPDATE 2164
/*! cursor: update key and value bytes */
-#define WT_STAT_DSRC_CURSOR_UPDATE_BYTES 2161
+#define WT_STAT_DSRC_CURSOR_UPDATE_BYTES 2165
/*! cursor: update value size change */
-#define WT_STAT_DSRC_CURSOR_UPDATE_BYTES_CHANGED 2162
+#define WT_STAT_DSRC_CURSOR_UPDATE_BYTES_CHANGED 2166
/*! reconciliation: approximate byte size of timestamps in pages written */
-#define WT_STAT_DSRC_REC_TIME_WINDOW_BYTES_TS 2163
+#define WT_STAT_DSRC_REC_TIME_WINDOW_BYTES_TS 2167
/*!
* reconciliation: approximate byte size of transaction IDs in pages
* written
*/
-#define WT_STAT_DSRC_REC_TIME_WINDOW_BYTES_TXN 2164
+#define WT_STAT_DSRC_REC_TIME_WINDOW_BYTES_TXN 2168
/*! reconciliation: dictionary matches */
-#define WT_STAT_DSRC_REC_DICTIONARY 2165
+#define WT_STAT_DSRC_REC_DICTIONARY 2169
/*! reconciliation: fast-path pages deleted */
-#define WT_STAT_DSRC_REC_PAGE_DELETE_FAST 2166
+#define WT_STAT_DSRC_REC_PAGE_DELETE_FAST 2170
/*!
* reconciliation: internal page key bytes discarded using suffix
* compression
*/
-#define WT_STAT_DSRC_REC_SUFFIX_COMPRESSION 2167
+#define WT_STAT_DSRC_REC_SUFFIX_COMPRESSION 2171
/*! reconciliation: internal page multi-block writes */
-#define WT_STAT_DSRC_REC_MULTIBLOCK_INTERNAL 2168
+#define WT_STAT_DSRC_REC_MULTIBLOCK_INTERNAL 2172
/*! reconciliation: internal-page overflow keys */
-#define WT_STAT_DSRC_REC_OVERFLOW_KEY_INTERNAL 2169
+#define WT_STAT_DSRC_REC_OVERFLOW_KEY_INTERNAL 2173
/*! reconciliation: leaf page key bytes discarded using prefix compression */
-#define WT_STAT_DSRC_REC_PREFIX_COMPRESSION 2170
+#define WT_STAT_DSRC_REC_PREFIX_COMPRESSION 2174
/*! reconciliation: leaf page multi-block writes */
-#define WT_STAT_DSRC_REC_MULTIBLOCK_LEAF 2171
+#define WT_STAT_DSRC_REC_MULTIBLOCK_LEAF 2175
/*! reconciliation: leaf-page overflow keys */
-#define WT_STAT_DSRC_REC_OVERFLOW_KEY_LEAF 2172
+#define WT_STAT_DSRC_REC_OVERFLOW_KEY_LEAF 2176
/*! reconciliation: maximum blocks required for a page */
-#define WT_STAT_DSRC_REC_MULTIBLOCK_MAX 2173
+#define WT_STAT_DSRC_REC_MULTIBLOCK_MAX 2177
/*! reconciliation: overflow values written */
-#define WT_STAT_DSRC_REC_OVERFLOW_VALUE 2174
+#define WT_STAT_DSRC_REC_OVERFLOW_VALUE 2178
/*! reconciliation: page checksum matches */
-#define WT_STAT_DSRC_REC_PAGE_MATCH 2175
+#define WT_STAT_DSRC_REC_PAGE_MATCH 2179
/*! reconciliation: page reconciliation calls */
-#define WT_STAT_DSRC_REC_PAGES 2176
+#define WT_STAT_DSRC_REC_PAGES 2180
/*! reconciliation: page reconciliation calls for eviction */
-#define WT_STAT_DSRC_REC_PAGES_EVICTION 2177
+#define WT_STAT_DSRC_REC_PAGES_EVICTION 2181
/*! reconciliation: pages deleted */
-#define WT_STAT_DSRC_REC_PAGE_DELETE 2178
+#define WT_STAT_DSRC_REC_PAGE_DELETE 2182
/*!
* reconciliation: pages written including an aggregated newest start
* durable timestamp
*/
-#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_START_DURABLE_TS 2179
+#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_START_DURABLE_TS 2183
/*!
* reconciliation: pages written including an aggregated newest stop
* durable timestamp
*/
-#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_STOP_DURABLE_TS 2180
+#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_STOP_DURABLE_TS 2184
/*!
* reconciliation: pages written including an aggregated newest stop
* timestamp
*/
-#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_STOP_TS 2181
+#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_STOP_TS 2185
/*!
* reconciliation: pages written including an aggregated newest stop
* transaction ID
*/
-#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_STOP_TXN 2182
+#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_STOP_TXN 2186
/*!
* reconciliation: pages written including an aggregated newest
* transaction ID
*/
-#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_TXN 2183
+#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_TXN 2187
/*!
* reconciliation: pages written including an aggregated oldest start
* timestamp
*/
-#define WT_STAT_DSRC_REC_TIME_AGGR_OLDEST_START_TS 2184
+#define WT_STAT_DSRC_REC_TIME_AGGR_OLDEST_START_TS 2188
/*! reconciliation: pages written including an aggregated prepare */
-#define WT_STAT_DSRC_REC_TIME_AGGR_PREPARED 2185
+#define WT_STAT_DSRC_REC_TIME_AGGR_PREPARED 2189
/*! reconciliation: pages written including at least one prepare */
-#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_PREPARED 2186
+#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_PREPARED 2190
/*!
* reconciliation: pages written including at least one start durable
* timestamp
*/
-#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_DURABLE_START_TS 2187
+#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_DURABLE_START_TS 2191
/*! reconciliation: pages written including at least one start timestamp */
-#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_START_TS 2188
+#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_START_TS 2192
/*!
* reconciliation: pages written including at least one start transaction
* ID
*/
-#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_START_TXN 2189
+#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_START_TXN 2193
/*!
* reconciliation: pages written including at least one stop durable
* timestamp
*/
-#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_DURABLE_STOP_TS 2190
+#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_DURABLE_STOP_TS 2194
/*! reconciliation: pages written including at least one stop timestamp */
-#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_STOP_TS 2191
+#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_STOP_TS 2195
/*!
* reconciliation: pages written including at least one stop transaction
* ID
*/
-#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_STOP_TXN 2192
+#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_STOP_TXN 2196
/*! reconciliation: records written including a prepare */
-#define WT_STAT_DSRC_REC_TIME_WINDOW_PREPARED 2193
+#define WT_STAT_DSRC_REC_TIME_WINDOW_PREPARED 2197
/*! reconciliation: records written including a start durable timestamp */
-#define WT_STAT_DSRC_REC_TIME_WINDOW_DURABLE_START_TS 2194
+#define WT_STAT_DSRC_REC_TIME_WINDOW_DURABLE_START_TS 2198
/*! reconciliation: records written including a start timestamp */
-#define WT_STAT_DSRC_REC_TIME_WINDOW_START_TS 2195
+#define WT_STAT_DSRC_REC_TIME_WINDOW_START_TS 2199
/*! reconciliation: records written including a start transaction ID */
-#define WT_STAT_DSRC_REC_TIME_WINDOW_START_TXN 2196
+#define WT_STAT_DSRC_REC_TIME_WINDOW_START_TXN 2200
/*! reconciliation: records written including a stop durable timestamp */
-#define WT_STAT_DSRC_REC_TIME_WINDOW_DURABLE_STOP_TS 2197
+#define WT_STAT_DSRC_REC_TIME_WINDOW_DURABLE_STOP_TS 2201
/*! reconciliation: records written including a stop timestamp */
-#define WT_STAT_DSRC_REC_TIME_WINDOW_STOP_TS 2198
+#define WT_STAT_DSRC_REC_TIME_WINDOW_STOP_TS 2202
/*! reconciliation: records written including a stop transaction ID */
-#define WT_STAT_DSRC_REC_TIME_WINDOW_STOP_TXN 2199
+#define WT_STAT_DSRC_REC_TIME_WINDOW_STOP_TXN 2203
/*! session: object compaction */
-#define WT_STAT_DSRC_SESSION_COMPACT 2200
+#define WT_STAT_DSRC_SESSION_COMPACT 2204
/*! session: tiered operations dequeued and processed */
-#define WT_STAT_DSRC_TIERED_WORK_UNITS_DEQUEUED 2201
+#define WT_STAT_DSRC_TIERED_WORK_UNITS_DEQUEUED 2205
/*! session: tiered operations scheduled */
-#define WT_STAT_DSRC_TIERED_WORK_UNITS_CREATED 2202
+#define WT_STAT_DSRC_TIERED_WORK_UNITS_CREATED 2206
/*! session: tiered storage local retention time (secs) */
-#define WT_STAT_DSRC_TIERED_RETENTION 2203
+#define WT_STAT_DSRC_TIERED_RETENTION 2207
/*! session: tiered storage object size */
-#define WT_STAT_DSRC_TIERED_OBJECT_SIZE 2204
+#define WT_STAT_DSRC_TIERED_OBJECT_SIZE 2208
/*! transaction: race to read prepared update retry */
-#define WT_STAT_DSRC_TXN_READ_RACE_PREPARE_UPDATE 2205
+#define WT_STAT_DSRC_TXN_READ_RACE_PREPARE_UPDATE 2209
/*!
* 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 2206
+#define WT_STAT_DSRC_TXN_RTS_HS_STOP_OLDER_THAN_NEWER_START 2210
/*! transaction: rollback to stable inconsistent checkpoint */
-#define WT_STAT_DSRC_TXN_RTS_INCONSISTENT_CKPT 2207
+#define WT_STAT_DSRC_TXN_RTS_INCONSISTENT_CKPT 2211
/*! transaction: rollback to stable keys removed */
-#define WT_STAT_DSRC_TXN_RTS_KEYS_REMOVED 2208
+#define WT_STAT_DSRC_TXN_RTS_KEYS_REMOVED 2212
/*! transaction: rollback to stable keys restored */
-#define WT_STAT_DSRC_TXN_RTS_KEYS_RESTORED 2209
+#define WT_STAT_DSRC_TXN_RTS_KEYS_RESTORED 2213
/*! transaction: rollback to stable restored tombstones from history store */
-#define WT_STAT_DSRC_TXN_RTS_HS_RESTORE_TOMBSTONES 2210
+#define WT_STAT_DSRC_TXN_RTS_HS_RESTORE_TOMBSTONES 2214
/*! transaction: rollback to stable restored updates from history store */
-#define WT_STAT_DSRC_TXN_RTS_HS_RESTORE_UPDATES 2211
+#define WT_STAT_DSRC_TXN_RTS_HS_RESTORE_UPDATES 2215
/*! transaction: rollback to stable skipping delete rle */
-#define WT_STAT_DSRC_TXN_RTS_DELETE_RLE_SKIPPED 2212
+#define WT_STAT_DSRC_TXN_RTS_DELETE_RLE_SKIPPED 2216
/*! transaction: rollback to stable skipping stable rle */
-#define WT_STAT_DSRC_TXN_RTS_STABLE_RLE_SKIPPED 2213
+#define WT_STAT_DSRC_TXN_RTS_STABLE_RLE_SKIPPED 2217
/*! transaction: rollback to stable sweeping history store keys */
-#define WT_STAT_DSRC_TXN_RTS_SWEEP_HS_KEYS 2214
+#define WT_STAT_DSRC_TXN_RTS_SWEEP_HS_KEYS 2218
/*! transaction: rollback to stable updates removed from history store */
-#define WT_STAT_DSRC_TXN_RTS_HS_REMOVED 2215
+#define WT_STAT_DSRC_TXN_RTS_HS_REMOVED 2219
/*! transaction: transaction checkpoints due to obsolete pages */
-#define WT_STAT_DSRC_TXN_CHECKPOINT_OBSOLETE_APPLIED 2216
+#define WT_STAT_DSRC_TXN_CHECKPOINT_OBSOLETE_APPLIED 2220
/*! transaction: update conflicts */
-#define WT_STAT_DSRC_TXN_UPDATE_CONFLICT 2217
+#define WT_STAT_DSRC_TXN_UPDATE_CONFLICT 2221
/*!
* @}
diff --git a/src/third_party/wiredtiger/src/reconcile/rec_col.c b/src/third_party/wiredtiger/src/reconcile/rec_col.c
index 8000026c58b..03f075e7cb0 100644
--- a/src/third_party/wiredtiger/src/reconcile/rec_col.c
+++ b/src/third_party/wiredtiger/src/reconcile/rec_col.c
@@ -824,9 +824,15 @@ record_loop:
if (hs_cursor == NULL)
WT_ERR(__wt_curhs_open(session, NULL, &hs_cursor));
- /* From WT_TS_NONE to delete all the history store content of the key. */
- WT_ERR(__wt_hs_delete_key_from_ts(session, hs_cursor, btree->id,
- &hs_recno_key, WT_TS_NONE, false, F_ISSET(r, WT_REC_CHECKPOINT_RUNNING)));
+ /*
+ * From WT_TS_NONE delete all the history store content of the key. This
+ * path will never be taken for a mixed-mode deletion being evicted and with
+ * a checkpoint that started prior to the eviction starting its
+ * reconciliation as previous checks done while selecting an update will
+ * detect that.
+ */
+ WT_ERR(__wt_hs_delete_key_from_ts(
+ session, hs_cursor, btree->id, &hs_recno_key, WT_TS_NONE, false, false));
WT_STAT_CONN_INCR(session, cache_hs_key_truncate_onpage_removal);
WT_STAT_DATA_INCR(session, cache_hs_key_truncate_onpage_removal);
diff --git a/src/third_party/wiredtiger/src/reconcile/rec_row.c b/src/third_party/wiredtiger/src/reconcile/rec_row.c
index 002086f540e..6817ee53899 100644
--- a/src/third_party/wiredtiger/src/reconcile/rec_row.c
+++ b/src/third_party/wiredtiger/src/reconcile/rec_row.c
@@ -927,9 +927,14 @@ __wt_rec_row_leaf(
if (hs_cursor == NULL)
WT_ERR(__wt_curhs_open(session, NULL, &hs_cursor));
- /* From WT_TS_NONE to delete all the history store content of the key. */
- WT_ERR(__wt_hs_delete_key_from_ts(session, hs_cursor, btree->id, tmpkey,
- WT_TS_NONE, false, F_ISSET(r, WT_REC_CHECKPOINT_RUNNING)));
+ /*
+ * From WT_TS_NONE delete all the history store content of the key. This path
+ * will never be taken for a mixed-mode deletion being evicted and with a
+ * checkpoint that started prior to the eviction starting its reconciliation as
+ * previous checks done while selecting an update will detect that.
+ */
+ WT_ERR(__wt_hs_delete_key_from_ts(
+ session, hs_cursor, btree->id, tmpkey, WT_TS_NONE, false, false));
/* Fail 1% of the time. */
if (F_ISSET(r, WT_REC_EVICT) &&
diff --git a/src/third_party/wiredtiger/src/reconcile/rec_visibility.c b/src/third_party/wiredtiger/src/reconcile/rec_visibility.c
index 8caeac903b4..63b2c73c0d5 100644
--- a/src/third_party/wiredtiger/src/reconcile/rec_visibility.c
+++ b/src/third_party/wiredtiger/src/reconcile/rec_visibility.c
@@ -205,9 +205,10 @@ __rec_need_save_upd(
return (true);
/*
- * Save updates for any reconciliation that doesn't involve history store (in-memory database
- * and fixed length column store), except when the selected stop time point or the selected
- * start time point is globally visible.
+ * Don't save updates for any reconciliation that doesn't involve history store (in-memory
+ * database, fixed length column store, metadata, and history store reconciliation itself),
+ * except when the selected stop time point or the selected start time point is not globally
+ * visible for in memory database and fixed length column store.
*/
if (!F_ISSET(r, WT_REC_HS) && !F_ISSET(r, WT_REC_IN_MEMORY) && r->page->type != WT_PAGE_COL_FIX)
return (false);
@@ -232,20 +233,147 @@ __rec_need_save_upd(
* equal to the start time point. While unusual, it is permitted for a single transaction to
* insert and then remove a record. We don't want to generate a warning in that case.
*/
-static inline void
+static inline bool
__timestamp_out_of_order_fix(WT_SESSION_IMPL *session, WT_TIME_WINDOW *select_tw)
{
char time_string[WT_TIME_STRING_SIZE];
- if (select_tw->stop_ts < select_tw->start_ts ||
- (select_tw->stop_ts == select_tw->start_ts && select_tw->stop_txn < select_tw->start_txn)) {
+ /*
+ * When supporting read-uncommitted it was possible for the stop_txn to be less than the
+ * start_txn, this is no longer true so assert that we don't encounter it.
+ */
+ WT_ASSERT(session, select_tw->stop_txn >= select_tw->start_txn);
+
+ if (select_tw->stop_ts < select_tw->start_ts) {
__wt_verbose(session, WT_VERB_TIMESTAMP,
"Warning: fixing out-of-order timestamps remove earlier than value; time window %s",
__wt_time_window_to_string(select_tw, time_string));
select_tw->durable_start_ts = select_tw->durable_stop_ts;
select_tw->start_ts = select_tw->stop_ts;
+ return (true);
+ }
+ return (false);
+}
+
+/*
+ * __rec_validate_upd_chain --
+ * Check the update chain for conditions that would prevent its insertion into the history
+ * store. Return EBUSY if the update chain cannot be inserted into the history store at this
+ * time.
+ */
+static int
+__rec_validate_upd_chain(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_UPDATE *select_upd,
+ WT_TIME_WINDOW *select_tw, WT_CELL_UNPACK_KV *vpack)
+{
+ WT_UPDATE *prev_upd, *upd;
+
+ /*
+ * There is no selected update to go to disk as such we don't need to check the updates
+ * following it.
+ */
+ if (select_upd == NULL)
+ return (0);
+
+ /*
+ * No need to check out of order timestamps for any reconciliation that doesn't involve history
+ * store (in-memory database, fixed length column store, metadata, and history store
+ * reconciliation itself).
+ */
+ if (!F_ISSET(r, WT_REC_HS))
+ return (0);
+
+ /*
+ * If eviction reconciliation starts before checkpoint, it is fine to evict out of order
+ * timestamp updates.
+ */
+ if (!F_ISSET(r, WT_REC_CHECKPOINT_RUNNING))
+ return (0);
+
+ /*
+ * 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
+ * of the selected update.
+ */
+ if (select_tw->stop_ts < select_tw->start_ts) {
+ WT_STAT_CONN_DATA_INCR(session, cache_eviction_blocked_ooo_checkpoint_race_2);
+ return (EBUSY);
+ }
+
+ /*
+ * Rollback to stable may restore older updates from the data store or history store. In this
+ * case, the restored update has older update than the onpage value, which is expected.
+ * Reconciliation may restore the onpage value to the update chain. In this case, no need to
+ * check further as the value is the same as the onpage value which means we processed this
+ * update chain in a previous round of reconciliation. If we have a prepared update restored
+ * from the onpage value, no need to check as well because the update chain should only contain
+ * prepared updates from the same transaction.
+ */
+ if (F_ISSET(select_upd,
+ WT_UPDATE_RESTORED_FROM_DS | WT_UPDATE_RESTORED_FROM_HS |
+ WT_UPDATE_PREPARE_RESTORED_FROM_DS))
+ return (0);
+
+ /* Loop forward from update after the selected on-page update. */
+ for (prev_upd = select_upd, upd = select_upd->next; upd != NULL; upd = upd->next) {
+ if (upd->txnid == WT_TXN_ABORTED)
+ continue;
+
+ /* If we have a prepared update, durable timestamp cannot be out of order. */
+ WT_ASSERT(session,
+ prev_upd->prepare_state == WT_PREPARE_INPROGRESS ||
+ prev_upd->start_ts == prev_upd->durable_ts || prev_upd->durable_ts >= upd->durable_ts);
+
+ /* Validate that the updates older than us have older timestamps. */
+ if (prev_upd->start_ts < upd->start_ts) {
+ WT_STAT_CONN_DATA_INCR(session, cache_eviction_blocked_ooo_checkpoint_race_4);
+ return (EBUSY);
+ }
+
+ /*
+ * Rollback to stable may restore older updates from the data store or history store. In
+ * this case, the restored update has older update than the onpage value, which is expected.
+ * Reconciliation may restore the onpage value to the update chain. In this case, no need to
+ * check further as the value is the same as the onpage value. If we have a committed
+ * prepared update restored from the onpage value, no need to check further as well because
+ * the update chain after it should only contain committed prepared updates from the same
+ * transaction.
+ */
+ if (F_ISSET(upd,
+ WT_UPDATE_RESTORED_FROM_DS | WT_UPDATE_RESTORED_FROM_HS |
+ WT_UPDATE_PREPARE_RESTORED_FROM_DS))
+ return (0);
+
+ prev_upd = upd;
+ }
+
+ /*
+ * Check that the on-page time window isn't out-of-order. Don't check against ondisk prepared
+ * update. It is either committed or rolled back if we are here. If we haven't seen an update
+ * with the flag WT_UPDATE_RESTORED_FROM_DS we check against the ondisk value.
+ *
+ * In the case of checkpoint reconciliation the ondisk value could be an update in the middle of
+ * the update chain but checkpoint won't replace the page image as such it will be the previous
+ * reconciliations ondisk value that we will be comparing against.
+ */
+ if (vpack != NULL && !vpack->tw.prepare) {
+ /* If we have a prepared update, durable timestamp cannot be out of order. */
+ WT_ASSERT(session,
+ prev_upd->prepare_state == WT_PREPARE_INPROGRESS ||
+ prev_upd->start_ts == prev_upd->durable_ts ||
+ prev_upd->durable_ts >= vpack->tw.durable_start_ts);
+ WT_ASSERT(session,
+ prev_upd->prepare_state == WT_PREPARE_INPROGRESS ||
+ prev_upd->start_ts == prev_upd->durable_ts || !WT_TIME_WINDOW_HAS_STOP(&vpack->tw) ||
+ prev_upd->durable_ts >= vpack->tw.durable_stop_ts);
+ if (prev_upd->start_ts < vpack->tw.start_ts ||
+ (WT_TIME_WINDOW_HAS_STOP(&vpack->tw) && prev_upd->start_ts < vpack->tw.stop_ts)) {
+ WT_STAT_CONN_DATA_INCR(session, cache_eviction_blocked_ooo_checkpoint_race_1);
+ return (EBUSY);
+ }
}
+
+ return (0);
}
/*
@@ -260,7 +388,7 @@ __wt_rec_upd_select(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_INSERT *ins, v
WT_DECL_RET;
WT_PAGE *page;
WT_TIME_WINDOW *select_tw;
- WT_UPDATE *first_txn_upd, *first_upd, *upd, *last_upd, *tombstone;
+ WT_UPDATE *first_txn_upd, *first_upd, *onpage_upd, *upd, *last_upd, *tombstone;
wt_timestamp_t max_ts;
size_t upd_memsize;
uint64_t max_txn, session_txnid, txnid;
@@ -276,7 +404,7 @@ __wt_rec_upd_select(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_INSERT *ins, v
WT_TIME_WINDOW_INIT(select_tw);
page = r->page;
- first_txn_upd = upd = last_upd = tombstone = NULL;
+ first_txn_upd = onpage_upd = upd = last_upd = tombstone = NULL;
upd_memsize = 0;
max_ts = WT_TS_NONE;
max_txn = WT_TXN_NONE;
@@ -539,8 +667,6 @@ __wt_rec_upd_select(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_INSERT *ins, v
}
}
- __timestamp_out_of_order_fix(session, select_tw);
-
/*
* Track the most recent transaction in the page. We store this in the tree at the end of
* reconciliation in the service of checkpoints, it is used to avoid discarding trees from
@@ -557,6 +683,28 @@ __wt_rec_upd_select(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_INSERT *ins, v
if (has_newer_updates)
r->leave_dirty = true;
+ onpage_upd = upd_select->upd != NULL && upd_select->upd->type == WT_UPDATE_TOMBSTONE ?
+ NULL :
+ upd_select->upd;
+
+ /* Check the update chain for conditions that could prevent it's eviction. */
+ WT_ERR(__rec_validate_upd_chain(session, r, onpage_upd, select_tw, vpack));
+
+ /*
+ * Fixup any out of order timestamps, assert that checkpoint wasn't running when this round of
+ * reconciliation started.
+ *
+ * Returning EBUSY here is okay as the previous call to validate the update chain wouldn't have
+ * caught the situation where only a tombstone is selected.
+ */
+ if (__timestamp_out_of_order_fix(session, select_tw) && F_ISSET(r, WT_REC_HS) &&
+ F_ISSET(r, WT_REC_CHECKPOINT_RUNNING)) {
+ /* Catch this case in diagnostic builds. */
+ WT_STAT_CONN_DATA_INCR(session, cache_eviction_blocked_ooo_checkpoint_race_3);
+ WT_ASSERT(session, false);
+ WT_ERR(EBUSY);
+ }
+
/*
* The update doesn't have any further updates that need to be written to the history store,
* skip saving the update as saving the update will cause reconciliation to think there is work
@@ -573,10 +721,9 @@ __wt_rec_upd_select(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_INSERT *ins, v
supd_restore = F_ISSET(r, WT_REC_EVICT) &&
(has_newer_updates || F_ISSET(S2C(session), WT_CONN_IN_MEMORY) ||
page->type == WT_PAGE_COL_FIX);
- WT_ERR(__rec_update_save(session, r, ins, ripcip,
- upd_select->upd != NULL && upd_select->upd->type == WT_UPDATE_TOMBSTONE ? NULL :
- upd_select->upd,
- supd_restore, upd_memsize));
+
+ WT_ERR(__rec_update_save(session, r, ins, ripcip, onpage_upd, supd_restore, upd_memsize));
+
/*
* Mark the selected update (and potentially the tombstone preceding it) as being destined
* for the data store. Subsequent reconciliations should know that they can select this
diff --git a/src/third_party/wiredtiger/src/support/stat.c b/src/third_party/wiredtiger/src/support/stat.c
index 52db5e50094..d224baab653 100644
--- a/src/third_party/wiredtiger/src/support/stat.c
+++ b/src/third_party/wiredtiger/src/support/stat.c
@@ -52,6 +52,14 @@ static const char *const __stats_dsrc_desc[] = {
"cache: checkpoint blocked page eviction",
"cache: checkpoint of history store file blocked non-history store page eviction",
"cache: data source pages selected for eviction unable to be evicted",
+ "cache: eviction gave up due to detecting an out of order on disk value behind the last update "
+ "on the chain",
+ "cache: eviction gave up due to detecting an out of order tombstone ahead of the selected on "
+ "disk update",
+ "cache: eviction gave up due to detecting an out of order tombstone ahead of the selected on "
+ "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 walk passes of a file",
"cache: eviction walk target pages histogram - 0-9",
"cache: eviction walk target pages histogram - 10-31",
@@ -316,6 +324,10 @@ __wt_stat_dsrc_clear_single(WT_DSRC_STATS *stats)
stats->cache_eviction_checkpoint = 0;
stats->cache_eviction_blocked_checkpoint_hs = 0;
stats->cache_eviction_fail = 0;
+ stats->cache_eviction_blocked_ooo_checkpoint_race_1 = 0;
+ 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_walk_passes = 0;
stats->cache_eviction_target_page_lt10 = 0;
stats->cache_eviction_target_page_lt32 = 0;
@@ -560,6 +572,14 @@ __wt_stat_dsrc_aggregate_single(WT_DSRC_STATS *from, WT_DSRC_STATS *to)
to->cache_eviction_checkpoint += from->cache_eviction_checkpoint;
to->cache_eviction_blocked_checkpoint_hs += from->cache_eviction_blocked_checkpoint_hs;
to->cache_eviction_fail += from->cache_eviction_fail;
+ to->cache_eviction_blocked_ooo_checkpoint_race_1 +=
+ from->cache_eviction_blocked_ooo_checkpoint_race_1;
+ to->cache_eviction_blocked_ooo_checkpoint_race_2 +=
+ from->cache_eviction_blocked_ooo_checkpoint_race_2;
+ to->cache_eviction_blocked_ooo_checkpoint_race_3 +=
+ 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_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;
@@ -799,6 +819,14 @@ __wt_stat_dsrc_aggregate(WT_DSRC_STATS **from, WT_DSRC_STATS *to)
to->cache_eviction_blocked_checkpoint_hs +=
WT_STAT_READ(from, cache_eviction_blocked_checkpoint_hs);
to->cache_eviction_fail += WT_STAT_READ(from, cache_eviction_fail);
+ to->cache_eviction_blocked_ooo_checkpoint_race_1 +=
+ WT_STAT_READ(from, cache_eviction_blocked_ooo_checkpoint_race_1);
+ to->cache_eviction_blocked_ooo_checkpoint_race_2 +=
+ WT_STAT_READ(from, cache_eviction_blocked_ooo_checkpoint_race_2);
+ to->cache_eviction_blocked_ooo_checkpoint_race_3 +=
+ 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_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);
@@ -1031,6 +1059,14 @@ static const char *const __stats_connection_desc[] = {
"cache: eviction calls to get a page found queue empty after locking",
"cache: eviction currently operating in aggressive mode",
"cache: eviction empty score",
+ "cache: eviction gave up due to detecting an out of order on disk value behind the last update "
+ "on the chain",
+ "cache: eviction gave up due to detecting an out of order tombstone ahead of the selected on "
+ "disk update",
+ "cache: eviction gave up due to detecting an out of order tombstone ahead of the selected on "
+ "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 passes of a file",
"cache: eviction server candidate queue empty when topping up",
"cache: eviction server candidate queue not empty when topping up",
@@ -1569,6 +1605,10 @@ __wt_stat_connection_clear_single(WT_CONNECTION_STATS *stats)
stats->cache_eviction_get_ref_empty2 = 0;
/* not clearing cache_eviction_aggressive_set */
/* not clearing cache_eviction_empty_score */
+ stats->cache_eviction_blocked_ooo_checkpoint_race_1 = 0;
+ 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_walk_passes = 0;
stats->cache_eviction_queue_empty = 0;
stats->cache_eviction_queue_not_empty = 0;
@@ -2072,6 +2112,14 @@ __wt_stat_connection_aggregate(WT_CONNECTION_STATS **from, WT_CONNECTION_STATS *
to->cache_eviction_get_ref_empty2 += WT_STAT_READ(from, cache_eviction_get_ref_empty2);
to->cache_eviction_aggressive_set += WT_STAT_READ(from, cache_eviction_aggressive_set);
to->cache_eviction_empty_score += WT_STAT_READ(from, cache_eviction_empty_score);
+ to->cache_eviction_blocked_ooo_checkpoint_race_1 +=
+ WT_STAT_READ(from, cache_eviction_blocked_ooo_checkpoint_race_1);
+ to->cache_eviction_blocked_ooo_checkpoint_race_2 +=
+ WT_STAT_READ(from, cache_eviction_blocked_ooo_checkpoint_race_2);
+ to->cache_eviction_blocked_ooo_checkpoint_race_3 +=
+ 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_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);
diff --git a/src/third_party/wiredtiger/test/suite/test_hs24.py b/src/third_party/wiredtiger/test/suite/test_hs24.py
index 08d6f303bc5..47929688071 100644
--- a/src/third_party/wiredtiger/test/suite/test_hs24.py
+++ b/src/third_party/wiredtiger/test/suite/test_hs24.py
@@ -33,17 +33,24 @@ from wtscenario import make_scenarios
# test_hs24.py
# Test that out of order timestamp fix racing with checkpointing the history store doesn't create inconsistent checkpoint.
class test_hs24(wttest.WiredTigerTestCase):
- conn_config = 'cache_size=50MB,timing_stress_for_test=(history_store_checkpoint_delay)'
- session_config = 'isolation=snapshot'
- uri = 'table:test_hs24'
- numrows = 2000
-
key_format_values = [
('column', dict(key_format='r')),
('integer_row', dict(key_format='i')),
]
- scenarios = make_scenarios(key_format_values)
+ checkpoint_stress_scenarios = [
+ ('checkpoint_slow_stress', dict(checkpoint_stress='checkpoint_slow')),
+ ('history_store_checkpoint_delay_stress', dict(checkpoint_stress='history_store_checkpoint_delay')),
+ ]
+
+ scenarios = make_scenarios(key_format_values, checkpoint_stress_scenarios)
+
+ def conn_config(self):
+ return 'timing_stress_for_test=({})'.format(self.checkpoint_stress)
+
+ session_config = 'isolation=snapshot'
+ uri = 'table:test_hs24'
+ numrows = 2000
value1 = 'a' * 500
value2 = 'b' * 500
diff --git a/src/third_party/wiredtiger/test/suite/test_hs_evict_race01.py b/src/third_party/wiredtiger/test/suite/test_hs_evict_race01.py
new file mode 100644
index 00000000000..9c3cf62eb24
--- /dev/null
+++ b/src/third_party/wiredtiger/test/suite/test_hs_evict_race01.py
@@ -0,0 +1,109 @@
+#!/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.
+
+from time import sleep
+import wttest, threading, wiredtiger
+from helper import simulate_crash_restart
+from wtscenario import make_scenarios
+
+# Test a bug that can occur when an out of order update gets insert after a checkpoint begins
+# but before the checkpoint processes the btree. Evict that update before checkpoint but fail the
+# eviction due to out of order timestamps.
+#
+# Without the related change this test would fail as a result of an inconsistent checkpoint. Due to
+# a flag being set on an update incorrectly. Specific ordering is required to reproduce:
+# 1. Start a checkpoint, sleep the checkpoint after it takes it snapshot and before it
+# processes our btree.
+# 2. Insert the out of order update.
+# 3. Evict the out of order update.
+# 4. Complete the checkpoint.
+# 5. Simulate a crash.
+# 6. Read the value and see if it matches the expected value.
+class test_hs_evict_race01(wttest.WiredTigerTestCase):
+ conn_config = 'timing_stress_for_test=(checkpoint_slow)'
+ session_config = 'isolation=snapshot'
+ uri = 'table:hs_evict_race01'
+ numrows = 1
+
+ key_format_values = [
+ ('column', dict(key_format='r')),
+ ('integer_row', dict(key_format='i')),
+ ]
+ scenarios = make_scenarios(key_format_values)
+ value1 = 'aaaaa'
+ value2 = 'bbbbb'
+ value3 = 'ccccc'
+ value4 = 'ddddd'
+
+ def test_out_of_order_ts(self):
+ self.session.create(self.uri, 'key_format={},value_format=S'.format(self.key_format))
+ self.conn.set_timestamp('oldest_timestamp=' + self.timestamp_str(1))
+ cursor = self.session.open_cursor(self.uri)
+ # Insert a value at timestamp 4
+ self.session.begin_transaction()
+ cursor[1] = self.value1
+ self.session.commit_transaction('commit_timestamp=' + self.timestamp_str(4))
+ # Move the stable timestamp.
+ self.conn.set_timestamp('stable_timestamp=' + self.timestamp_str(4))
+ # Insert a value at timetamp 5
+ self.session.begin_transaction()
+ cursor[1] = self.value2
+ self.session.commit_transaction('commit_timestamp=' + self.timestamp_str(5))
+
+ cursor.close()
+
+ # Create a thread.
+ ooo_thread = threading.Thread(target=self.out_of_order_update_and_evict)
+
+ # Start the thread
+ ooo_thread.start()
+
+ # Call for a checkpoint, once finished we will be in the bad state.
+ self.session.checkpoint()
+ ooo_thread.join()
+ simulate_crash_restart(self, '.', "RESTART")
+ cursor = self.session.open_cursor(self.uri)
+ self.session.begin_transaction('read_timestamp=' + self.timestamp_str(4))
+ self.assertEquals(self.value1, cursor[1])
+ self.session.rollback_transaction()
+
+ def out_of_order_update_and_evict(self):
+ sleep(0.5)
+ session = self.setUpSessionOpen(self.conn)
+ cursor = session.open_cursor(self.uri)
+ session.begin_transaction()
+ cursor[1] = self.value4
+ session.commit_transaction('commit_timestamp=' + self.timestamp_str(4))
+ cursor.close()
+ sleep(1.5)
+ evict_cursor = session.open_cursor(self.uri, None, "debug=(release_evict)")
+ evict_cursor.set_key(1)
+ self.assertEquals(evict_cursor.search(), 0)
+ evict_cursor.reset()
+ evict_cursor.close()
+ session.close()