diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/third_party/wiredtiger/dist/stat_data.py | 2 | ||||
-rw-r--r-- | src/third_party/wiredtiger/import.data | 2 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/btree/row_modify.c | 2 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/conn/conn_cache.c | 4 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/include/cache.h | 7 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/include/cache_inline.h | 36 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/include/extern.h | 4 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/include/stat.h | 2 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/include/wiredtiger.in | 922 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/reconcile/rec_write.c | 7 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/support/stat.c | 6 | ||||
-rw-r--r-- | src/third_party/wiredtiger/test/suite/test_hs05.py | 151 |
12 files changed, 685 insertions, 460 deletions
diff --git a/src/third_party/wiredtiger/dist/stat_data.py b/src/third_party/wiredtiger/dist/stat_data.py index 8d2f2d69181..abe9893c586 100644 --- a/src/third_party/wiredtiger/dist/stat_data.py +++ b/src/third_party/wiredtiger/dist/stat_data.py @@ -292,6 +292,8 @@ conn_stats = [ CacheStat('cache_hazard_walks', 'hazard pointer check entries walked'), CacheStat('cache_hs_ondisk', 'history store table on-disk size', 'no_clear,no_scale,size'), CacheStat('cache_hs_ondisk_max', 'history store table max on-disk size', 'no_clear,no_scale,size'), + CacheStat('cache_hs_score', 'history store score', 'no_clear,no_scale'), + CacheStat('cache_lookaside_score', 'cache overflow score', 'no_clear,no_scale'), CacheStat('cache_overhead', 'percentage overhead', 'no_clear,no_scale'), CacheStat('cache_pages_dirty', 'tracked dirty pages in the cache', 'no_clear,no_scale'), CacheStat('cache_pages_inuse', 'pages currently held in the cache', 'no_clear,no_scale'), diff --git a/src/third_party/wiredtiger/import.data b/src/third_party/wiredtiger/import.data index e7e9b6cd5cb..917552a1c76 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-5.2", - "commit": "c0d84e36d3c21825ea5b4ac820394b776522d67b" + "commit": "56a33593e8e43853afb04ea4950ca30ea9d8d864" } diff --git a/src/third_party/wiredtiger/src/btree/row_modify.c b/src/third_party/wiredtiger/src/btree/row_modify.c index 2968ea3d227..779f5112c12 100644 --- a/src/third_party/wiredtiger/src/btree/row_modify.c +++ b/src/third_party/wiredtiger/src/btree/row_modify.c @@ -367,6 +367,8 @@ __wt_update_obsolete_check( } } + __wt_cache_update_hs_score(session, upd_seen, upd_unstable); + /* * We cannot discard this WT_UPDATE structure, we can only discard WT_UPDATE structures * subsequent to it, other threads of control will terminate their walk in this element. Save a diff --git a/src/third_party/wiredtiger/src/conn/conn_cache.c b/src/third_party/wiredtiger/src/conn/conn_cache.c index bf14fcf4914..4337042629c 100644 --- a/src/third_party/wiredtiger/src/conn/conn_cache.c +++ b/src/third_party/wiredtiger/src/conn/conn_cache.c @@ -326,6 +326,7 @@ __wt_cache_stats_update(WT_SESSION_IMPL *session) WT_STAT_SET(session, stats, cache_eviction_state, cache->flags); WT_STAT_SET(session, stats, cache_eviction_aggressive_set, cache->evict_aggressive_score); WT_STAT_SET(session, stats, cache_eviction_empty_score, cache->evict_empty_score); + WT_STAT_SET(session, stats, cache_hs_score, __wt_cache_hs_score(cache)); WT_STAT_SET(session, stats, cache_eviction_active_workers, conn->evict_threads.current_threads); WT_STAT_SET( @@ -339,6 +340,9 @@ __wt_cache_stats_update(WT_SESSION_IMPL *session) WT_STAT_SET(session, stats, cache_eviction_walks_active, cache->walk_session->nhazard); WT_STAT_SET(session, stats, rec_maximum_seconds, conn->rec_maximum_seconds); + + /* TODO: WT-5585 Remove lookaside score statistic after MongoDB switches to an alternative. */ + WT_STAT_SET(session, stats, cache_lookaside_score, 0); } /* diff --git a/src/third_party/wiredtiger/src/include/cache.h b/src/third_party/wiredtiger/src/include/cache.h index 03d5c68c9b7..2bdadc9522f 100644 --- a/src/third_party/wiredtiger/src/include/cache.h +++ b/src/third_party/wiredtiger/src/include/cache.h @@ -187,6 +187,13 @@ struct __wt_cache { */ uint32_t evict_empty_score; + /* + * Score of how much pressure storing historical versions is having on eviction. This score + * varies between 0, if reconciliation always sees updates that are globally visible and hence + * can be discarded, to 100 if no updates are globally visible. + */ + int32_t evict_hs_score; + uint32_t hs_fileid; /* History store table file ID */ /* diff --git a/src/third_party/wiredtiger/src/include/cache_inline.h b/src/third_party/wiredtiger/src/include/cache_inline.h index 150e768dabd..866c19d6172 100644 --- a/src/third_party/wiredtiger/src/include/cache_inline.h +++ b/src/third_party/wiredtiger/src/include/cache_inline.h @@ -207,6 +207,42 @@ __wt_cache_bytes_other(WT_CACHE *cache) } /* + * __wt_cache_hs_score -- + * Get the current history store score (between 0 and 100). + */ +static inline uint32_t +__wt_cache_hs_score(WT_CACHE *cache) +{ + int32_t global_score; + + global_score = cache->evict_hs_score; + return ((uint32_t)WT_MIN(WT_MAX(global_score, 0), 100)); +} + +/* + * __wt_cache_update_hs_score -- + * Update the history store score based how many unstable updates are seen. + */ +static inline void +__wt_cache_update_hs_score(WT_SESSION_IMPL *session, u_int updates_seen, u_int updates_unstable) +{ + WT_CACHE *cache; + int32_t global_score, score; + + if (updates_seen == 0) + return; + + cache = S2C(session)->cache; + score = (int32_t)((100 * updates_unstable) / updates_seen); + global_score = cache->evict_hs_score; + + if (score > global_score && global_score < 100) + (void)__wt_atomic_addi32(&cache->evict_hs_score, 1); + else if (score < global_score && global_score > 0) + (void)__wt_atomic_subi32(&cache->evict_hs_score, 1); +} + +/* * __wt_session_can_wait -- * Return if a session available for a potentially slow operation. */ diff --git a/src/third_party/wiredtiger/src/include/extern.h b/src/third_party/wiredtiger/src/include/extern.h index 054f4326933..3842d28f621 100644 --- a/src/third_party/wiredtiger/src/include/extern.h +++ b/src/third_party/wiredtiger/src/include/extern.h @@ -2232,6 +2232,8 @@ static inline u_int __wt_cell_type_raw(WT_CELL *cell) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result)); static inline u_int __wt_skip_choose_depth(WT_SESSION_IMPL *session) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result)); +static inline uint32_t __wt_cache_hs_score(WT_CACHE *cache) + WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result)); static inline uint64_t __wt_btree_bytes_evictable(WT_SESSION_IMPL *session) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result)); static inline uint64_t __wt_btree_bytes_inuse(WT_SESSION_IMPL *session) @@ -2292,6 +2294,8 @@ static inline void __wt_cache_page_inmem_incr(WT_SESSION_IMPL *session, WT_PAGE static inline void __wt_cache_read_gen_bump(WT_SESSION_IMPL *session, WT_PAGE *page); static inline void __wt_cache_read_gen_incr(WT_SESSION_IMPL *session); static inline void __wt_cache_read_gen_new(WT_SESSION_IMPL *session, WT_PAGE *page); +static inline void __wt_cache_update_hs_score( + WT_SESSION_IMPL *session, u_int updates_seen, u_int updates_unstable); static inline void __wt_cell_type_reset( WT_SESSION_IMPL *session, WT_CELL *cell, u_int old_type, u_int new_type); static inline void __wt_cell_unpack_addr(WT_SESSION_IMPL *session, const WT_PAGE_HEADER *dsk, diff --git a/src/third_party/wiredtiger/src/include/stat.h b/src/third_party/wiredtiger/src/include/stat.h index 17e550f6195..069cef7806f 100644 --- a/src/third_party/wiredtiger/src/include/stat.h +++ b/src/third_party/wiredtiger/src/include/stat.h @@ -389,6 +389,7 @@ struct __wt_connection_stats { int64_t cache_bytes_other; int64_t cache_bytes_read; int64_t cache_bytes_write; + int64_t cache_lookaside_score; int64_t cache_eviction_checkpoint; int64_t cache_eviction_blocked_checkpoint_hs; int64_t cache_eviction_get_ref; @@ -450,6 +451,7 @@ struct __wt_connection_stats { int64_t cache_hazard_checks; int64_t cache_hazard_walks; int64_t cache_hazard_max; + int64_t cache_hs_score; int64_t cache_hs_insert; int64_t cache_hs_insert_restart; int64_t cache_hs_ondisk_max; diff --git a/src/third_party/wiredtiger/src/include/wiredtiger.in b/src/third_party/wiredtiger/src/include/wiredtiger.in index 3b6e22a1532..b8ac1cbbfdc 100644 --- a/src/third_party/wiredtiger/src/include/wiredtiger.in +++ b/src/third_party/wiredtiger/src/include/wiredtiger.in @@ -5248,1128 +5248,1132 @@ extern int wiredtiger_extension_terminate(WT_CONNECTION *connection); #define WT_STAT_CONN_CACHE_BYTES_READ 1055 /*! cache: bytes written from cache */ #define WT_STAT_CONN_CACHE_BYTES_WRITE 1056 +/*! cache: cache overflow score */ +#define WT_STAT_CONN_CACHE_LOOKASIDE_SCORE 1057 /*! cache: checkpoint blocked page eviction */ -#define WT_STAT_CONN_CACHE_EVICTION_CHECKPOINT 1057 +#define WT_STAT_CONN_CACHE_EVICTION_CHECKPOINT 1058 /*! * cache: checkpoint of history store file blocked non-history store page * eviction */ -#define WT_STAT_CONN_CACHE_EVICTION_BLOCKED_CHECKPOINT_HS 1058 +#define WT_STAT_CONN_CACHE_EVICTION_BLOCKED_CHECKPOINT_HS 1059 /*! cache: eviction calls to get a page */ -#define WT_STAT_CONN_CACHE_EVICTION_GET_REF 1059 +#define WT_STAT_CONN_CACHE_EVICTION_GET_REF 1060 /*! cache: eviction calls to get a page found queue empty */ -#define WT_STAT_CONN_CACHE_EVICTION_GET_REF_EMPTY 1060 +#define WT_STAT_CONN_CACHE_EVICTION_GET_REF_EMPTY 1061 /*! cache: eviction calls to get a page found queue empty after locking */ -#define WT_STAT_CONN_CACHE_EVICTION_GET_REF_EMPTY2 1061 +#define WT_STAT_CONN_CACHE_EVICTION_GET_REF_EMPTY2 1062 /*! cache: eviction currently operating in aggressive mode */ -#define WT_STAT_CONN_CACHE_EVICTION_AGGRESSIVE_SET 1062 +#define WT_STAT_CONN_CACHE_EVICTION_AGGRESSIVE_SET 1063 /*! cache: eviction empty score */ -#define WT_STAT_CONN_CACHE_EVICTION_EMPTY_SCORE 1063 +#define WT_STAT_CONN_CACHE_EVICTION_EMPTY_SCORE 1064 /*! * 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 1064 +#define WT_STAT_CONN_CACHE_EVICTION_BLOCKED_OOO_CHECKPOINT_RACE_1 1065 /*! * 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 1065 +#define WT_STAT_CONN_CACHE_EVICTION_BLOCKED_OOO_CHECKPOINT_RACE_2 1066 /*! * 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 1066 +#define WT_STAT_CONN_CACHE_EVICTION_BLOCKED_OOO_CHECKPOINT_RACE_3 1067 /*! * 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 1067 +#define WT_STAT_CONN_CACHE_EVICTION_BLOCKED_OOO_CHECKPOINT_RACE_4 1068 /*! cache: eviction passes of a file */ -#define WT_STAT_CONN_CACHE_EVICTION_WALK_PASSES 1068 +#define WT_STAT_CONN_CACHE_EVICTION_WALK_PASSES 1069 /*! cache: eviction server candidate queue empty when topping up */ -#define WT_STAT_CONN_CACHE_EVICTION_QUEUE_EMPTY 1069 +#define WT_STAT_CONN_CACHE_EVICTION_QUEUE_EMPTY 1070 /*! cache: eviction server candidate queue not empty when topping up */ -#define WT_STAT_CONN_CACHE_EVICTION_QUEUE_NOT_EMPTY 1070 +#define WT_STAT_CONN_CACHE_EVICTION_QUEUE_NOT_EMPTY 1071 /*! cache: eviction server evicting pages */ -#define WT_STAT_CONN_CACHE_EVICTION_SERVER_EVICTING 1071 +#define WT_STAT_CONN_CACHE_EVICTION_SERVER_EVICTING 1072 /*! * cache: eviction server slept, because we did not make progress with * eviction */ -#define WT_STAT_CONN_CACHE_EVICTION_SERVER_SLEPT 1072 +#define WT_STAT_CONN_CACHE_EVICTION_SERVER_SLEPT 1073 /*! cache: eviction server unable to reach eviction goal */ -#define WT_STAT_CONN_CACHE_EVICTION_SLOW 1073 +#define WT_STAT_CONN_CACHE_EVICTION_SLOW 1074 /*! cache: eviction server waiting for a leaf page */ -#define WT_STAT_CONN_CACHE_EVICTION_WALK_LEAF_NOTFOUND 1074 +#define WT_STAT_CONN_CACHE_EVICTION_WALK_LEAF_NOTFOUND 1075 /*! cache: eviction state */ -#define WT_STAT_CONN_CACHE_EVICTION_STATE 1075 +#define WT_STAT_CONN_CACHE_EVICTION_STATE 1076 /*! * cache: eviction walk most recent sleeps for checkpoint handle * gathering */ -#define WT_STAT_CONN_CACHE_EVICTION_WALK_SLEEPS 1076 +#define WT_STAT_CONN_CACHE_EVICTION_WALK_SLEEPS 1077 /*! cache: eviction walk target pages histogram - 0-9 */ -#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT10 1077 +#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT10 1078 /*! cache: eviction walk target pages histogram - 10-31 */ -#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT32 1078 +#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT32 1079 /*! cache: eviction walk target pages histogram - 128 and higher */ -#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_GE128 1079 +#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_GE128 1080 /*! cache: eviction walk target pages histogram - 32-63 */ -#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT64 1080 +#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT64 1081 /*! cache: eviction walk target pages histogram - 64-128 */ -#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT128 1081 +#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_LT128 1082 /*! * cache: eviction walk target pages reduced due to history store cache * pressure */ -#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_REDUCED 1082 +#define WT_STAT_CONN_CACHE_EVICTION_TARGET_PAGE_REDUCED 1083 /*! cache: eviction walk target strategy both clean and dirty pages */ -#define WT_STAT_CONN_CACHE_EVICTION_TARGET_STRATEGY_BOTH_CLEAN_AND_DIRTY 1083 +#define WT_STAT_CONN_CACHE_EVICTION_TARGET_STRATEGY_BOTH_CLEAN_AND_DIRTY 1084 /*! cache: eviction walk target strategy only clean pages */ -#define WT_STAT_CONN_CACHE_EVICTION_TARGET_STRATEGY_CLEAN 1084 +#define WT_STAT_CONN_CACHE_EVICTION_TARGET_STRATEGY_CLEAN 1085 /*! cache: eviction walk target strategy only dirty pages */ -#define WT_STAT_CONN_CACHE_EVICTION_TARGET_STRATEGY_DIRTY 1085 +#define WT_STAT_CONN_CACHE_EVICTION_TARGET_STRATEGY_DIRTY 1086 /*! cache: eviction walks abandoned */ -#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ABANDONED 1086 +#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ABANDONED 1087 /*! cache: eviction walks gave up because they restarted their walk twice */ -#define WT_STAT_CONN_CACHE_EVICTION_WALKS_STOPPED 1087 +#define WT_STAT_CONN_CACHE_EVICTION_WALKS_STOPPED 1088 /*! * cache: eviction walks gave up because they saw too many pages and * found no candidates */ -#define WT_STAT_CONN_CACHE_EVICTION_WALKS_GAVE_UP_NO_TARGETS 1088 +#define WT_STAT_CONN_CACHE_EVICTION_WALKS_GAVE_UP_NO_TARGETS 1089 /*! * cache: eviction walks gave up because they saw too many pages and * found too few candidates */ -#define WT_STAT_CONN_CACHE_EVICTION_WALKS_GAVE_UP_RATIO 1089 +#define WT_STAT_CONN_CACHE_EVICTION_WALKS_GAVE_UP_RATIO 1090 /*! cache: eviction walks reached end of tree */ -#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ENDED 1090 +#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ENDED 1091 /*! cache: eviction walks restarted */ -#define WT_STAT_CONN_CACHE_EVICTION_WALK_RESTART 1091 +#define WT_STAT_CONN_CACHE_EVICTION_WALK_RESTART 1092 /*! cache: eviction walks started from root of tree */ -#define WT_STAT_CONN_CACHE_EVICTION_WALK_FROM_ROOT 1092 +#define WT_STAT_CONN_CACHE_EVICTION_WALK_FROM_ROOT 1093 /*! cache: eviction walks started from saved location in tree */ -#define WT_STAT_CONN_CACHE_EVICTION_WALK_SAVED_POS 1093 +#define WT_STAT_CONN_CACHE_EVICTION_WALK_SAVED_POS 1094 /*! cache: eviction worker thread active */ -#define WT_STAT_CONN_CACHE_EVICTION_ACTIVE_WORKERS 1094 +#define WT_STAT_CONN_CACHE_EVICTION_ACTIVE_WORKERS 1095 /*! cache: eviction worker thread created */ -#define WT_STAT_CONN_CACHE_EVICTION_WORKER_CREATED 1095 +#define WT_STAT_CONN_CACHE_EVICTION_WORKER_CREATED 1096 /*! cache: eviction worker thread evicting pages */ -#define WT_STAT_CONN_CACHE_EVICTION_WORKER_EVICTING 1096 +#define WT_STAT_CONN_CACHE_EVICTION_WORKER_EVICTING 1097 /*! cache: eviction worker thread removed */ -#define WT_STAT_CONN_CACHE_EVICTION_WORKER_REMOVED 1097 +#define WT_STAT_CONN_CACHE_EVICTION_WORKER_REMOVED 1098 /*! cache: eviction worker thread stable number */ -#define WT_STAT_CONN_CACHE_EVICTION_STABLE_STATE_WORKERS 1098 +#define WT_STAT_CONN_CACHE_EVICTION_STABLE_STATE_WORKERS 1099 /*! cache: files with active eviction walks */ -#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ACTIVE 1099 +#define WT_STAT_CONN_CACHE_EVICTION_WALKS_ACTIVE 1100 /*! cache: files with new eviction walks started */ -#define WT_STAT_CONN_CACHE_EVICTION_WALKS_STARTED 1100 +#define WT_STAT_CONN_CACHE_EVICTION_WALKS_STARTED 1101 /*! cache: force re-tuning of eviction workers once in a while */ -#define WT_STAT_CONN_CACHE_EVICTION_FORCE_RETUNE 1101 +#define WT_STAT_CONN_CACHE_EVICTION_FORCE_RETUNE 1102 /*! * cache: forced eviction - history store pages failed to evict while * session has history store cursor open */ -#define WT_STAT_CONN_CACHE_EVICTION_FORCE_HS_FAIL 1102 +#define WT_STAT_CONN_CACHE_EVICTION_FORCE_HS_FAIL 1103 /*! * cache: forced eviction - history store pages selected while session * has history store cursor open */ -#define WT_STAT_CONN_CACHE_EVICTION_FORCE_HS 1103 +#define WT_STAT_CONN_CACHE_EVICTION_FORCE_HS 1104 /*! * cache: forced eviction - history store pages successfully evicted * while session has history store cursor open */ -#define WT_STAT_CONN_CACHE_EVICTION_FORCE_HS_SUCCESS 1104 +#define WT_STAT_CONN_CACHE_EVICTION_FORCE_HS_SUCCESS 1105 /*! cache: forced eviction - pages evicted that were clean count */ -#define WT_STAT_CONN_CACHE_EVICTION_FORCE_CLEAN 1105 +#define WT_STAT_CONN_CACHE_EVICTION_FORCE_CLEAN 1106 /*! cache: forced eviction - pages evicted that were clean time (usecs) */ -#define WT_STAT_CONN_CACHE_EVICTION_FORCE_CLEAN_TIME 1106 +#define WT_STAT_CONN_CACHE_EVICTION_FORCE_CLEAN_TIME 1107 /*! cache: forced eviction - pages evicted that were dirty count */ -#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DIRTY 1107 +#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DIRTY 1108 /*! cache: forced eviction - pages evicted that were dirty time (usecs) */ -#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DIRTY_TIME 1108 +#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DIRTY_TIME 1109 /*! * cache: forced eviction - pages selected because of a large number of * updates to a single item */ -#define WT_STAT_CONN_CACHE_EVICTION_FORCE_LONG_UPDATE_LIST 1109 +#define WT_STAT_CONN_CACHE_EVICTION_FORCE_LONG_UPDATE_LIST 1110 /*! * cache: forced eviction - pages selected because of too many deleted * items count */ -#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DELETE 1110 +#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DELETE 1111 /*! cache: forced eviction - pages selected count */ -#define WT_STAT_CONN_CACHE_EVICTION_FORCE 1111 +#define WT_STAT_CONN_CACHE_EVICTION_FORCE 1112 /*! cache: forced eviction - pages selected unable to be evicted count */ -#define WT_STAT_CONN_CACHE_EVICTION_FORCE_FAIL 1112 +#define WT_STAT_CONN_CACHE_EVICTION_FORCE_FAIL 1113 /*! cache: forced eviction - pages selected unable to be evicted time */ -#define WT_STAT_CONN_CACHE_EVICTION_FORCE_FAIL_TIME 1113 +#define WT_STAT_CONN_CACHE_EVICTION_FORCE_FAIL_TIME 1114 /*! cache: hazard pointer blocked page eviction */ -#define WT_STAT_CONN_CACHE_EVICTION_HAZARD 1114 +#define WT_STAT_CONN_CACHE_EVICTION_HAZARD 1115 /*! cache: hazard pointer check calls */ -#define WT_STAT_CONN_CACHE_HAZARD_CHECKS 1115 +#define WT_STAT_CONN_CACHE_HAZARD_CHECKS 1116 /*! cache: hazard pointer check entries walked */ -#define WT_STAT_CONN_CACHE_HAZARD_WALKS 1116 +#define WT_STAT_CONN_CACHE_HAZARD_WALKS 1117 /*! cache: hazard pointer maximum array length */ -#define WT_STAT_CONN_CACHE_HAZARD_MAX 1117 +#define WT_STAT_CONN_CACHE_HAZARD_MAX 1118 +/*! cache: history store score */ +#define WT_STAT_CONN_CACHE_HS_SCORE 1119 /*! cache: history store table insert calls */ -#define WT_STAT_CONN_CACHE_HS_INSERT 1118 +#define WT_STAT_CONN_CACHE_HS_INSERT 1120 /*! cache: history store table insert calls that returned restart */ -#define WT_STAT_CONN_CACHE_HS_INSERT_RESTART 1119 +#define WT_STAT_CONN_CACHE_HS_INSERT_RESTART 1121 /*! cache: history store table max on-disk size */ -#define WT_STAT_CONN_CACHE_HS_ONDISK_MAX 1120 +#define WT_STAT_CONN_CACHE_HS_ONDISK_MAX 1122 /*! cache: history store table on-disk size */ -#define WT_STAT_CONN_CACHE_HS_ONDISK 1121 +#define WT_STAT_CONN_CACHE_HS_ONDISK 1123 /*! * cache: history store table out-of-order resolved updates that lose * their durable timestamp */ -#define WT_STAT_CONN_CACHE_HS_ORDER_LOSE_DURABLE_TIMESTAMP 1122 +#define WT_STAT_CONN_CACHE_HS_ORDER_LOSE_DURABLE_TIMESTAMP 1124 /*! * cache: history store table out-of-order updates that were fixed up by * reinserting with the fixed timestamp */ -#define WT_STAT_CONN_CACHE_HS_ORDER_REINSERT 1123 +#define WT_STAT_CONN_CACHE_HS_ORDER_REINSERT 1125 /*! cache: history store table reads */ -#define WT_STAT_CONN_CACHE_HS_READ 1124 +#define WT_STAT_CONN_CACHE_HS_READ 1126 /*! cache: history store table reads missed */ -#define WT_STAT_CONN_CACHE_HS_READ_MISS 1125 +#define WT_STAT_CONN_CACHE_HS_READ_MISS 1127 /*! cache: history store table reads requiring squashed modifies */ -#define WT_STAT_CONN_CACHE_HS_READ_SQUASH 1126 +#define WT_STAT_CONN_CACHE_HS_READ_SQUASH 1128 /*! * cache: history store table truncation by rollback to stable to remove * an unstable update */ -#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_RTS_UNSTABLE 1127 +#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_RTS_UNSTABLE 1129 /*! * cache: history store table truncation by rollback to stable to remove * an update */ -#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_RTS 1128 +#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_RTS 1130 /*! cache: history store table truncation to remove an update */ -#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE 1129 +#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE 1131 /*! * cache: history store table truncation to remove range of updates due * to key being removed from the data page during reconciliation */ -#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_ONPAGE_REMOVAL 1130 +#define WT_STAT_CONN_CACHE_HS_KEY_TRUNCATE_ONPAGE_REMOVAL 1132 /*! * cache: history store table truncation to remove range of updates due * to out-of-order timestamp update on data page */ -#define WT_STAT_CONN_CACHE_HS_ORDER_REMOVE 1131 +#define WT_STAT_CONN_CACHE_HS_ORDER_REMOVE 1133 /*! cache: history store table writes requiring squashed modifies */ -#define WT_STAT_CONN_CACHE_HS_WRITE_SQUASH 1132 +#define WT_STAT_CONN_CACHE_HS_WRITE_SQUASH 1134 /*! cache: in-memory page passed criteria to be split */ -#define WT_STAT_CONN_CACHE_INMEM_SPLITTABLE 1133 +#define WT_STAT_CONN_CACHE_INMEM_SPLITTABLE 1135 /*! cache: in-memory page splits */ -#define WT_STAT_CONN_CACHE_INMEM_SPLIT 1134 +#define WT_STAT_CONN_CACHE_INMEM_SPLIT 1136 /*! cache: internal pages evicted */ -#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL 1135 +#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL 1137 /*! cache: internal pages queued for eviction */ -#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL_PAGES_QUEUED 1136 +#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL_PAGES_QUEUED 1138 /*! cache: internal pages seen by eviction walk */ -#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL_PAGES_SEEN 1137 +#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL_PAGES_SEEN 1139 /*! cache: internal pages seen by eviction walk that are already queued */ -#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL_PAGES_ALREADY_QUEUED 1138 +#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL_PAGES_ALREADY_QUEUED 1140 /*! cache: internal pages split during eviction */ -#define WT_STAT_CONN_CACHE_EVICTION_SPLIT_INTERNAL 1139 +#define WT_STAT_CONN_CACHE_EVICTION_SPLIT_INTERNAL 1141 /*! cache: leaf pages split during eviction */ -#define WT_STAT_CONN_CACHE_EVICTION_SPLIT_LEAF 1140 +#define WT_STAT_CONN_CACHE_EVICTION_SPLIT_LEAF 1142 /*! cache: maximum bytes configured */ -#define WT_STAT_CONN_CACHE_BYTES_MAX 1141 +#define WT_STAT_CONN_CACHE_BYTES_MAX 1143 /*! cache: maximum page size at eviction */ -#define WT_STAT_CONN_CACHE_EVICTION_MAXIMUM_PAGE_SIZE 1142 +#define WT_STAT_CONN_CACHE_EVICTION_MAXIMUM_PAGE_SIZE 1144 /*! cache: modified pages evicted */ -#define WT_STAT_CONN_CACHE_EVICTION_DIRTY 1143 +#define WT_STAT_CONN_CACHE_EVICTION_DIRTY 1145 /*! cache: modified pages evicted by application threads */ -#define WT_STAT_CONN_CACHE_EVICTION_APP_DIRTY 1144 +#define WT_STAT_CONN_CACHE_EVICTION_APP_DIRTY 1146 /*! cache: operations timed out waiting for space in cache */ -#define WT_STAT_CONN_CACHE_TIMED_OUT_OPS 1145 +#define WT_STAT_CONN_CACHE_TIMED_OUT_OPS 1147 /*! cache: overflow pages read into cache */ -#define WT_STAT_CONN_CACHE_READ_OVERFLOW 1146 +#define WT_STAT_CONN_CACHE_READ_OVERFLOW 1148 /*! cache: page split during eviction deepened the tree */ -#define WT_STAT_CONN_CACHE_EVICTION_DEEPEN 1147 +#define WT_STAT_CONN_CACHE_EVICTION_DEEPEN 1149 /*! cache: page written requiring history store records */ -#define WT_STAT_CONN_CACHE_WRITE_HS 1148 +#define WT_STAT_CONN_CACHE_WRITE_HS 1150 /*! cache: pages currently held in the cache */ -#define WT_STAT_CONN_CACHE_PAGES_INUSE 1149 +#define WT_STAT_CONN_CACHE_PAGES_INUSE 1151 /*! cache: pages evicted by application threads */ -#define WT_STAT_CONN_CACHE_EVICTION_APP 1150 +#define WT_STAT_CONN_CACHE_EVICTION_APP 1152 /*! cache: pages evicted in parallel with checkpoint */ -#define WT_STAT_CONN_CACHE_EVICTION_PAGES_IN_PARALLEL_WITH_CHECKPOINT 1151 +#define WT_STAT_CONN_CACHE_EVICTION_PAGES_IN_PARALLEL_WITH_CHECKPOINT 1153 /*! cache: pages queued for eviction */ -#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED 1152 +#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED 1154 /*! cache: pages queued for eviction post lru sorting */ -#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_POST_LRU 1153 +#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_POST_LRU 1155 /*! cache: pages queued for urgent eviction */ -#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_URGENT 1154 +#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_URGENT 1156 /*! cache: pages queued for urgent eviction during walk */ -#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_OLDEST 1155 +#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_OLDEST 1157 /*! * cache: pages queued for urgent eviction from history store due to high * dirty content */ -#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_URGENT_HS_DIRTY 1156 +#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_URGENT_HS_DIRTY 1158 /*! cache: pages read into cache */ -#define WT_STAT_CONN_CACHE_READ 1157 +#define WT_STAT_CONN_CACHE_READ 1159 /*! cache: pages read into cache after truncate */ -#define WT_STAT_CONN_CACHE_READ_DELETED 1158 +#define WT_STAT_CONN_CACHE_READ_DELETED 1160 /*! cache: pages read into cache after truncate in prepare state */ -#define WT_STAT_CONN_CACHE_READ_DELETED_PREPARED 1159 +#define WT_STAT_CONN_CACHE_READ_DELETED_PREPARED 1161 /*! cache: pages requested from the cache */ -#define WT_STAT_CONN_CACHE_PAGES_REQUESTED 1160 +#define WT_STAT_CONN_CACHE_PAGES_REQUESTED 1162 /*! cache: pages seen by eviction walk */ -#define WT_STAT_CONN_CACHE_EVICTION_PAGES_SEEN 1161 +#define WT_STAT_CONN_CACHE_EVICTION_PAGES_SEEN 1163 /*! cache: pages seen by eviction walk that are already queued */ -#define WT_STAT_CONN_CACHE_EVICTION_PAGES_ALREADY_QUEUED 1162 +#define WT_STAT_CONN_CACHE_EVICTION_PAGES_ALREADY_QUEUED 1164 /*! cache: pages selected for eviction unable to be evicted */ -#define WT_STAT_CONN_CACHE_EVICTION_FAIL 1163 +#define WT_STAT_CONN_CACHE_EVICTION_FAIL 1165 /*! * cache: pages selected for eviction unable to be evicted because of * active children on an internal page */ -#define WT_STAT_CONN_CACHE_EVICTION_FAIL_ACTIVE_CHILDREN_ON_AN_INTERNAL_PAGE 1164 +#define WT_STAT_CONN_CACHE_EVICTION_FAIL_ACTIVE_CHILDREN_ON_AN_INTERNAL_PAGE 1166 /*! * cache: pages selected for eviction unable to be evicted because of * failure in reconciliation */ -#define WT_STAT_CONN_CACHE_EVICTION_FAIL_IN_RECONCILIATION 1165 +#define WT_STAT_CONN_CACHE_EVICTION_FAIL_IN_RECONCILIATION 1167 /*! * cache: pages selected for eviction unable to be evicted because of * race between checkpoint and out of order timestamps handling */ -#define WT_STAT_CONN_CACHE_EVICTION_FAIL_CHECKPOINT_OUT_OF_ORDER_TS 1166 +#define WT_STAT_CONN_CACHE_EVICTION_FAIL_CHECKPOINT_OUT_OF_ORDER_TS 1168 /*! cache: pages walked for eviction */ -#define WT_STAT_CONN_CACHE_EVICTION_WALK 1167 +#define WT_STAT_CONN_CACHE_EVICTION_WALK 1169 /*! cache: pages written from cache */ -#define WT_STAT_CONN_CACHE_WRITE 1168 +#define WT_STAT_CONN_CACHE_WRITE 1170 /*! cache: pages written requiring in-memory restoration */ -#define WT_STAT_CONN_CACHE_WRITE_RESTORE 1169 +#define WT_STAT_CONN_CACHE_WRITE_RESTORE 1171 /*! cache: percentage overhead */ -#define WT_STAT_CONN_CACHE_OVERHEAD 1170 +#define WT_STAT_CONN_CACHE_OVERHEAD 1172 /*! cache: the number of times full update inserted to history store */ -#define WT_STAT_CONN_CACHE_HS_INSERT_FULL_UPDATE 1171 +#define WT_STAT_CONN_CACHE_HS_INSERT_FULL_UPDATE 1173 /*! cache: the number of times reverse modify inserted to history store */ -#define WT_STAT_CONN_CACHE_HS_INSERT_REVERSE_MODIFY 1172 +#define WT_STAT_CONN_CACHE_HS_INSERT_REVERSE_MODIFY 1174 /*! cache: tracked bytes belonging to internal pages in the cache */ -#define WT_STAT_CONN_CACHE_BYTES_INTERNAL 1173 +#define WT_STAT_CONN_CACHE_BYTES_INTERNAL 1175 /*! cache: tracked bytes belonging to leaf pages in the cache */ -#define WT_STAT_CONN_CACHE_BYTES_LEAF 1174 +#define WT_STAT_CONN_CACHE_BYTES_LEAF 1176 /*! cache: tracked dirty bytes in the cache */ -#define WT_STAT_CONN_CACHE_BYTES_DIRTY 1175 +#define WT_STAT_CONN_CACHE_BYTES_DIRTY 1177 /*! cache: tracked dirty pages in the cache */ -#define WT_STAT_CONN_CACHE_PAGES_DIRTY 1176 +#define WT_STAT_CONN_CACHE_PAGES_DIRTY 1178 /*! cache: unmodified pages evicted */ -#define WT_STAT_CONN_CACHE_EVICTION_CLEAN 1177 +#define WT_STAT_CONN_CACHE_EVICTION_CLEAN 1179 /*! capacity: background fsync file handles considered */ -#define WT_STAT_CONN_FSYNC_ALL_FH_TOTAL 1178 +#define WT_STAT_CONN_FSYNC_ALL_FH_TOTAL 1180 /*! capacity: background fsync file handles synced */ -#define WT_STAT_CONN_FSYNC_ALL_FH 1179 +#define WT_STAT_CONN_FSYNC_ALL_FH 1181 /*! capacity: background fsync time (msecs) */ -#define WT_STAT_CONN_FSYNC_ALL_TIME 1180 +#define WT_STAT_CONN_FSYNC_ALL_TIME 1182 /*! capacity: bytes read */ -#define WT_STAT_CONN_CAPACITY_BYTES_READ 1181 +#define WT_STAT_CONN_CAPACITY_BYTES_READ 1183 /*! capacity: bytes written for checkpoint */ -#define WT_STAT_CONN_CAPACITY_BYTES_CKPT 1182 +#define WT_STAT_CONN_CAPACITY_BYTES_CKPT 1184 /*! capacity: bytes written for eviction */ -#define WT_STAT_CONN_CAPACITY_BYTES_EVICT 1183 +#define WT_STAT_CONN_CAPACITY_BYTES_EVICT 1185 /*! capacity: bytes written for log */ -#define WT_STAT_CONN_CAPACITY_BYTES_LOG 1184 +#define WT_STAT_CONN_CAPACITY_BYTES_LOG 1186 /*! capacity: bytes written total */ -#define WT_STAT_CONN_CAPACITY_BYTES_WRITTEN 1185 +#define WT_STAT_CONN_CAPACITY_BYTES_WRITTEN 1187 /*! capacity: threshold to call fsync */ -#define WT_STAT_CONN_CAPACITY_THRESHOLD 1186 +#define WT_STAT_CONN_CAPACITY_THRESHOLD 1188 /*! capacity: time waiting due to total capacity (usecs) */ -#define WT_STAT_CONN_CAPACITY_TIME_TOTAL 1187 +#define WT_STAT_CONN_CAPACITY_TIME_TOTAL 1189 /*! capacity: time waiting during checkpoint (usecs) */ -#define WT_STAT_CONN_CAPACITY_TIME_CKPT 1188 +#define WT_STAT_CONN_CAPACITY_TIME_CKPT 1190 /*! capacity: time waiting during eviction (usecs) */ -#define WT_STAT_CONN_CAPACITY_TIME_EVICT 1189 +#define WT_STAT_CONN_CAPACITY_TIME_EVICT 1191 /*! capacity: time waiting during logging (usecs) */ -#define WT_STAT_CONN_CAPACITY_TIME_LOG 1190 +#define WT_STAT_CONN_CAPACITY_TIME_LOG 1192 /*! capacity: time waiting during read (usecs) */ -#define WT_STAT_CONN_CAPACITY_TIME_READ 1191 +#define WT_STAT_CONN_CAPACITY_TIME_READ 1193 /*! checkpoint-cleanup: pages added for eviction */ -#define WT_STAT_CONN_CC_PAGES_EVICT 1192 +#define WT_STAT_CONN_CC_PAGES_EVICT 1194 /*! checkpoint-cleanup: pages removed */ -#define WT_STAT_CONN_CC_PAGES_REMOVED 1193 +#define WT_STAT_CONN_CC_PAGES_REMOVED 1195 /*! checkpoint-cleanup: pages skipped during tree walk */ -#define WT_STAT_CONN_CC_PAGES_WALK_SKIPPED 1194 +#define WT_STAT_CONN_CC_PAGES_WALK_SKIPPED 1196 /*! checkpoint-cleanup: pages visited */ -#define WT_STAT_CONN_CC_PAGES_VISITED 1195 +#define WT_STAT_CONN_CC_PAGES_VISITED 1197 /*! connection: auto adjusting condition resets */ -#define WT_STAT_CONN_COND_AUTO_WAIT_RESET 1196 +#define WT_STAT_CONN_COND_AUTO_WAIT_RESET 1198 /*! connection: auto adjusting condition wait calls */ -#define WT_STAT_CONN_COND_AUTO_WAIT 1197 +#define WT_STAT_CONN_COND_AUTO_WAIT 1199 /*! * connection: auto adjusting condition wait raced to update timeout and * skipped updating */ -#define WT_STAT_CONN_COND_AUTO_WAIT_SKIPPED 1198 +#define WT_STAT_CONN_COND_AUTO_WAIT_SKIPPED 1200 /*! connection: detected system time went backwards */ -#define WT_STAT_CONN_TIME_TRAVEL 1199 +#define WT_STAT_CONN_TIME_TRAVEL 1201 /*! connection: files currently open */ -#define WT_STAT_CONN_FILE_OPEN 1200 +#define WT_STAT_CONN_FILE_OPEN 1202 /*! connection: hash bucket array size for data handles */ -#define WT_STAT_CONN_BUCKETS_DH 1201 +#define WT_STAT_CONN_BUCKETS_DH 1203 /*! connection: hash bucket array size general */ -#define WT_STAT_CONN_BUCKETS 1202 +#define WT_STAT_CONN_BUCKETS 1204 /*! connection: memory allocations */ -#define WT_STAT_CONN_MEMORY_ALLOCATION 1203 +#define WT_STAT_CONN_MEMORY_ALLOCATION 1205 /*! connection: memory frees */ -#define WT_STAT_CONN_MEMORY_FREE 1204 +#define WT_STAT_CONN_MEMORY_FREE 1206 /*! connection: memory re-allocations */ -#define WT_STAT_CONN_MEMORY_GROW 1205 +#define WT_STAT_CONN_MEMORY_GROW 1207 /*! connection: pthread mutex condition wait calls */ -#define WT_STAT_CONN_COND_WAIT 1206 +#define WT_STAT_CONN_COND_WAIT 1208 /*! connection: pthread mutex shared lock read-lock calls */ -#define WT_STAT_CONN_RWLOCK_READ 1207 +#define WT_STAT_CONN_RWLOCK_READ 1209 /*! connection: pthread mutex shared lock write-lock calls */ -#define WT_STAT_CONN_RWLOCK_WRITE 1208 +#define WT_STAT_CONN_RWLOCK_WRITE 1210 /*! connection: total fsync I/Os */ -#define WT_STAT_CONN_FSYNC_IO 1209 +#define WT_STAT_CONN_FSYNC_IO 1211 /*! connection: total read I/Os */ -#define WT_STAT_CONN_READ_IO 1210 +#define WT_STAT_CONN_READ_IO 1212 /*! connection: total write I/Os */ -#define WT_STAT_CONN_WRITE_IO 1211 +#define WT_STAT_CONN_WRITE_IO 1213 /*! cursor: Total number of entries skipped by cursor next calls */ -#define WT_STAT_CONN_CURSOR_NEXT_SKIP_TOTAL 1212 +#define WT_STAT_CONN_CURSOR_NEXT_SKIP_TOTAL 1214 /*! cursor: Total number of entries skipped by cursor prev calls */ -#define WT_STAT_CONN_CURSOR_PREV_SKIP_TOTAL 1213 +#define WT_STAT_CONN_CURSOR_PREV_SKIP_TOTAL 1215 /*! * cursor: Total number of entries skipped to position the history store * cursor */ -#define WT_STAT_CONN_CURSOR_SKIP_HS_CUR_POSITION 1214 +#define WT_STAT_CONN_CURSOR_SKIP_HS_CUR_POSITION 1216 /*! * cursor: Total number of times a search near has exited due to prefix * config */ -#define WT_STAT_CONN_CURSOR_SEARCH_NEAR_PREFIX_FAST_PATHS 1215 +#define WT_STAT_CONN_CURSOR_SEARCH_NEAR_PREFIX_FAST_PATHS 1217 /*! cursor: cached cursor count */ -#define WT_STAT_CONN_CURSOR_CACHED_COUNT 1216 +#define WT_STAT_CONN_CURSOR_CACHED_COUNT 1218 /*! cursor: cursor bulk loaded cursor insert calls */ -#define WT_STAT_CONN_CURSOR_INSERT_BULK 1217 +#define WT_STAT_CONN_CURSOR_INSERT_BULK 1219 /*! cursor: cursor close calls that result in cache */ -#define WT_STAT_CONN_CURSOR_CACHE 1218 +#define WT_STAT_CONN_CURSOR_CACHE 1220 /*! cursor: cursor create calls */ -#define WT_STAT_CONN_CURSOR_CREATE 1219 +#define WT_STAT_CONN_CURSOR_CREATE 1221 /*! cursor: cursor insert calls */ -#define WT_STAT_CONN_CURSOR_INSERT 1220 +#define WT_STAT_CONN_CURSOR_INSERT 1222 /*! cursor: cursor insert key and value bytes */ -#define WT_STAT_CONN_CURSOR_INSERT_BYTES 1221 +#define WT_STAT_CONN_CURSOR_INSERT_BYTES 1223 /*! cursor: cursor modify calls */ -#define WT_STAT_CONN_CURSOR_MODIFY 1222 +#define WT_STAT_CONN_CURSOR_MODIFY 1224 /*! cursor: cursor modify key and value bytes affected */ -#define WT_STAT_CONN_CURSOR_MODIFY_BYTES 1223 +#define WT_STAT_CONN_CURSOR_MODIFY_BYTES 1225 /*! cursor: cursor modify value bytes modified */ -#define WT_STAT_CONN_CURSOR_MODIFY_BYTES_TOUCH 1224 +#define WT_STAT_CONN_CURSOR_MODIFY_BYTES_TOUCH 1226 /*! cursor: cursor next calls */ -#define WT_STAT_CONN_CURSOR_NEXT 1225 +#define WT_STAT_CONN_CURSOR_NEXT 1227 /*! * cursor: cursor next calls that skip due to a globally visible history * store tombstone */ -#define WT_STAT_CONN_CURSOR_NEXT_HS_TOMBSTONE 1226 +#define WT_STAT_CONN_CURSOR_NEXT_HS_TOMBSTONE 1228 /*! * cursor: cursor next calls that skip greater than or equal to 100 * entries */ -#define WT_STAT_CONN_CURSOR_NEXT_SKIP_GE_100 1227 +#define WT_STAT_CONN_CURSOR_NEXT_SKIP_GE_100 1229 /*! cursor: cursor next calls that skip less than 100 entries */ -#define WT_STAT_CONN_CURSOR_NEXT_SKIP_LT_100 1228 +#define WT_STAT_CONN_CURSOR_NEXT_SKIP_LT_100 1230 /*! cursor: cursor operation restarted */ -#define WT_STAT_CONN_CURSOR_RESTART 1229 +#define WT_STAT_CONN_CURSOR_RESTART 1231 /*! cursor: cursor prev calls */ -#define WT_STAT_CONN_CURSOR_PREV 1230 +#define WT_STAT_CONN_CURSOR_PREV 1232 /*! * cursor: cursor prev calls that skip due to a globally visible history * store tombstone */ -#define WT_STAT_CONN_CURSOR_PREV_HS_TOMBSTONE 1231 +#define WT_STAT_CONN_CURSOR_PREV_HS_TOMBSTONE 1233 /*! * cursor: cursor prev calls that skip greater than or equal to 100 * entries */ -#define WT_STAT_CONN_CURSOR_PREV_SKIP_GE_100 1232 +#define WT_STAT_CONN_CURSOR_PREV_SKIP_GE_100 1234 /*! cursor: cursor prev calls that skip less than 100 entries */ -#define WT_STAT_CONN_CURSOR_PREV_SKIP_LT_100 1233 +#define WT_STAT_CONN_CURSOR_PREV_SKIP_LT_100 1235 /*! cursor: cursor remove calls */ -#define WT_STAT_CONN_CURSOR_REMOVE 1234 +#define WT_STAT_CONN_CURSOR_REMOVE 1236 /*! cursor: cursor remove key bytes removed */ -#define WT_STAT_CONN_CURSOR_REMOVE_BYTES 1235 +#define WT_STAT_CONN_CURSOR_REMOVE_BYTES 1237 /*! cursor: cursor reserve calls */ -#define WT_STAT_CONN_CURSOR_RESERVE 1236 +#define WT_STAT_CONN_CURSOR_RESERVE 1238 /*! cursor: cursor reset calls */ -#define WT_STAT_CONN_CURSOR_RESET 1237 +#define WT_STAT_CONN_CURSOR_RESET 1239 /*! cursor: cursor search calls */ -#define WT_STAT_CONN_CURSOR_SEARCH 1238 +#define WT_STAT_CONN_CURSOR_SEARCH 1240 /*! cursor: cursor search history store calls */ -#define WT_STAT_CONN_CURSOR_SEARCH_HS 1239 +#define WT_STAT_CONN_CURSOR_SEARCH_HS 1241 /*! cursor: cursor search near calls */ -#define WT_STAT_CONN_CURSOR_SEARCH_NEAR 1240 +#define WT_STAT_CONN_CURSOR_SEARCH_NEAR 1242 /*! cursor: cursor sweep buckets */ -#define WT_STAT_CONN_CURSOR_SWEEP_BUCKETS 1241 +#define WT_STAT_CONN_CURSOR_SWEEP_BUCKETS 1243 /*! cursor: cursor sweep cursors closed */ -#define WT_STAT_CONN_CURSOR_SWEEP_CLOSED 1242 +#define WT_STAT_CONN_CURSOR_SWEEP_CLOSED 1244 /*! cursor: cursor sweep cursors examined */ -#define WT_STAT_CONN_CURSOR_SWEEP_EXAMINED 1243 +#define WT_STAT_CONN_CURSOR_SWEEP_EXAMINED 1245 /*! cursor: cursor sweeps */ -#define WT_STAT_CONN_CURSOR_SWEEP 1244 +#define WT_STAT_CONN_CURSOR_SWEEP 1246 /*! cursor: cursor truncate calls */ -#define WT_STAT_CONN_CURSOR_TRUNCATE 1245 +#define WT_STAT_CONN_CURSOR_TRUNCATE 1247 /*! cursor: cursor update calls */ -#define WT_STAT_CONN_CURSOR_UPDATE 1246 +#define WT_STAT_CONN_CURSOR_UPDATE 1248 /*! cursor: cursor update key and value bytes */ -#define WT_STAT_CONN_CURSOR_UPDATE_BYTES 1247 +#define WT_STAT_CONN_CURSOR_UPDATE_BYTES 1249 /*! cursor: cursor update value size change */ -#define WT_STAT_CONN_CURSOR_UPDATE_BYTES_CHANGED 1248 +#define WT_STAT_CONN_CURSOR_UPDATE_BYTES_CHANGED 1250 /*! cursor: cursors reused from cache */ -#define WT_STAT_CONN_CURSOR_REOPEN 1249 +#define WT_STAT_CONN_CURSOR_REOPEN 1251 /*! cursor: open cursor count */ -#define WT_STAT_CONN_CURSOR_OPEN_COUNT 1250 +#define WT_STAT_CONN_CURSOR_OPEN_COUNT 1252 /*! data-handle: connection data handle size */ -#define WT_STAT_CONN_DH_CONN_HANDLE_SIZE 1251 +#define WT_STAT_CONN_DH_CONN_HANDLE_SIZE 1253 /*! data-handle: connection data handles currently active */ -#define WT_STAT_CONN_DH_CONN_HANDLE_COUNT 1252 +#define WT_STAT_CONN_DH_CONN_HANDLE_COUNT 1254 /*! data-handle: connection sweep candidate became referenced */ -#define WT_STAT_CONN_DH_SWEEP_REF 1253 +#define WT_STAT_CONN_DH_SWEEP_REF 1255 /*! data-handle: connection sweep dhandles closed */ -#define WT_STAT_CONN_DH_SWEEP_CLOSE 1254 +#define WT_STAT_CONN_DH_SWEEP_CLOSE 1256 /*! data-handle: connection sweep dhandles removed from hash list */ -#define WT_STAT_CONN_DH_SWEEP_REMOVE 1255 +#define WT_STAT_CONN_DH_SWEEP_REMOVE 1257 /*! data-handle: connection sweep time-of-death sets */ -#define WT_STAT_CONN_DH_SWEEP_TOD 1256 +#define WT_STAT_CONN_DH_SWEEP_TOD 1258 /*! data-handle: connection sweeps */ -#define WT_STAT_CONN_DH_SWEEPS 1257 +#define WT_STAT_CONN_DH_SWEEPS 1259 /*! * data-handle: connection sweeps skipped due to checkpoint gathering * handles */ -#define WT_STAT_CONN_DH_SWEEP_SKIP_CKPT 1258 +#define WT_STAT_CONN_DH_SWEEP_SKIP_CKPT 1260 /*! data-handle: session dhandles swept */ -#define WT_STAT_CONN_DH_SESSION_HANDLES 1259 +#define WT_STAT_CONN_DH_SESSION_HANDLES 1261 /*! data-handle: session sweep attempts */ -#define WT_STAT_CONN_DH_SESSION_SWEEPS 1260 +#define WT_STAT_CONN_DH_SESSION_SWEEPS 1262 /*! lock: checkpoint lock acquisitions */ -#define WT_STAT_CONN_LOCK_CHECKPOINT_COUNT 1261 +#define WT_STAT_CONN_LOCK_CHECKPOINT_COUNT 1263 /*! lock: checkpoint lock application thread wait time (usecs) */ -#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_APPLICATION 1262 +#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_APPLICATION 1264 /*! lock: checkpoint lock internal thread wait time (usecs) */ -#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_INTERNAL 1263 +#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_INTERNAL 1265 /*! lock: dhandle lock application thread time waiting (usecs) */ -#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_APPLICATION 1264 +#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_APPLICATION 1266 /*! lock: dhandle lock internal thread time waiting (usecs) */ -#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_INTERNAL 1265 +#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_INTERNAL 1267 /*! lock: dhandle read lock acquisitions */ -#define WT_STAT_CONN_LOCK_DHANDLE_READ_COUNT 1266 +#define WT_STAT_CONN_LOCK_DHANDLE_READ_COUNT 1268 /*! lock: dhandle write lock acquisitions */ -#define WT_STAT_CONN_LOCK_DHANDLE_WRITE_COUNT 1267 +#define WT_STAT_CONN_LOCK_DHANDLE_WRITE_COUNT 1269 /*! * lock: durable timestamp queue lock application thread time waiting * (usecs) */ -#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WAIT_APPLICATION 1268 +#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WAIT_APPLICATION 1270 /*! * lock: durable timestamp queue lock internal thread time waiting * (usecs) */ -#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WAIT_INTERNAL 1269 +#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WAIT_INTERNAL 1271 /*! lock: durable timestamp queue read lock acquisitions */ -#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_READ_COUNT 1270 +#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_READ_COUNT 1272 /*! lock: durable timestamp queue write lock acquisitions */ -#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WRITE_COUNT 1271 +#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WRITE_COUNT 1273 /*! lock: metadata lock acquisitions */ -#define WT_STAT_CONN_LOCK_METADATA_COUNT 1272 +#define WT_STAT_CONN_LOCK_METADATA_COUNT 1274 /*! lock: metadata lock application thread wait time (usecs) */ -#define WT_STAT_CONN_LOCK_METADATA_WAIT_APPLICATION 1273 +#define WT_STAT_CONN_LOCK_METADATA_WAIT_APPLICATION 1275 /*! lock: metadata lock internal thread wait time (usecs) */ -#define WT_STAT_CONN_LOCK_METADATA_WAIT_INTERNAL 1274 +#define WT_STAT_CONN_LOCK_METADATA_WAIT_INTERNAL 1276 /*! * lock: read timestamp queue lock application thread time waiting * (usecs) */ -#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_APPLICATION 1275 +#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_APPLICATION 1277 /*! lock: read timestamp queue lock internal thread time waiting (usecs) */ -#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_INTERNAL 1276 +#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_INTERNAL 1278 /*! lock: read timestamp queue read lock acquisitions */ -#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_READ_COUNT 1277 +#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_READ_COUNT 1279 /*! lock: read timestamp queue write lock acquisitions */ -#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WRITE_COUNT 1278 +#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WRITE_COUNT 1280 /*! lock: schema lock acquisitions */ -#define WT_STAT_CONN_LOCK_SCHEMA_COUNT 1279 +#define WT_STAT_CONN_LOCK_SCHEMA_COUNT 1281 /*! lock: schema lock application thread wait time (usecs) */ -#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_APPLICATION 1280 +#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_APPLICATION 1282 /*! lock: schema lock internal thread wait time (usecs) */ -#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_INTERNAL 1281 +#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_INTERNAL 1283 /*! * lock: table lock application thread time waiting for the table lock * (usecs) */ -#define WT_STAT_CONN_LOCK_TABLE_WAIT_APPLICATION 1282 +#define WT_STAT_CONN_LOCK_TABLE_WAIT_APPLICATION 1284 /*! * lock: table lock internal thread time waiting for the table lock * (usecs) */ -#define WT_STAT_CONN_LOCK_TABLE_WAIT_INTERNAL 1283 +#define WT_STAT_CONN_LOCK_TABLE_WAIT_INTERNAL 1285 /*! lock: table read lock acquisitions */ -#define WT_STAT_CONN_LOCK_TABLE_READ_COUNT 1284 +#define WT_STAT_CONN_LOCK_TABLE_READ_COUNT 1286 /*! lock: table write lock acquisitions */ -#define WT_STAT_CONN_LOCK_TABLE_WRITE_COUNT 1285 +#define WT_STAT_CONN_LOCK_TABLE_WRITE_COUNT 1287 /*! lock: txn global lock application thread time waiting (usecs) */ -#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_APPLICATION 1286 +#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_APPLICATION 1288 /*! lock: txn global lock internal thread time waiting (usecs) */ -#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_INTERNAL 1287 +#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_INTERNAL 1289 /*! lock: txn global read lock acquisitions */ -#define WT_STAT_CONN_LOCK_TXN_GLOBAL_READ_COUNT 1288 +#define WT_STAT_CONN_LOCK_TXN_GLOBAL_READ_COUNT 1290 /*! lock: txn global write lock acquisitions */ -#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WRITE_COUNT 1289 +#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WRITE_COUNT 1291 /*! log: busy returns attempting to switch slots */ -#define WT_STAT_CONN_LOG_SLOT_SWITCH_BUSY 1290 +#define WT_STAT_CONN_LOG_SLOT_SWITCH_BUSY 1292 /*! log: force archive time sleeping (usecs) */ -#define WT_STAT_CONN_LOG_FORCE_ARCHIVE_SLEEP 1291 +#define WT_STAT_CONN_LOG_FORCE_ARCHIVE_SLEEP 1293 /*! log: log bytes of payload data */ -#define WT_STAT_CONN_LOG_BYTES_PAYLOAD 1292 +#define WT_STAT_CONN_LOG_BYTES_PAYLOAD 1294 /*! log: log bytes written */ -#define WT_STAT_CONN_LOG_BYTES_WRITTEN 1293 +#define WT_STAT_CONN_LOG_BYTES_WRITTEN 1295 /*! log: log files manually zero-filled */ -#define WT_STAT_CONN_LOG_ZERO_FILLS 1294 +#define WT_STAT_CONN_LOG_ZERO_FILLS 1296 /*! log: log flush operations */ -#define WT_STAT_CONN_LOG_FLUSH 1295 +#define WT_STAT_CONN_LOG_FLUSH 1297 /*! log: log force write operations */ -#define WT_STAT_CONN_LOG_FORCE_WRITE 1296 +#define WT_STAT_CONN_LOG_FORCE_WRITE 1298 /*! log: log force write operations skipped */ -#define WT_STAT_CONN_LOG_FORCE_WRITE_SKIP 1297 +#define WT_STAT_CONN_LOG_FORCE_WRITE_SKIP 1299 /*! log: log records compressed */ -#define WT_STAT_CONN_LOG_COMPRESS_WRITES 1298 +#define WT_STAT_CONN_LOG_COMPRESS_WRITES 1300 /*! log: log records not compressed */ -#define WT_STAT_CONN_LOG_COMPRESS_WRITE_FAILS 1299 +#define WT_STAT_CONN_LOG_COMPRESS_WRITE_FAILS 1301 /*! log: log records too small to compress */ -#define WT_STAT_CONN_LOG_COMPRESS_SMALL 1300 +#define WT_STAT_CONN_LOG_COMPRESS_SMALL 1302 /*! log: log release advances write LSN */ -#define WT_STAT_CONN_LOG_RELEASE_WRITE_LSN 1301 +#define WT_STAT_CONN_LOG_RELEASE_WRITE_LSN 1303 /*! log: log scan operations */ -#define WT_STAT_CONN_LOG_SCANS 1302 +#define WT_STAT_CONN_LOG_SCANS 1304 /*! log: log scan records requiring two reads */ -#define WT_STAT_CONN_LOG_SCAN_REREADS 1303 +#define WT_STAT_CONN_LOG_SCAN_REREADS 1305 /*! log: log server thread advances write LSN */ -#define WT_STAT_CONN_LOG_WRITE_LSN 1304 +#define WT_STAT_CONN_LOG_WRITE_LSN 1306 /*! log: log server thread write LSN walk skipped */ -#define WT_STAT_CONN_LOG_WRITE_LSN_SKIP 1305 +#define WT_STAT_CONN_LOG_WRITE_LSN_SKIP 1307 /*! log: log sync operations */ -#define WT_STAT_CONN_LOG_SYNC 1306 +#define WT_STAT_CONN_LOG_SYNC 1308 /*! log: log sync time duration (usecs) */ -#define WT_STAT_CONN_LOG_SYNC_DURATION 1307 +#define WT_STAT_CONN_LOG_SYNC_DURATION 1309 /*! log: log sync_dir operations */ -#define WT_STAT_CONN_LOG_SYNC_DIR 1308 +#define WT_STAT_CONN_LOG_SYNC_DIR 1310 /*! log: log sync_dir time duration (usecs) */ -#define WT_STAT_CONN_LOG_SYNC_DIR_DURATION 1309 +#define WT_STAT_CONN_LOG_SYNC_DIR_DURATION 1311 /*! log: log write operations */ -#define WT_STAT_CONN_LOG_WRITES 1310 +#define WT_STAT_CONN_LOG_WRITES 1312 /*! log: logging bytes consolidated */ -#define WT_STAT_CONN_LOG_SLOT_CONSOLIDATED 1311 +#define WT_STAT_CONN_LOG_SLOT_CONSOLIDATED 1313 /*! log: maximum log file size */ -#define WT_STAT_CONN_LOG_MAX_FILESIZE 1312 +#define WT_STAT_CONN_LOG_MAX_FILESIZE 1314 /*! log: number of pre-allocated log files to create */ -#define WT_STAT_CONN_LOG_PREALLOC_MAX 1313 +#define WT_STAT_CONN_LOG_PREALLOC_MAX 1315 /*! log: pre-allocated log files not ready and missed */ -#define WT_STAT_CONN_LOG_PREALLOC_MISSED 1314 +#define WT_STAT_CONN_LOG_PREALLOC_MISSED 1316 /*! log: pre-allocated log files prepared */ -#define WT_STAT_CONN_LOG_PREALLOC_FILES 1315 +#define WT_STAT_CONN_LOG_PREALLOC_FILES 1317 /*! log: pre-allocated log files used */ -#define WT_STAT_CONN_LOG_PREALLOC_USED 1316 +#define WT_STAT_CONN_LOG_PREALLOC_USED 1318 /*! log: records processed by log scan */ -#define WT_STAT_CONN_LOG_SCAN_RECORDS 1317 +#define WT_STAT_CONN_LOG_SCAN_RECORDS 1319 /*! log: slot close lost race */ -#define WT_STAT_CONN_LOG_SLOT_CLOSE_RACE 1318 +#define WT_STAT_CONN_LOG_SLOT_CLOSE_RACE 1320 /*! log: slot close unbuffered waits */ -#define WT_STAT_CONN_LOG_SLOT_CLOSE_UNBUF 1319 +#define WT_STAT_CONN_LOG_SLOT_CLOSE_UNBUF 1321 /*! log: slot closures */ -#define WT_STAT_CONN_LOG_SLOT_CLOSES 1320 +#define WT_STAT_CONN_LOG_SLOT_CLOSES 1322 /*! log: slot join atomic update races */ -#define WT_STAT_CONN_LOG_SLOT_RACES 1321 +#define WT_STAT_CONN_LOG_SLOT_RACES 1323 /*! log: slot join calls atomic updates raced */ -#define WT_STAT_CONN_LOG_SLOT_YIELD_RACE 1322 +#define WT_STAT_CONN_LOG_SLOT_YIELD_RACE 1324 /*! log: slot join calls did not yield */ -#define WT_STAT_CONN_LOG_SLOT_IMMEDIATE 1323 +#define WT_STAT_CONN_LOG_SLOT_IMMEDIATE 1325 /*! log: slot join calls found active slot closed */ -#define WT_STAT_CONN_LOG_SLOT_YIELD_CLOSE 1324 +#define WT_STAT_CONN_LOG_SLOT_YIELD_CLOSE 1326 /*! log: slot join calls slept */ -#define WT_STAT_CONN_LOG_SLOT_YIELD_SLEEP 1325 +#define WT_STAT_CONN_LOG_SLOT_YIELD_SLEEP 1327 /*! log: slot join calls yielded */ -#define WT_STAT_CONN_LOG_SLOT_YIELD 1326 +#define WT_STAT_CONN_LOG_SLOT_YIELD 1328 /*! log: slot join found active slot closed */ -#define WT_STAT_CONN_LOG_SLOT_ACTIVE_CLOSED 1327 +#define WT_STAT_CONN_LOG_SLOT_ACTIVE_CLOSED 1329 /*! log: slot joins yield time (usecs) */ -#define WT_STAT_CONN_LOG_SLOT_YIELD_DURATION 1328 +#define WT_STAT_CONN_LOG_SLOT_YIELD_DURATION 1330 /*! log: slot transitions unable to find free slot */ -#define WT_STAT_CONN_LOG_SLOT_NO_FREE_SLOTS 1329 +#define WT_STAT_CONN_LOG_SLOT_NO_FREE_SLOTS 1331 /*! log: slot unbuffered writes */ -#define WT_STAT_CONN_LOG_SLOT_UNBUFFERED 1330 +#define WT_STAT_CONN_LOG_SLOT_UNBUFFERED 1332 /*! log: total in-memory size of compressed records */ -#define WT_STAT_CONN_LOG_COMPRESS_MEM 1331 +#define WT_STAT_CONN_LOG_COMPRESS_MEM 1333 /*! log: total log buffer size */ -#define WT_STAT_CONN_LOG_BUFFER_SIZE 1332 +#define WT_STAT_CONN_LOG_BUFFER_SIZE 1334 /*! log: total size of compressed records */ -#define WT_STAT_CONN_LOG_COMPRESS_LEN 1333 +#define WT_STAT_CONN_LOG_COMPRESS_LEN 1335 /*! log: written slots coalesced */ -#define WT_STAT_CONN_LOG_SLOT_COALESCED 1334 +#define WT_STAT_CONN_LOG_SLOT_COALESCED 1336 /*! log: yields waiting for previous log file close */ -#define WT_STAT_CONN_LOG_CLOSE_YIELDS 1335 +#define WT_STAT_CONN_LOG_CLOSE_YIELDS 1337 /*! perf: file system read latency histogram (bucket 1) - 10-49ms */ -#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT50 1336 +#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT50 1338 /*! perf: file system read latency histogram (bucket 2) - 50-99ms */ -#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT100 1337 +#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT100 1339 /*! perf: file system read latency histogram (bucket 3) - 100-249ms */ -#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT250 1338 +#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT250 1340 /*! perf: file system read latency histogram (bucket 4) - 250-499ms */ -#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT500 1339 +#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT500 1341 /*! perf: file system read latency histogram (bucket 5) - 500-999ms */ -#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT1000 1340 +#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT1000 1342 /*! perf: file system read latency histogram (bucket 6) - 1000ms+ */ -#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_GT1000 1341 +#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_GT1000 1343 /*! perf: file system write latency histogram (bucket 1) - 10-49ms */ -#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT50 1342 +#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT50 1344 /*! perf: file system write latency histogram (bucket 2) - 50-99ms */ -#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT100 1343 +#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT100 1345 /*! perf: file system write latency histogram (bucket 3) - 100-249ms */ -#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT250 1344 +#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT250 1346 /*! perf: file system write latency histogram (bucket 4) - 250-499ms */ -#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT500 1345 +#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT500 1347 /*! perf: file system write latency histogram (bucket 5) - 500-999ms */ -#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT1000 1346 +#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT1000 1348 /*! perf: file system write latency histogram (bucket 6) - 1000ms+ */ -#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_GT1000 1347 +#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_GT1000 1349 /*! perf: operation read latency histogram (bucket 1) - 100-249us */ -#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT250 1348 +#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT250 1350 /*! perf: operation read latency histogram (bucket 2) - 250-499us */ -#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT500 1349 +#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT500 1351 /*! perf: operation read latency histogram (bucket 3) - 500-999us */ -#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT1000 1350 +#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT1000 1352 /*! perf: operation read latency histogram (bucket 4) - 1000-9999us */ -#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT10000 1351 +#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT10000 1353 /*! perf: operation read latency histogram (bucket 5) - 10000us+ */ -#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_GT10000 1352 +#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_GT10000 1354 /*! perf: operation write latency histogram (bucket 1) - 100-249us */ -#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT250 1353 +#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT250 1355 /*! perf: operation write latency histogram (bucket 2) - 250-499us */ -#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT500 1354 +#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT500 1356 /*! perf: operation write latency histogram (bucket 3) - 500-999us */ -#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT1000 1355 +#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT1000 1357 /*! perf: operation write latency histogram (bucket 4) - 1000-9999us */ -#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT10000 1356 +#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT10000 1358 /*! perf: operation write latency histogram (bucket 5) - 10000us+ */ -#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_GT10000 1357 +#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_GT10000 1359 /*! reconciliation: approximate byte size of timestamps in pages written */ -#define WT_STAT_CONN_REC_TIME_WINDOW_BYTES_TS 1358 +#define WT_STAT_CONN_REC_TIME_WINDOW_BYTES_TS 1360 /*! * reconciliation: approximate byte size of transaction IDs in pages * written */ -#define WT_STAT_CONN_REC_TIME_WINDOW_BYTES_TXN 1359 +#define WT_STAT_CONN_REC_TIME_WINDOW_BYTES_TXN 1361 /*! reconciliation: fast-path pages deleted */ -#define WT_STAT_CONN_REC_PAGE_DELETE_FAST 1360 +#define WT_STAT_CONN_REC_PAGE_DELETE_FAST 1362 /*! reconciliation: leaf-page overflow keys */ -#define WT_STAT_CONN_REC_OVERFLOW_KEY_LEAF 1361 +#define WT_STAT_CONN_REC_OVERFLOW_KEY_LEAF 1363 /*! reconciliation: maximum seconds spent in a reconciliation call */ -#define WT_STAT_CONN_REC_MAXIMUM_SECONDS 1362 +#define WT_STAT_CONN_REC_MAXIMUM_SECONDS 1364 /*! reconciliation: page reconciliation calls */ -#define WT_STAT_CONN_REC_PAGES 1363 +#define WT_STAT_CONN_REC_PAGES 1365 /*! reconciliation: page reconciliation calls for eviction */ -#define WT_STAT_CONN_REC_PAGES_EVICTION 1364 +#define WT_STAT_CONN_REC_PAGES_EVICTION 1366 /*! * reconciliation: page reconciliation calls that resulted in values with * prepared transaction metadata */ -#define WT_STAT_CONN_REC_PAGES_WITH_PREPARE 1365 +#define WT_STAT_CONN_REC_PAGES_WITH_PREPARE 1367 /*! * reconciliation: page reconciliation calls that resulted in values with * timestamps */ -#define WT_STAT_CONN_REC_PAGES_WITH_TS 1366 +#define WT_STAT_CONN_REC_PAGES_WITH_TS 1368 /*! * reconciliation: page reconciliation calls that resulted in values with * transaction ids */ -#define WT_STAT_CONN_REC_PAGES_WITH_TXN 1367 +#define WT_STAT_CONN_REC_PAGES_WITH_TXN 1369 /*! reconciliation: pages deleted */ -#define WT_STAT_CONN_REC_PAGE_DELETE 1368 +#define WT_STAT_CONN_REC_PAGE_DELETE 1370 /*! * reconciliation: pages written including an aggregated newest start * durable timestamp */ -#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_START_DURABLE_TS 1369 +#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_START_DURABLE_TS 1371 /*! * reconciliation: pages written including an aggregated newest stop * durable timestamp */ -#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_DURABLE_TS 1370 +#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_DURABLE_TS 1372 /*! * reconciliation: pages written including an aggregated newest stop * timestamp */ -#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_TS 1371 +#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_TS 1373 /*! * reconciliation: pages written including an aggregated newest stop * transaction ID */ -#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_TXN 1372 +#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_TXN 1374 /*! * reconciliation: pages written including an aggregated newest * transaction ID */ -#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_TXN 1373 +#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_TXN 1375 /*! * reconciliation: pages written including an aggregated oldest start * timestamp */ -#define WT_STAT_CONN_REC_TIME_AGGR_OLDEST_START_TS 1374 +#define WT_STAT_CONN_REC_TIME_AGGR_OLDEST_START_TS 1376 /*! reconciliation: pages written including an aggregated prepare */ -#define WT_STAT_CONN_REC_TIME_AGGR_PREPARED 1375 +#define WT_STAT_CONN_REC_TIME_AGGR_PREPARED 1377 /*! reconciliation: pages written including at least one prepare state */ -#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_PREPARED 1376 +#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_PREPARED 1378 /*! * reconciliation: pages written including at least one start durable * timestamp */ -#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_DURABLE_START_TS 1377 +#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_DURABLE_START_TS 1379 /*! reconciliation: pages written including at least one start timestamp */ -#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_START_TS 1378 +#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_START_TS 1380 /*! * reconciliation: pages written including at least one start transaction * ID */ -#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_START_TXN 1379 +#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_START_TXN 1381 /*! * reconciliation: pages written including at least one stop durable * timestamp */ -#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_DURABLE_STOP_TS 1380 +#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_DURABLE_STOP_TS 1382 /*! reconciliation: pages written including at least one stop timestamp */ -#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_STOP_TS 1381 +#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_STOP_TS 1383 /*! * reconciliation: pages written including at least one stop transaction * ID */ -#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_STOP_TXN 1382 +#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_STOP_TXN 1384 /*! reconciliation: records written including a prepare state */ -#define WT_STAT_CONN_REC_TIME_WINDOW_PREPARED 1383 +#define WT_STAT_CONN_REC_TIME_WINDOW_PREPARED 1385 /*! reconciliation: records written including a start durable timestamp */ -#define WT_STAT_CONN_REC_TIME_WINDOW_DURABLE_START_TS 1384 +#define WT_STAT_CONN_REC_TIME_WINDOW_DURABLE_START_TS 1386 /*! reconciliation: records written including a start timestamp */ -#define WT_STAT_CONN_REC_TIME_WINDOW_START_TS 1385 +#define WT_STAT_CONN_REC_TIME_WINDOW_START_TS 1387 /*! reconciliation: records written including a start transaction ID */ -#define WT_STAT_CONN_REC_TIME_WINDOW_START_TXN 1386 +#define WT_STAT_CONN_REC_TIME_WINDOW_START_TXN 1388 /*! reconciliation: records written including a stop durable timestamp */ -#define WT_STAT_CONN_REC_TIME_WINDOW_DURABLE_STOP_TS 1387 +#define WT_STAT_CONN_REC_TIME_WINDOW_DURABLE_STOP_TS 1389 /*! reconciliation: records written including a stop timestamp */ -#define WT_STAT_CONN_REC_TIME_WINDOW_STOP_TS 1388 +#define WT_STAT_CONN_REC_TIME_WINDOW_STOP_TS 1390 /*! reconciliation: records written including a stop transaction ID */ -#define WT_STAT_CONN_REC_TIME_WINDOW_STOP_TXN 1389 +#define WT_STAT_CONN_REC_TIME_WINDOW_STOP_TXN 1391 /*! reconciliation: split bytes currently awaiting free */ -#define WT_STAT_CONN_REC_SPLIT_STASHED_BYTES 1390 +#define WT_STAT_CONN_REC_SPLIT_STASHED_BYTES 1392 /*! reconciliation: split objects currently awaiting free */ -#define WT_STAT_CONN_REC_SPLIT_STASHED_OBJECTS 1391 +#define WT_STAT_CONN_REC_SPLIT_STASHED_OBJECTS 1393 /*! session: attempts to remove a local object and the object is in use */ -#define WT_STAT_CONN_LOCAL_OBJECTS_INUSE 1392 +#define WT_STAT_CONN_LOCAL_OBJECTS_INUSE 1394 /*! session: flush_tier operation calls */ -#define WT_STAT_CONN_FLUSH_TIER 1393 +#define WT_STAT_CONN_FLUSH_TIER 1395 /*! session: flush_tier tables skipped due to no checkpoint */ -#define WT_STAT_CONN_FLUSH_TIER_SKIPPED 1394 +#define WT_STAT_CONN_FLUSH_TIER_SKIPPED 1396 /*! session: flush_tier tables switched */ -#define WT_STAT_CONN_FLUSH_TIER_SWITCHED 1395 +#define WT_STAT_CONN_FLUSH_TIER_SWITCHED 1397 /*! session: local objects removed */ -#define WT_STAT_CONN_LOCAL_OBJECTS_REMOVED 1396 +#define WT_STAT_CONN_LOCAL_OBJECTS_REMOVED 1398 /*! session: open session count */ -#define WT_STAT_CONN_SESSION_OPEN 1397 +#define WT_STAT_CONN_SESSION_OPEN 1399 /*! session: session query timestamp calls */ -#define WT_STAT_CONN_SESSION_QUERY_TS 1398 +#define WT_STAT_CONN_SESSION_QUERY_TS 1400 /*! session: table alter failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_ALTER_FAIL 1399 +#define WT_STAT_CONN_SESSION_TABLE_ALTER_FAIL 1401 /*! session: table alter successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_ALTER_SUCCESS 1400 +#define WT_STAT_CONN_SESSION_TABLE_ALTER_SUCCESS 1402 /*! session: table alter triggering checkpoint calls */ -#define WT_STAT_CONN_SESSION_TABLE_ALTER_TRIGGER_CHECKPOINT 1401 +#define WT_STAT_CONN_SESSION_TABLE_ALTER_TRIGGER_CHECKPOINT 1403 /*! session: table alter unchanged and skipped */ -#define WT_STAT_CONN_SESSION_TABLE_ALTER_SKIP 1402 +#define WT_STAT_CONN_SESSION_TABLE_ALTER_SKIP 1404 /*! session: table compact failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_COMPACT_FAIL 1403 +#define WT_STAT_CONN_SESSION_TABLE_COMPACT_FAIL 1405 /*! session: table compact failed calls due to cache pressure */ -#define WT_STAT_CONN_SESSION_TABLE_COMPACT_FAIL_CACHE_PRESSURE 1404 +#define WT_STAT_CONN_SESSION_TABLE_COMPACT_FAIL_CACHE_PRESSURE 1406 /*! session: table compact running */ -#define WT_STAT_CONN_SESSION_TABLE_COMPACT_RUNNING 1405 +#define WT_STAT_CONN_SESSION_TABLE_COMPACT_RUNNING 1407 /*! session: table compact skipped as process would not reduce file size */ -#define WT_STAT_CONN_SESSION_TABLE_COMPACT_SKIPPED 1406 +#define WT_STAT_CONN_SESSION_TABLE_COMPACT_SKIPPED 1408 /*! session: table compact successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_COMPACT_SUCCESS 1407 +#define WT_STAT_CONN_SESSION_TABLE_COMPACT_SUCCESS 1409 /*! session: table compact timeout */ -#define WT_STAT_CONN_SESSION_TABLE_COMPACT_TIMEOUT 1408 +#define WT_STAT_CONN_SESSION_TABLE_COMPACT_TIMEOUT 1410 /*! session: table create failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_CREATE_FAIL 1409 +#define WT_STAT_CONN_SESSION_TABLE_CREATE_FAIL 1411 /*! session: table create successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_CREATE_SUCCESS 1410 +#define WT_STAT_CONN_SESSION_TABLE_CREATE_SUCCESS 1412 /*! session: table drop failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_DROP_FAIL 1411 +#define WT_STAT_CONN_SESSION_TABLE_DROP_FAIL 1413 /*! session: table drop successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_DROP_SUCCESS 1412 +#define WT_STAT_CONN_SESSION_TABLE_DROP_SUCCESS 1414 /*! session: table rename failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_RENAME_FAIL 1413 +#define WT_STAT_CONN_SESSION_TABLE_RENAME_FAIL 1415 /*! session: table rename successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_RENAME_SUCCESS 1414 +#define WT_STAT_CONN_SESSION_TABLE_RENAME_SUCCESS 1416 /*! session: table salvage failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_FAIL 1415 +#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_FAIL 1417 /*! session: table salvage successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_SUCCESS 1416 +#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_SUCCESS 1418 /*! session: table truncate failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_FAIL 1417 +#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_FAIL 1419 /*! session: table truncate successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_SUCCESS 1418 +#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_SUCCESS 1420 /*! session: table verify failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_VERIFY_FAIL 1419 +#define WT_STAT_CONN_SESSION_TABLE_VERIFY_FAIL 1421 /*! session: table verify successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_VERIFY_SUCCESS 1420 +#define WT_STAT_CONN_SESSION_TABLE_VERIFY_SUCCESS 1422 /*! session: tiered operations dequeued and processed */ -#define WT_STAT_CONN_TIERED_WORK_UNITS_DEQUEUED 1421 +#define WT_STAT_CONN_TIERED_WORK_UNITS_DEQUEUED 1423 /*! session: tiered operations scheduled */ -#define WT_STAT_CONN_TIERED_WORK_UNITS_CREATED 1422 +#define WT_STAT_CONN_TIERED_WORK_UNITS_CREATED 1424 /*! session: tiered storage local retention time (secs) */ -#define WT_STAT_CONN_TIERED_RETENTION 1423 +#define WT_STAT_CONN_TIERED_RETENTION 1425 /*! session: tiered storage object size */ -#define WT_STAT_CONN_TIERED_OBJECT_SIZE 1424 +#define WT_STAT_CONN_TIERED_OBJECT_SIZE 1426 /*! thread-state: active filesystem fsync calls */ -#define WT_STAT_CONN_THREAD_FSYNC_ACTIVE 1425 +#define WT_STAT_CONN_THREAD_FSYNC_ACTIVE 1427 /*! thread-state: active filesystem read calls */ -#define WT_STAT_CONN_THREAD_READ_ACTIVE 1426 +#define WT_STAT_CONN_THREAD_READ_ACTIVE 1428 /*! thread-state: active filesystem write calls */ -#define WT_STAT_CONN_THREAD_WRITE_ACTIVE 1427 +#define WT_STAT_CONN_THREAD_WRITE_ACTIVE 1429 /*! thread-yield: application thread time evicting (usecs) */ -#define WT_STAT_CONN_APPLICATION_EVICT_TIME 1428 +#define WT_STAT_CONN_APPLICATION_EVICT_TIME 1430 /*! thread-yield: application thread time waiting for cache (usecs) */ -#define WT_STAT_CONN_APPLICATION_CACHE_TIME 1429 +#define WT_STAT_CONN_APPLICATION_CACHE_TIME 1431 /*! * thread-yield: connection close blocked waiting for transaction state * stabilization */ -#define WT_STAT_CONN_TXN_RELEASE_BLOCKED 1430 +#define WT_STAT_CONN_TXN_RELEASE_BLOCKED 1432 /*! thread-yield: connection close yielded for lsm manager shutdown */ -#define WT_STAT_CONN_CONN_CLOSE_BLOCKED_LSM 1431 +#define WT_STAT_CONN_CONN_CLOSE_BLOCKED_LSM 1433 /*! thread-yield: data handle lock yielded */ -#define WT_STAT_CONN_DHANDLE_LOCK_BLOCKED 1432 +#define WT_STAT_CONN_DHANDLE_LOCK_BLOCKED 1434 /*! * thread-yield: get reference for page index and slot time sleeping * (usecs) */ -#define WT_STAT_CONN_PAGE_INDEX_SLOT_REF_BLOCKED 1433 +#define WT_STAT_CONN_PAGE_INDEX_SLOT_REF_BLOCKED 1435 /*! thread-yield: page access yielded due to prepare state change */ -#define WT_STAT_CONN_PREPARED_TRANSITION_BLOCKED_PAGE 1434 +#define WT_STAT_CONN_PREPARED_TRANSITION_BLOCKED_PAGE 1436 /*! thread-yield: page acquire busy blocked */ -#define WT_STAT_CONN_PAGE_BUSY_BLOCKED 1435 +#define WT_STAT_CONN_PAGE_BUSY_BLOCKED 1437 /*! thread-yield: page acquire eviction blocked */ -#define WT_STAT_CONN_PAGE_FORCIBLE_EVICT_BLOCKED 1436 +#define WT_STAT_CONN_PAGE_FORCIBLE_EVICT_BLOCKED 1438 /*! thread-yield: page acquire locked blocked */ -#define WT_STAT_CONN_PAGE_LOCKED_BLOCKED 1437 +#define WT_STAT_CONN_PAGE_LOCKED_BLOCKED 1439 /*! thread-yield: page acquire read blocked */ -#define WT_STAT_CONN_PAGE_READ_BLOCKED 1438 +#define WT_STAT_CONN_PAGE_READ_BLOCKED 1440 /*! thread-yield: page acquire time sleeping (usecs) */ -#define WT_STAT_CONN_PAGE_SLEEP 1439 +#define WT_STAT_CONN_PAGE_SLEEP 1441 /*! * thread-yield: page delete rollback time sleeping for state change * (usecs) */ -#define WT_STAT_CONN_PAGE_DEL_ROLLBACK_BLOCKED 1440 +#define WT_STAT_CONN_PAGE_DEL_ROLLBACK_BLOCKED 1442 /*! thread-yield: page reconciliation yielded due to child modification */ -#define WT_STAT_CONN_CHILD_MODIFY_BLOCKED_PAGE 1441 +#define WT_STAT_CONN_CHILD_MODIFY_BLOCKED_PAGE 1443 /*! transaction: Number of prepared updates */ -#define WT_STAT_CONN_TXN_PREPARED_UPDATES 1442 +#define WT_STAT_CONN_TXN_PREPARED_UPDATES 1444 /*! transaction: Number of prepared updates committed */ -#define WT_STAT_CONN_TXN_PREPARED_UPDATES_COMMITTED 1443 +#define WT_STAT_CONN_TXN_PREPARED_UPDATES_COMMITTED 1445 /*! transaction: Number of prepared updates repeated on the same key */ -#define WT_STAT_CONN_TXN_PREPARED_UPDATES_KEY_REPEATED 1444 +#define WT_STAT_CONN_TXN_PREPARED_UPDATES_KEY_REPEATED 1446 /*! transaction: Number of prepared updates rolled back */ -#define WT_STAT_CONN_TXN_PREPARED_UPDATES_ROLLEDBACK 1445 +#define WT_STAT_CONN_TXN_PREPARED_UPDATES_ROLLEDBACK 1447 /*! transaction: prepared transactions */ -#define WT_STAT_CONN_TXN_PREPARE 1446 +#define WT_STAT_CONN_TXN_PREPARE 1448 /*! transaction: prepared transactions committed */ -#define WT_STAT_CONN_TXN_PREPARE_COMMIT 1447 +#define WT_STAT_CONN_TXN_PREPARE_COMMIT 1449 /*! transaction: prepared transactions currently active */ -#define WT_STAT_CONN_TXN_PREPARE_ACTIVE 1448 +#define WT_STAT_CONN_TXN_PREPARE_ACTIVE 1450 /*! transaction: prepared transactions rolled back */ -#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK 1449 +#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK 1451 /*! * 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 1450 +#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK_DO_NOT_REMOVE_HS_UPDATE 1452 /*! * 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 1451 +#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK_FIX_HS_UPDATE_WITH_CKPT_RESERVED_TXNID 1453 /*! transaction: query timestamp calls */ -#define WT_STAT_CONN_TXN_QUERY_TS 1452 +#define WT_STAT_CONN_TXN_QUERY_TS 1454 /*! transaction: race to read prepared update retry */ -#define WT_STAT_CONN_TXN_READ_RACE_PREPARE_UPDATE 1453 +#define WT_STAT_CONN_TXN_READ_RACE_PREPARE_UPDATE 1455 /*! transaction: rollback to stable calls */ -#define WT_STAT_CONN_TXN_RTS 1454 +#define WT_STAT_CONN_TXN_RTS 1456 /*! * 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 1455 +#define WT_STAT_CONN_TXN_RTS_HS_STOP_OLDER_THAN_NEWER_START 1457 /*! transaction: rollback to stable inconsistent checkpoint */ -#define WT_STAT_CONN_TXN_RTS_INCONSISTENT_CKPT 1456 +#define WT_STAT_CONN_TXN_RTS_INCONSISTENT_CKPT 1458 /*! transaction: rollback to stable keys removed */ -#define WT_STAT_CONN_TXN_RTS_KEYS_REMOVED 1457 +#define WT_STAT_CONN_TXN_RTS_KEYS_REMOVED 1459 /*! transaction: rollback to stable keys restored */ -#define WT_STAT_CONN_TXN_RTS_KEYS_RESTORED 1458 +#define WT_STAT_CONN_TXN_RTS_KEYS_RESTORED 1460 /*! transaction: rollback to stable pages visited */ -#define WT_STAT_CONN_TXN_RTS_PAGES_VISITED 1459 +#define WT_STAT_CONN_TXN_RTS_PAGES_VISITED 1461 /*! transaction: rollback to stable restored tombstones from history store */ -#define WT_STAT_CONN_TXN_RTS_HS_RESTORE_TOMBSTONES 1460 +#define WT_STAT_CONN_TXN_RTS_HS_RESTORE_TOMBSTONES 1462 /*! transaction: rollback to stable restored updates from history store */ -#define WT_STAT_CONN_TXN_RTS_HS_RESTORE_UPDATES 1461 +#define WT_STAT_CONN_TXN_RTS_HS_RESTORE_UPDATES 1463 /*! transaction: rollback to stable skipping delete rle */ -#define WT_STAT_CONN_TXN_RTS_DELETE_RLE_SKIPPED 1462 +#define WT_STAT_CONN_TXN_RTS_DELETE_RLE_SKIPPED 1464 /*! transaction: rollback to stable skipping stable rle */ -#define WT_STAT_CONN_TXN_RTS_STABLE_RLE_SKIPPED 1463 +#define WT_STAT_CONN_TXN_RTS_STABLE_RLE_SKIPPED 1465 /*! transaction: rollback to stable sweeping history store keys */ -#define WT_STAT_CONN_TXN_RTS_SWEEP_HS_KEYS 1464 +#define WT_STAT_CONN_TXN_RTS_SWEEP_HS_KEYS 1466 /*! transaction: rollback to stable tree walk skipping pages */ -#define WT_STAT_CONN_TXN_RTS_TREE_WALK_SKIP_PAGES 1465 +#define WT_STAT_CONN_TXN_RTS_TREE_WALK_SKIP_PAGES 1467 /*! transaction: rollback to stable updates aborted */ -#define WT_STAT_CONN_TXN_RTS_UPD_ABORTED 1466 +#define WT_STAT_CONN_TXN_RTS_UPD_ABORTED 1468 /*! transaction: rollback to stable updates removed from history store */ -#define WT_STAT_CONN_TXN_RTS_HS_REMOVED 1467 +#define WT_STAT_CONN_TXN_RTS_HS_REMOVED 1469 /*! transaction: sessions scanned in each walk of concurrent sessions */ -#define WT_STAT_CONN_TXN_SESSIONS_WALKED 1468 +#define WT_STAT_CONN_TXN_SESSIONS_WALKED 1470 /*! transaction: set timestamp calls */ -#define WT_STAT_CONN_TXN_SET_TS 1469 +#define WT_STAT_CONN_TXN_SET_TS 1471 /*! transaction: set timestamp durable calls */ -#define WT_STAT_CONN_TXN_SET_TS_DURABLE 1470 +#define WT_STAT_CONN_TXN_SET_TS_DURABLE 1472 /*! transaction: set timestamp durable updates */ -#define WT_STAT_CONN_TXN_SET_TS_DURABLE_UPD 1471 +#define WT_STAT_CONN_TXN_SET_TS_DURABLE_UPD 1473 /*! transaction: set timestamp oldest calls */ -#define WT_STAT_CONN_TXN_SET_TS_OLDEST 1472 +#define WT_STAT_CONN_TXN_SET_TS_OLDEST 1474 /*! transaction: set timestamp oldest updates */ -#define WT_STAT_CONN_TXN_SET_TS_OLDEST_UPD 1473 +#define WT_STAT_CONN_TXN_SET_TS_OLDEST_UPD 1475 /*! transaction: set timestamp stable calls */ -#define WT_STAT_CONN_TXN_SET_TS_STABLE 1474 +#define WT_STAT_CONN_TXN_SET_TS_STABLE 1476 /*! transaction: set timestamp stable updates */ -#define WT_STAT_CONN_TXN_SET_TS_STABLE_UPD 1475 +#define WT_STAT_CONN_TXN_SET_TS_STABLE_UPD 1477 /*! transaction: transaction begins */ -#define WT_STAT_CONN_TXN_BEGIN 1476 +#define WT_STAT_CONN_TXN_BEGIN 1478 /*! transaction: transaction checkpoint currently running */ -#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1477 +#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1479 /*! * transaction: transaction checkpoint currently running for history * store file */ -#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING_HS 1478 +#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING_HS 1480 /*! transaction: transaction checkpoint generation */ -#define WT_STAT_CONN_TXN_CHECKPOINT_GENERATION 1479 +#define WT_STAT_CONN_TXN_CHECKPOINT_GENERATION 1481 /*! * transaction: transaction checkpoint history store file duration * (usecs) */ -#define WT_STAT_CONN_TXN_HS_CKPT_DURATION 1480 +#define WT_STAT_CONN_TXN_HS_CKPT_DURATION 1482 /*! transaction: transaction checkpoint max time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MAX 1481 +#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MAX 1483 /*! transaction: transaction checkpoint min time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MIN 1482 +#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MIN 1484 /*! * transaction: transaction checkpoint most recent duration for gathering * all handles (usecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION 1483 +#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION 1485 /*! * transaction: transaction checkpoint most recent duration for gathering * applied handles (usecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION_APPLY 1484 +#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION_APPLY 1486 /*! * transaction: transaction checkpoint most recent duration for gathering * skipped handles (usecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION_SKIP 1485 +#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION_SKIP 1487 /*! transaction: transaction checkpoint most recent handles applied */ -#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_APPLIED 1486 +#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_APPLIED 1488 /*! transaction: transaction checkpoint most recent handles skipped */ -#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_SKIPPED 1487 +#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_SKIPPED 1489 /*! transaction: transaction checkpoint most recent handles walked */ -#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_WALKED 1488 +#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_WALKED 1490 /*! transaction: transaction checkpoint most recent time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_RECENT 1489 +#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_RECENT 1491 /*! transaction: transaction checkpoint prepare currently running */ -#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RUNNING 1490 +#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RUNNING 1492 /*! transaction: transaction checkpoint prepare max time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MAX 1491 +#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MAX 1493 /*! transaction: transaction checkpoint prepare min time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MIN 1492 +#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MIN 1494 /*! transaction: transaction checkpoint prepare most recent time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RECENT 1493 +#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RECENT 1495 /*! transaction: transaction checkpoint prepare total time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_TOTAL 1494 +#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_TOTAL 1496 /*! transaction: transaction checkpoint scrub dirty target */ -#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TARGET 1495 +#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TARGET 1497 /*! transaction: transaction checkpoint scrub time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TIME 1496 +#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TIME 1498 /*! transaction: transaction checkpoint total time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_TOTAL 1497 +#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_TOTAL 1499 /*! transaction: transaction checkpoints */ -#define WT_STAT_CONN_TXN_CHECKPOINT 1498 +#define WT_STAT_CONN_TXN_CHECKPOINT 1500 /*! transaction: transaction checkpoints due to obsolete pages */ -#define WT_STAT_CONN_TXN_CHECKPOINT_OBSOLETE_APPLIED 1499 +#define WT_STAT_CONN_TXN_CHECKPOINT_OBSOLETE_APPLIED 1501 /*! * transaction: transaction checkpoints skipped because database was * clean */ -#define WT_STAT_CONN_TXN_CHECKPOINT_SKIPPED 1500 +#define WT_STAT_CONN_TXN_CHECKPOINT_SKIPPED 1502 /*! transaction: transaction failures due to history store */ -#define WT_STAT_CONN_TXN_FAIL_CACHE 1501 +#define WT_STAT_CONN_TXN_FAIL_CACHE 1503 /*! * transaction: transaction fsync calls for checkpoint after allocating * the transaction ID */ -#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST 1502 +#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST 1504 /*! * transaction: transaction fsync duration for checkpoint after * allocating the transaction ID (usecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST_DURATION 1503 +#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST_DURATION 1505 /*! transaction: transaction range of IDs currently pinned */ -#define WT_STAT_CONN_TXN_PINNED_RANGE 1504 +#define WT_STAT_CONN_TXN_PINNED_RANGE 1506 /*! transaction: transaction range of IDs currently pinned by a checkpoint */ -#define WT_STAT_CONN_TXN_PINNED_CHECKPOINT_RANGE 1505 +#define WT_STAT_CONN_TXN_PINNED_CHECKPOINT_RANGE 1507 /*! transaction: transaction range of timestamps currently pinned */ -#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP 1506 +#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP 1508 /*! transaction: transaction range of timestamps pinned by a checkpoint */ -#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_CHECKPOINT 1507 +#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_CHECKPOINT 1509 /*! * transaction: transaction range of timestamps pinned by the oldest * active read timestamp */ -#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_READER 1508 +#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_READER 1510 /*! * transaction: transaction range of timestamps pinned by the oldest * timestamp */ -#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_OLDEST 1509 +#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_OLDEST 1511 /*! transaction: transaction read timestamp of the oldest active reader */ -#define WT_STAT_CONN_TXN_TIMESTAMP_OLDEST_ACTIVE_READ 1510 +#define WT_STAT_CONN_TXN_TIMESTAMP_OLDEST_ACTIVE_READ 1512 /*! transaction: transaction rollback to stable currently running */ -#define WT_STAT_CONN_TXN_ROLLBACK_TO_STABLE_RUNNING 1511 +#define WT_STAT_CONN_TXN_ROLLBACK_TO_STABLE_RUNNING 1513 /*! transaction: transaction walk of concurrent sessions */ -#define WT_STAT_CONN_TXN_WALK_SESSIONS 1512 +#define WT_STAT_CONN_TXN_WALK_SESSIONS 1514 /*! transaction: transactions committed */ -#define WT_STAT_CONN_TXN_COMMIT 1513 +#define WT_STAT_CONN_TXN_COMMIT 1515 /*! transaction: transactions rolled back */ -#define WT_STAT_CONN_TXN_ROLLBACK 1514 +#define WT_STAT_CONN_TXN_ROLLBACK 1516 /*! transaction: update conflicts */ -#define WT_STAT_CONN_TXN_UPDATE_CONFLICT 1515 +#define WT_STAT_CONN_TXN_UPDATE_CONFLICT 1517 /*! * @} diff --git a/src/third_party/wiredtiger/src/reconcile/rec_write.c b/src/third_party/wiredtiger/src/reconcile/rec_write.c index d7269167a50..ea861779401 100644 --- a/src/third_party/wiredtiger/src/reconcile/rec_write.c +++ b/src/third_party/wiredtiger/src/reconcile/rec_write.c @@ -263,6 +263,13 @@ __reconcile(WT_SESSION_IMPL *session, WT_REF *ref, WT_SALVAGE_COOKIE *salvage, u */ /* + * Update the global history store score. Only use observations during eviction, not checkpoints + * and don't count eviction of the history store table itself. + */ + if (F_ISSET(r, WT_REC_EVICT) && !WT_IS_HS(btree->dhandle)) + __wt_cache_update_hs_score(session, r->updates_seen, r->updates_unstable); + + /* * If eviction didn't use any updates and didn't split or delete the page, it didn't make * progress. Give up rather than silently succeeding in doing no work: this way threads know to * back off forced eviction rather than spinning. diff --git a/src/third_party/wiredtiger/src/support/stat.c b/src/third_party/wiredtiger/src/support/stat.c index 547f6dd8158..7d9bd538f32 100644 --- a/src/third_party/wiredtiger/src/support/stat.c +++ b/src/third_party/wiredtiger/src/support/stat.c @@ -1106,6 +1106,7 @@ static const char *const __stats_connection_desc[] = { "cache: bytes not belonging to page images in the cache", "cache: bytes read into cache", "cache: bytes written from cache", + "cache: cache overflow score", "cache: checkpoint blocked page eviction", "cache: checkpoint of history store file blocked non-history store page eviction", "cache: eviction calls to get a page", @@ -1174,6 +1175,7 @@ static const char *const __stats_connection_desc[] = { "cache: hazard pointer check calls", "cache: hazard pointer check entries walked", "cache: hazard pointer maximum array length", + "cache: history store score", "cache: history store table insert calls", "cache: history store table insert calls that returned restart", "cache: history store table max on-disk size", @@ -1678,6 +1680,7 @@ __wt_stat_connection_clear_single(WT_CONNECTION_STATS *stats) /* not clearing cache_bytes_other */ stats->cache_bytes_read = 0; stats->cache_bytes_write = 0; + /* not clearing cache_lookaside_score */ stats->cache_eviction_checkpoint = 0; stats->cache_eviction_blocked_checkpoint_hs = 0; stats->cache_eviction_get_ref = 0; @@ -1739,6 +1742,7 @@ __wt_stat_connection_clear_single(WT_CONNECTION_STATS *stats) stats->cache_hazard_checks = 0; stats->cache_hazard_walks = 0; stats->cache_hazard_max = 0; + /* not clearing cache_hs_score */ stats->cache_hs_insert = 0; stats->cache_hs_insert_restart = 0; /* not clearing cache_hs_ondisk_max */ @@ -2210,6 +2214,7 @@ __wt_stat_connection_aggregate(WT_CONNECTION_STATS **from, WT_CONNECTION_STATS * to->cache_bytes_other += WT_STAT_READ(from, cache_bytes_other); to->cache_bytes_read += WT_STAT_READ(from, cache_bytes_read); to->cache_bytes_write += WT_STAT_READ(from, cache_bytes_write); + to->cache_lookaside_score += WT_STAT_READ(from, cache_lookaside_score); to->cache_eviction_checkpoint += WT_STAT_READ(from, cache_eviction_checkpoint); to->cache_eviction_blocked_checkpoint_hs += WT_STAT_READ(from, cache_eviction_blocked_checkpoint_hs); @@ -2285,6 +2290,7 @@ __wt_stat_connection_aggregate(WT_CONNECTION_STATS **from, WT_CONNECTION_STATS * to->cache_hazard_walks += WT_STAT_READ(from, cache_hazard_walks); if ((v = WT_STAT_READ(from, cache_hazard_max)) > to->cache_hazard_max) to->cache_hazard_max = v; + to->cache_hs_score += WT_STAT_READ(from, cache_hs_score); to->cache_hs_insert += WT_STAT_READ(from, cache_hs_insert); to->cache_hs_insert_restart += WT_STAT_READ(from, cache_hs_insert_restart); to->cache_hs_ondisk_max += WT_STAT_READ(from, cache_hs_ondisk_max); diff --git a/src/third_party/wiredtiger/test/suite/test_hs05.py b/src/third_party/wiredtiger/test/suite/test_hs05.py new file mode 100644 index 00000000000..4d59f909465 --- /dev/null +++ b/src/third_party/wiredtiger/test/suite/test_hs05.py @@ -0,0 +1,151 @@ +#!/usr/bin/env python +# +# Public Domain 2014-present MongoDB, Inc. +# Public Domain 2008-2014 WiredTiger, Inc. +# +# This is free and unencumbered software released into the public domain. +# +# Anyone is free to copy, modify, publish, use, compile, sell, or +# distribute this software, either in source code form or as a compiled +# binary, for any purpose, commercial or non-commercial, and by any +# means. +# +# In jurisdictions that recognize copyright laws, the author or authors +# of this software dedicate any and all copyright interest in the +# software to the public domain. We make this dedication for the benefit +# of the public at large and to the detriment of our heirs and +# successors. We intend this dedication to be an overt act of +# relinquishment in perpetuity of all present and future rights to this +# software under copyright law. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. + +import wttest +from wiredtiger import stat +from wtdataset import SimpleDataSet +from wtscenario import make_scenarios + +# test_hs05.py +# Verify hs_score reflects cache pressure due to history +# even if we're not yet actively pushing into the history store file. +class test_hs05(wttest.WiredTigerTestCase): + # Force a small cache, but disable eviction of dirty pages until the cache is full. + conn_config = 'cache_size=50MB,statistics=(fast),' + conn_config += 'eviction_trigger=100,' + conn_config += 'eviction_dirty_target=95,eviction_dirty_trigger=100,' + conn_config += 'eviction_updates_target=95,eviction_updates_trigger=100' + stable = 1 + format_values = [ + ('column', dict(key_format='r', value_format='u')), + ('column-fix', dict(key_format='r', value_format='8t')), + ('integer-row', dict(key_format='i', value_format='u')), + ('string-row', dict(key_format='S', value_format='u')) + ] + scenarios = make_scenarios(format_values) + + def get_stat(self, stat): + stat_cursor = self.session.open_cursor('statistics:') + val = stat_cursor[stat][2] + stat_cursor.close() + return val + + def large_updates(self, session, uri, value, ds, nrows, nops): + # Update a large number of records, we'll hang if the history store table + # isn't doing its thing. + cursor = session.open_cursor(uri) + score_start = self.get_stat(stat.conn.cache_hs_score) + for i in range(nrows + 1, nrows + nops + 1): + session.begin_transaction() + cursor[ds.key(i)] = value + session.commit_transaction('commit_timestamp=' + self.timestamp_str(self.stable + i)) + cursor.close() + score_end = self.get_stat(stat.conn.cache_hs_score) + score_diff = score_end - score_start + self.pr("After large updates score start: " + str(score_start)) + self.pr("After large updates score end: " + str(score_end)) + self.pr("After large updates history store score diff: " + str(score_diff)) + + def test_checkpoint_hs_reads(self): + # Create a small table. + uri = "table:test_hs05" + nrows = 100 + ds = SimpleDataSet(self, uri, nrows, key_format=self.key_format, value_format=self.value_format) + ds.populate() + + if self.value_format == '8t': + bigvalue = 97 + else: + bigvalue = b"aaaaa" * 100 + + # Initially load huge data. + # Add 10000 items that have a 500b value that is about 50Mb that + # is the entire cache. Then checkpoint so that none is required + # to stay in cache. + cursor = self.session.open_cursor(uri) + for i in range(1, 10000): + cursor[ds.key(nrows + i)] = bigvalue + cursor.close() + self.session.checkpoint() + + # Pin the oldest timestamp so that all history has to stay. + self.conn.set_timestamp('oldest_timestamp=' + self.timestamp_str(1)) + # Loop a couple times, partly filling the cache but not + # overfilling it to see the history store score value change + # even if the history store is not yet in use. + # + # Use smaller values, 50 bytes and fill 8 times, under full cache. + valstr='abcdefghijklmnopqrstuvwxyz' + loop_start = self.get_stat(stat.conn.cache_hs_score) + for i in range(1, 9): + if self.value_format == '8t': + bigvalue2 = 105 + i + else: + bigvalue2 = valstr[i].encode() * 50 + self.conn.set_timestamp('stable_timestamp=' + self.timestamp_str(self.stable)) + entries_start = self.get_stat(stat.conn.cache_hs_insert) + score_start = self.get_stat(stat.conn.cache_hs_score) + self.pr("Update iteration: " + str(i) + " Value: " + str(bigvalue2)) + self.pr("Update iteration: " + str(i) + " Score: " + str(score_start)) + self.large_updates(self.session, uri, bigvalue2, ds, nrows, nrows) + self.stable += nrows + score_end = self.get_stat(stat.conn.cache_hs_score) + entries_end = self.get_stat(stat.conn.cache_hs_insert) + # We expect to see the history store score increase but not writing + # any new entries to the history store. + self.assertGreaterEqual(score_end, score_start) + self.assertEqual(entries_end, entries_start) + + # While each iteration may or may not increase the score, we expect the + # score to have strictly increased from before the loop started. + loop_end = self.get_stat(stat.conn.cache_hs_score) + self.assertGreater(loop_end, loop_start) + + # Now move oldest timestamp forward and insert a couple large updates + # but we should see the score drop because we allowed the history to move. + # By moving the oldest after updating we should see the score drop + # to zero. + score_start = loop_end + self.conn.set_timestamp('stable_timestamp=' + self.timestamp_str(self.stable)) + self.conn.set_timestamp('oldest_timestamp=' + self.timestamp_str(self.stable)) + for i in range(9, 11): + if self.value_format == '8t': + bigvalue2 = 105 + i + else: + bigvalue2 = valstr[i].encode() * 50 + self.pr("Update iteration with oldest: " + str(i) + " Value: " + str(bigvalue2)) + self.large_updates(self.session, uri, bigvalue2, ds, nrows, nrows) + self.conn.set_timestamp('stable_timestamp=' + self.timestamp_str(self.stable)) + self.conn.set_timestamp('oldest_timestamp=' + self.timestamp_str(self.stable)) + self.stable += nrows + score_end = self.get_stat(stat.conn.cache_hs_score) + self.assertLess(score_end, score_start) + self.assertEqual(score_end, 0) + +if __name__ == '__main__': + wttest.run() |