diff options
author | Etienne Petrel <etienne.petrel@mongodb.com> | 2022-05-02 22:57:00 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-05-03 00:19:52 +0000 |
commit | bd073fd759459fd7eba6610bfba68308598c9953 (patch) | |
tree | b559b1c6312ca34a99d4654b7e8462cf2474b93d /src/third_party/wiredtiger | |
parent | 7eced17c3b5e1cf85284cf0f18bdc53d4bc97263 (diff) | |
download | mongo-bd073fd759459fd7eba6610bfba68308598c9953.tar.gz |
Import wiredtiger: f73ace80077f974162340b762cc6f2a92c31bcf4 from branch mongodb-master
ref: 90a43c0b68..f73ace8007
for: 6.1.0-rc0
WT-8707 Mongod reader yielding with WT::commit_transaction instead of rollback pins WT pages such that pages cannot be split/evicted by writer threads
Diffstat (limited to 'src/third_party/wiredtiger')
29 files changed, 943 insertions, 655 deletions
diff --git a/src/third_party/wiredtiger/dist/api_data.py b/src/third_party/wiredtiger/dist/api_data.py index dbf9ca584cd..982de7b99a1 100644 --- a/src/third_party/wiredtiger/dist/api_data.py +++ b/src/third_party/wiredtiger/dist/api_data.py @@ -838,7 +838,7 @@ connection_runtime_config = [ type='list', undoc=True, choices=[ 'aggressive_sweep', 'backup_rename', 'checkpoint_reserved_txnid_delay', 'checkpoint_slow', - 'compact_slow', 'failpoint_history_store_delete_key_from_ts', + 'compact_slow', 'evict_reposition', 'failpoint_history_store_delete_key_from_ts', 'history_store_checkpoint_delay', 'history_store_search', 'history_store_sweep_race', 'prepare_checkpoint_delay', 'split_1', 'split_2', 'split_3', 'split_4', 'split_5', 'split_6', 'split_7', 'tiered_flush_finish']), diff --git a/src/third_party/wiredtiger/dist/s_string.ok b/src/third_party/wiredtiger/dist/s_string.ok index d24dc2be5bc..bbc00e4a34e 100644 --- a/src/third_party/wiredtiger/dist/s_string.ok +++ b/src/third_party/wiredtiger/dist/s_string.ok @@ -1187,6 +1187,7 @@ nd needkey needvalue negint +neighboring nentries nentriesp newbar diff --git a/src/third_party/wiredtiger/dist/stat_data.py b/src/third_party/wiredtiger/dist/stat_data.py index 8cd75906d5f..1d4f153f14d 100644 --- a/src/third_party/wiredtiger/dist/stat_data.py +++ b/src/third_party/wiredtiger/dist/stat_data.py @@ -872,6 +872,8 @@ conn_dsrc_stats = [ CursorStat('cursor_prev_skip_ge_100', 'cursor prev calls that skip greater than or equal to 100 entries'), CursorStat('cursor_prev_skip_lt_100', 'cursor prev calls that skip less than 100 entries'), CursorStat('cursor_prev_skip_total', 'Total number of entries skipped by cursor prev calls'), + CursorStat('cursor_reposition', 'Total number of times cursor temporarily releases pinned page to encourage eviction of hot or large page'), + CursorStat('cursor_reposition_failed', 'Total number of times cursor fails to temporarily release pinned page to encourage eviction of hot or large page'), CursorStat('cursor_search_near_prefix_fast_paths', 'Total number of times a search near has exited due to prefix config'), CursorStat('cursor_skip_hs_cur_position', 'Total number of entries skipped to position the history store cursor'), ########################################## diff --git a/src/third_party/wiredtiger/import.data b/src/third_party/wiredtiger/import.data index 7a2e9e5c17e..51bb9159c87 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-master", - "commit": "90a43c0b6817da8dd8ad2712119709338a82201b" + "commit": "f73ace80077f974162340b762cc6f2a92c31bcf4" } diff --git a/src/third_party/wiredtiger/src/btree/bt_curnext.c b/src/third_party/wiredtiger/src/btree/bt_curnext.c index 252c08cefad..c617ffadf38 100644 --- a/src/third_party/wiredtiger/src/btree/bt_curnext.c +++ b/src/third_party/wiredtiger/src/btree/bt_curnext.c @@ -903,6 +903,10 @@ err: WT_TRET(__cursor_reset(cbt)); } F_CLR(cbt, WT_CBT_ITERATE_RETRY_PREV); + + if (ret == 0) + WT_RET(__wt_btcur_evict_reposition(cbt)); + return (ret); } diff --git a/src/third_party/wiredtiger/src/btree/bt_curprev.c b/src/third_party/wiredtiger/src/btree/bt_curprev.c index 11cf44bd784..4ab32c10a15 100644 --- a/src/third_party/wiredtiger/src/btree/bt_curprev.c +++ b/src/third_party/wiredtiger/src/btree/bt_curprev.c @@ -845,5 +845,9 @@ err: WT_TRET(__cursor_reset(cbt)); } F_CLR(cbt, WT_CBT_ITERATE_RETRY_NEXT); + + if (ret == 0) + WT_RET(__wt_btcur_evict_reposition(cbt)); + return (ret); } diff --git a/src/third_party/wiredtiger/src/btree/bt_cursor.c b/src/third_party/wiredtiger/src/btree/bt_cursor.c index a8876758e81..3204880d267 100644 --- a/src/third_party/wiredtiger/src/btree/bt_cursor.c +++ b/src/third_party/wiredtiger/src/btree/bt_cursor.c @@ -446,6 +446,60 @@ __cursor_restart(WT_SESSION_IMPL *session, uint64_t *yield_count, uint64_t *slee } /* + * __cursor_search_neighboring -- + * Try after the search key, then before. At low isolation levels, new records could appear as + * we are stepping through the tree. + */ +static int +__cursor_search_neighboring(WT_CURSOR_BTREE *cbt, WT_CURFILE_STATE *state, int *exact) +{ + WT_BTREE *btree; + WT_CURSOR *cursor; + WT_DECL_RET; + WT_SESSION_IMPL *session; + + btree = CUR2BT(cbt); + cursor = &cbt->iface; + session = CUR2S(cbt); + + while ((ret = __wt_btcur_next_prefix(cbt, &state->key, false)) != WT_NOTFOUND) { + WT_RET(ret); + if (btree->type == BTREE_ROW) + WT_RET(__wt_compare(session, btree->collator, &cursor->key, &state->key, exact)); + else + *exact = cbt->recno < state->recno ? -1 : cbt->recno == state->recno ? 0 : 1; + if (*exact >= 0) + return (ret); + } + + /* + * It is not necessary to go backwards when search_near is used with a prefix, as cursor row + * search places us on the first key of the prefix range. All the entries before the key we were + * placed on will not match the prefix. + * + * For example, if we search with the prefix "b", the cursor will be positioned at the first key + * starting with "b". All the entries before this one will start with "a", hence not matching + * the prefix. + */ + if (F_ISSET(cursor, WT_CURSTD_PREFIX_SEARCH)) + return (ret); + + /* + * We walked to the end of the tree without finding a match. Walk backwards instead. + */ + while ((ret = __wt_btcur_prev(cbt, false)) != WT_NOTFOUND) { + WT_RET(ret); + if (btree->type == BTREE_ROW) + WT_RET(__wt_compare(session, btree->collator, &cursor->key, &state->key, exact)); + else + *exact = cbt->recno < state->recno ? -1 : cbt->recno == state->recno ? 0 : 1; + if (*exact <= 0) + return (ret); + } + return (ret); +} + +/* * __wt_btcur_reset -- * Invalidate the cursor position. */ @@ -531,6 +585,73 @@ __wt_btcur_search_prepared(WT_CURSOR *cursor, WT_UPDATE **updp) } /* + * __cursor_reposition_timing_stress -- + * Optionally reposition the cursor 10% of times + */ +static inline bool +__cursor_reposition_timing_stress(WT_SESSION_IMPL *session) +{ + WT_CONNECTION_IMPL *conn; + + conn = S2C(session); + + if (FLD_ISSET(conn->timing_stress_flags, WT_TIMING_STRESS_EVICT_REPOSITION) && + __wt_random(&session->rnd) % 10 == 0) + return (true); + + return (false); +} + +/* + * __wt_btcur_evict_reposition -- + * Try to evict the page and reposition the cursor on the saved key. + */ +int +__wt_btcur_evict_reposition(WT_CURSOR_BTREE *cbt) +{ + WT_CURSOR *cursor; + WT_DECL_RET; + WT_SESSION_IMPL *session; + + cursor = &cbt->iface; + session = CUR2S(cbt); + + /* It's not always OK to release the cursor position */ + if (!F_ISSET(cursor, WT_CURSTD_EVICT_REPOSITION)) + return (0); + + /* + * Try to evict the page and then reposition the cursor back to the page for operations with + * snapshot isolation and for pages that require urgent eviction. Snapshot isolation level + * maintains a snapshot allowing the cursor to point at the correct value after a reposition + * unlike read committed isolation level. + */ + if (session->txn->isolation == WT_ISO_SNAPSHOT && F_ISSET(session->txn, WT_TXN_RUNNING) && + (__wt_page_evict_soon_check(session, cbt->ref, NULL) || + __cursor_reposition_timing_stress(session))) { + + WT_STAT_CONN_DATA_INCR(session, cursor_reposition); + WT_ERR(__wt_cursor_localkey(cursor)); + WT_ERR(__cursor_reset(cbt)); + WT_WITHOUT_EVICT_REPOSITION(ret = __wt_btcur_search(cbt)); + WT_ERR(ret); + } + +err: + if (ret != 0) { + WT_STAT_CONN_DATA_INCR(session, cursor_reposition_failed); + /* + * If we got a WT_ROLLBACK it is because there is a lot of cache pressure and the + * transaction is being killed - don't panic in that case. + */ + if (ret != WT_ROLLBACK) + WT_RET_PANIC(session, ret, "failed to reposition the cursor"); + } + + return (ret); +} + +/* * __wt_btcur_search -- * Search for a matching record in the tree. */ @@ -633,6 +754,9 @@ __wt_btcur_search(WT_CURSOR_BTREE *cbt) WT_ERR(__wt_cursor_key_order_init(cbt)); #endif + if (ret == 0) + WT_ERR(__wt_btcur_evict_reposition(cbt)); + err: if (ret != 0) { WT_TRET(__cursor_reset(cbt)); @@ -771,48 +895,14 @@ __wt_btcur_search_near(WT_CURSOR_BTREE *cbt, int *exactp) F_CLR(cursor, WT_CURSTD_KEY_SET | WT_CURSTD_VALUE_SET); F_SET(cursor, WT_CURSTD_KEY_INT | WT_CURSTD_VALUE_INT); } else { - /* - * We didn't find an exact match: try after the search key, then before. We have to loop - * here because at low isolation levels, new records could appear as we are stepping through - * the tree. - */ - while ((ret = __wt_btcur_next_prefix(cbt, &state.key, false)) != WT_NOTFOUND) { - WT_ERR(ret); - if (btree->type == BTREE_ROW) - WT_ERR(__wt_compare(session, btree->collator, &cursor->key, &state.key, &exact)); - else - exact = cbt->recno < state.recno ? -1 : cbt->recno == state.recno ? 0 : 1; - if (exact >= 0) - goto done; - } - - /* - * It is not necessary to go backwards when search_near is used with a prefix, as cursor row - * search places us on the first key of the prefix range. All the entries before the key we - * were placed on will not match the prefix. - * - * For example, if we search with the prefix "b", the cursor will be positioned at the first - * key starting with "b". All the entries before this one will start with "a", hence not - * matching the prefix. - */ - if (F_ISSET(cursor, WT_CURSTD_PREFIX_SEARCH)) - goto done; - - /* - * We walked to the end of the tree without finding a match. Walk backwards instead. - */ - while ((ret = __wt_btcur_prev(cbt, false)) != WT_NOTFOUND) { - WT_ERR(ret); - if (btree->type == BTREE_ROW) - WT_ERR(__wt_compare(session, btree->collator, &cursor->key, &state.key, &exact)); - else - exact = cbt->recno < state.recno ? -1 : cbt->recno == state.recno ? 0 : 1; - if (exact <= 0) - goto done; - } + /* We didn't find an exact match, try to find the nearest one. */ + WT_WITHOUT_EVICT_REPOSITION(ret = __cursor_search_neighboring(cbt, &state, &exact)); + WT_ERR(ret); } done: + if (ret == 0) + WT_ERR(__wt_btcur_evict_reposition(cbt)); err: if (ret == 0 && exactp != NULL) *exactp = exact; diff --git a/src/third_party/wiredtiger/src/config/config_def.c b/src/third_party/wiredtiger/src/config/config_def.c index 4890d54ba95..9b718e49d6b 100644 --- a/src/third_party/wiredtiger/src/config/config_def.c +++ b/src/third_party/wiredtiger/src/config/config_def.c @@ -155,7 +155,8 @@ static const WT_CONFIG_CHECK confchk_WT_CONNECTION_reconfigure[] = { {"timing_stress_for_test", "list", NULL, "choices=[\"aggressive_sweep\",\"backup_rename\"," "\"checkpoint_reserved_txnid_delay\",\"checkpoint_slow\"," - "\"compact_slow\",\"failpoint_history_store_delete_key_from_ts\"," + "\"compact_slow\",\"evict_reposition\"," + "\"failpoint_history_store_delete_key_from_ts\"," "\"history_store_checkpoint_delay\",\"history_store_search\"," "\"history_store_sweep_race\",\"prepare_checkpoint_delay\"," "\"split_1\",\"split_2\",\"split_3\",\"split_4\",\"split_5\"," @@ -892,7 +893,8 @@ static const WT_CONFIG_CHECK confchk_wiredtiger_open[] = { {"timing_stress_for_test", "list", NULL, "choices=[\"aggressive_sweep\",\"backup_rename\"," "\"checkpoint_reserved_txnid_delay\",\"checkpoint_slow\"," - "\"compact_slow\",\"failpoint_history_store_delete_key_from_ts\"," + "\"compact_slow\",\"evict_reposition\"," + "\"failpoint_history_store_delete_key_from_ts\"," "\"history_store_checkpoint_delay\",\"history_store_search\"," "\"history_store_sweep_race\",\"prepare_checkpoint_delay\"," "\"split_1\",\"split_2\",\"split_3\",\"split_4\",\"split_5\"," @@ -974,7 +976,8 @@ static const WT_CONFIG_CHECK confchk_wiredtiger_open_all[] = { {"timing_stress_for_test", "list", NULL, "choices=[\"aggressive_sweep\",\"backup_rename\"," "\"checkpoint_reserved_txnid_delay\",\"checkpoint_slow\"," - "\"compact_slow\",\"failpoint_history_store_delete_key_from_ts\"," + "\"compact_slow\",\"evict_reposition\"," + "\"failpoint_history_store_delete_key_from_ts\"," "\"history_store_checkpoint_delay\",\"history_store_search\"," "\"history_store_sweep_race\",\"prepare_checkpoint_delay\"," "\"split_1\",\"split_2\",\"split_3\",\"split_4\",\"split_5\"," @@ -1054,7 +1057,8 @@ static const WT_CONFIG_CHECK confchk_wiredtiger_open_basecfg[] = { {"timing_stress_for_test", "list", NULL, "choices=[\"aggressive_sweep\",\"backup_rename\"," "\"checkpoint_reserved_txnid_delay\",\"checkpoint_slow\"," - "\"compact_slow\",\"failpoint_history_store_delete_key_from_ts\"," + "\"compact_slow\",\"evict_reposition\"," + "\"failpoint_history_store_delete_key_from_ts\"," "\"history_store_checkpoint_delay\",\"history_store_search\"," "\"history_store_sweep_race\",\"prepare_checkpoint_delay\"," "\"split_1\",\"split_2\",\"split_3\",\"split_4\",\"split_5\"," @@ -1132,7 +1136,8 @@ static const WT_CONFIG_CHECK confchk_wiredtiger_open_usercfg[] = { {"timing_stress_for_test", "list", NULL, "choices=[\"aggressive_sweep\",\"backup_rename\"," "\"checkpoint_reserved_txnid_delay\",\"checkpoint_slow\"," - "\"compact_slow\",\"failpoint_history_store_delete_key_from_ts\"," + "\"compact_slow\",\"evict_reposition\"," + "\"failpoint_history_store_delete_key_from_ts\"," "\"history_store_checkpoint_delay\",\"history_store_search\"," "\"history_store_sweep_race\",\"prepare_checkpoint_delay\"," "\"split_1\",\"split_2\",\"split_3\",\"split_4\",\"split_5\"," diff --git a/src/third_party/wiredtiger/src/conn/conn_api.c b/src/third_party/wiredtiger/src/conn/conn_api.c index 799b199bfb2..96b785737d6 100644 --- a/src/third_party/wiredtiger/src/conn/conn_api.c +++ b/src/third_party/wiredtiger/src/conn/conn_api.c @@ -2243,6 +2243,7 @@ __wt_timing_stress_config(WT_SESSION_IMPL *session, const char *cfg[]) {"checkpoint_reserved_txnid_delay", WT_TIMING_STRESS_CHECKPOINT_RESERVED_TXNID_DELAY}, {"checkpoint_slow", WT_TIMING_STRESS_CHECKPOINT_SLOW}, {"compact_slow", WT_TIMING_STRESS_COMPACT_SLOW}, + {"evict_reposition", WT_TIMING_STRESS_EVICT_REPOSITION}, {"failpoint_history_delete_key_from_ts", WT_TIMING_STRESS_FAILPOINT_HISTORY_STORE_DELETE_KEY_FROM_TS}, {"history_store_checkpoint_delay", WT_TIMING_STRESS_HS_CHECKPOINT_DELAY}, diff --git a/src/third_party/wiredtiger/src/cursor/cur_file.c b/src/third_party/wiredtiger/src/cursor/cur_file.c index 310c8d4c442..58651522c1f 100644 --- a/src/third_party/wiredtiger/src/cursor/cur_file.c +++ b/src/third_party/wiredtiger/src/cursor/cur_file.c @@ -179,6 +179,7 @@ __curfile_next(WT_CURSOR *cursor) cbt = (WT_CURSOR_BTREE *)cursor; CURSOR_API_CALL(cursor, session, next, CUR2BT(cbt)); + CURSOR_REPOSITION_ENTER(cursor, session); WT_ERR(__cursor_copy_release(cursor)); WT_ERR(__curfile_check_cbt_txn(session, cbt)); @@ -192,6 +193,7 @@ __curfile_next(WT_CURSOR *cursor) F_MASK(cursor, WT_CURSTD_VALUE_SET) == WT_CURSTD_VALUE_INT); err: + CURSOR_REPOSITION_END(cursor, session); API_END_RET(session, ret); } @@ -238,6 +240,7 @@ __curfile_prev(WT_CURSOR *cursor) cbt = (WT_CURSOR_BTREE *)cursor; CURSOR_API_CALL(cursor, session, prev, CUR2BT(cbt)); + CURSOR_REPOSITION_ENTER(cursor, session); WT_ERR(__cursor_copy_release(cursor)); WT_ERR(__curfile_check_cbt_txn(session, cbt)); @@ -251,6 +254,7 @@ __curfile_prev(WT_CURSOR *cursor) F_MASK(cursor, WT_CURSTD_VALUE_SET) == WT_CURSTD_VALUE_INT); err: + CURSOR_REPOSITION_END(cursor, session); API_END_RET(session, ret); } @@ -294,6 +298,7 @@ __curfile_search(WT_CURSOR *cursor) cbt = (WT_CURSOR_BTREE *)cursor; CURSOR_API_CALL(cursor, session, search, CUR2BT(cbt)); + CURSOR_REPOSITION_ENTER(cursor, session); WT_ERR(__cursor_copy_release(cursor)); WT_ERR(__cursor_checkkey(cursor)); @@ -311,6 +316,7 @@ __curfile_search(WT_CURSOR *cursor) F_MASK(cursor, WT_CURSTD_VALUE_SET) == WT_CURSTD_VALUE_INT); err: + CURSOR_REPOSITION_END(cursor, session); API_END_RET(session, ret); } @@ -328,6 +334,7 @@ __curfile_search_near(WT_CURSOR *cursor, int *exact) cbt = (WT_CURSOR_BTREE *)cursor; CURSOR_API_CALL(cursor, session, search_near, CUR2BT(cbt)); + CURSOR_REPOSITION_ENTER(cursor, session); WT_ERR(__cursor_copy_release(cursor)); WT_ERR(__cursor_checkkey(cursor)); @@ -345,6 +352,7 @@ __curfile_search_near(WT_CURSOR *cursor, int *exact) F_MASK(cursor, WT_CURSTD_VALUE_SET) == WT_CURSTD_VALUE_INT); err: + CURSOR_REPOSITION_END(cursor, session); API_END_RET(session, ret); } diff --git a/src/third_party/wiredtiger/src/cursor/cur_hs.c b/src/third_party/wiredtiger/src/cursor/cur_hs.c index c6f0ba703d7..6c6796a3718 100644 --- a/src/third_party/wiredtiger/src/cursor/cur_hs.c +++ b/src/third_party/wiredtiger/src/cursor/cur_hs.c @@ -972,8 +972,10 @@ __curhs_insert(WT_CURSOR *cursor) #ifdef HAVE_DIAGNOSTIC /* Do a search again and call next to check the key order. */ ret = __curhs_file_cursor_search_near(session, file_cursor, &exact); - WT_ASSERT(session, ret == 0 && exact == 0); - WT_ERR_NOTFOUND_OK(__curhs_file_cursor_next(session, file_cursor), false); + WT_ASSERT(session, ret == 0); + /* FIXME: WT-9164 Figure out whether we need to assert exact. */ + if (exact == 0) + WT_ERR_NOTFOUND_OK(__curhs_file_cursor_next(session, file_cursor), false); #endif /* Insert doesn't maintain a position across calls, clear resources. */ diff --git a/src/third_party/wiredtiger/src/cursor/cur_table.c b/src/third_party/wiredtiger/src/cursor/cur_table.c index 0fe18bdfd3c..0f2e290938a 100644 --- a/src/third_party/wiredtiger/src/cursor/cur_table.c +++ b/src/third_party/wiredtiger/src/cursor/cur_table.c @@ -362,9 +362,11 @@ __curtable_next(WT_CURSOR *cursor) ctable = (WT_CURSOR_TABLE *)cursor; JOINABLE_CURSOR_API_CALL(cursor, session, next, NULL); + CURSOR_REPOSITION_ENTER(cursor, session); APPLY_CG(ctable, next); err: + CURSOR_REPOSITION_END(cursor, session); API_END_RET(session, ret); } @@ -415,9 +417,11 @@ __curtable_prev(WT_CURSOR *cursor) ctable = (WT_CURSOR_TABLE *)cursor; JOINABLE_CURSOR_API_CALL(cursor, session, prev, NULL); + CURSOR_REPOSITION_ENTER(cursor, session); APPLY_CG(ctable, prev); err: + CURSOR_REPOSITION_END(cursor, session); API_END_RET(session, ret); } @@ -453,9 +457,11 @@ __curtable_search(WT_CURSOR *cursor) ctable = (WT_CURSOR_TABLE *)cursor; JOINABLE_CURSOR_API_CALL(cursor, session, search, NULL); + CURSOR_REPOSITION_ENTER(cursor, session); APPLY_CG(ctable, search); err: + CURSOR_REPOSITION_END(cursor, session); API_END_RET(session, ret); } @@ -474,6 +480,8 @@ __curtable_search_near(WT_CURSOR *cursor, int *exact) ctable = (WT_CURSOR_TABLE *)cursor; JOINABLE_CURSOR_API_CALL(cursor, session, search_near, NULL); + CURSOR_REPOSITION_ENTER(cursor, session); + cp = ctable->cg_cursors; primary = *cp; WT_ERR(primary->search_near(primary, exact)); @@ -487,6 +495,7 @@ __curtable_search_near(WT_CURSOR *cursor, int *exact) } err: + CURSOR_REPOSITION_END(cursor, session); API_END_RET(session, ret); } diff --git a/src/third_party/wiredtiger/src/evict/evict_page.c b/src/third_party/wiredtiger/src/evict/evict_page.c index ea9e8f99b66..daca6ccf705 100644 --- a/src/third_party/wiredtiger/src/evict/evict_page.c +++ b/src/third_party/wiredtiger/src/evict/evict_page.c @@ -134,6 +134,9 @@ __wt_evict(WT_SESSION_IMPL *session, WT_REF *ref, uint8_t previous_state, uint32 */ time_start = 0; if (LF_ISSET(WT_EVICT_CALL_URGENT)) { + /* Set this page to be evicted as soon as possible. */ + __wt_page_evict_soon(session, ref); + time_start = __wt_clock(session); WT_STAT_CONN_INCR(session, cache_eviction_force); diff --git a/src/third_party/wiredtiger/src/include/api.h b/src/third_party/wiredtiger/src/include/api.h index 14b26fbfe14..c5958a2c6a0 100644 --- a/src/third_party/wiredtiger/src/include/api.h +++ b/src/third_party/wiredtiger/src/include/api.h @@ -275,3 +275,19 @@ TXN_API_END(s, ret, retry) #define CURSOR_UPDATE_API_END(s, ret) CURSOR_UPDATE_API_END_RETRY(s, ret, true) + +/* + * Calling certain top level APIs allows for internal repositioning of cursors to facilitate + * eviction of hot pages. These macros facilitate tracking when that is OK. + */ +#define CURSOR_REPOSITION_ENTER(c, s) \ + do { \ + if ((s)->api_call_counter == 1) \ + F_SET((c), WT_CURSTD_EVICT_REPOSITION); + +#define CURSOR_REPOSITION_END(c, s) \ + if ((s)->api_call_counter == 1) \ + F_CLR((c), WT_CURSTD_EVICT_REPOSITION); \ + } \ + while (0) \ + ; diff --git a/src/third_party/wiredtiger/src/include/btree_inline.h b/src/third_party/wiredtiger/src/include/btree_inline.h index 796bd93cf24..01e383fcbc0 100644 --- a/src/third_party/wiredtiger/src/include/btree_inline.h +++ b/src/third_party/wiredtiger/src/include/btree_inline.h @@ -92,6 +92,36 @@ __wt_page_is_empty(WT_PAGE *page) } /* + * __wt_page_evict_soon_check -- + * Check whether the page should be evicted urgently. + */ +static inline bool +__wt_page_evict_soon_check(WT_SESSION_IMPL *session, WT_REF *ref, bool *inmem_split) +{ + WT_BTREE *btree; + WT_PAGE *page; + + btree = S2BT(session); + page = ref->page; + + /* + * Attempt to evict pages with the special "oldest" read generation. This is set for pages that + * grow larger than the configured memory_page_max setting, when we see many deleted items, and + * when we are attempting to scan without trashing the cache. + * + * Checkpoint should not queue pages for urgent eviction if they require dirty eviction: there + * is a special exemption that allows checkpoint to evict dirty pages in a tree that is being + * checkpointed, and no other thread can help with that. Checkpoints don't rely on this code for + * dirty eviction: that is handled explicitly in __wt_sync_file. + */ + if (WT_READGEN_EVICT_SOON(page->read_gen) && btree->evict_disabled == 0 && + __wt_page_can_evict(session, ref, inmem_split) && + (!WT_SESSION_IS_CHECKPOINT(session) || __wt_page_evict_clean(page))) + return (true); + return (false); +} + +/* * __wt_page_evict_clean -- * Return if the page can be evicted without dirtying the tree. */ @@ -1777,7 +1807,6 @@ __wt_page_release(WT_SESSION_IMPL *session, WT_REF *ref, uint32_t flags) { WT_BTREE *btree; WT_DECL_RET; - WT_PAGE *page; bool inmem_split; btree = S2BT(session); @@ -1804,24 +1833,12 @@ __wt_page_release(WT_SESSION_IMPL *session, WT_REF *ref, uint32_t flags) return (0); } - /* - * Attempt to evict pages with the special "oldest" read generation. This is set for pages that - * grow larger than the configured memory_page_max setting, when we see many deleted items, and - * when we are attempting to scan without trashing the cache. - * - * Checkpoint should not queue pages for urgent eviction if they require dirty eviction: there - * is a special exemption that allows checkpoint to evict dirty pages in a tree that is being - * checkpointed, and no other thread can help with that. Checkpoints don't rely on this code for - * dirty eviction: that is handled explicitly in __wt_sync_file. - * - * If the operation has disabled eviction or splitting, or the session is preventing from - * reconciling, then just queue the page for urgent eviction. Otherwise, attempt to release and - * evict it. - */ - page = ref->page; - if (WT_READGEN_EVICT_SOON(page->read_gen) && btree->evict_disabled == 0 && - __wt_page_can_evict(session, ref, &inmem_split) && - (!WT_SESSION_IS_CHECKPOINT(session) || __wt_page_evict_clean(page))) { + if (__wt_page_evict_soon_check(session, ref, &inmem_split)) { + /* + * If the operation has disabled eviction or splitting, or the session is preventing from + * reconciling, then just queue the page for urgent eviction. Otherwise, attempt to release + * and evict it. + */ if (LF_ISSET(WT_READ_NO_EVICT) || (inmem_split ? LF_ISSET(WT_READ_NO_SPLIT) : F_ISSET(session, WT_SESSION_NO_RECONCILE))) WT_IGNORE_RET_BOOL(__wt_page_evict_urgent(session, ref)); diff --git a/src/third_party/wiredtiger/src/include/connection.h b/src/third_party/wiredtiger/src/include/connection.h index 161f066b8d5..804d816bcd2 100644 --- a/src/third_party/wiredtiger/src/include/connection.h +++ b/src/third_party/wiredtiger/src/include/connection.h @@ -582,19 +582,20 @@ struct __wt_connection_impl { #define WT_TIMING_STRESS_CHECKPOINT_RESERVED_TXNID_DELAY 0x00004u #define WT_TIMING_STRESS_CHECKPOINT_SLOW 0x00008u #define WT_TIMING_STRESS_COMPACT_SLOW 0x00010u -#define WT_TIMING_STRESS_FAILPOINT_HISTORY_STORE_DELETE_KEY_FROM_TS 0x00020u -#define WT_TIMING_STRESS_HS_CHECKPOINT_DELAY 0x00040u -#define WT_TIMING_STRESS_HS_SEARCH 0x00080u -#define WT_TIMING_STRESS_HS_SWEEP 0x00100u -#define WT_TIMING_STRESS_PREPARE_CHECKPOINT_DELAY 0x00200u -#define WT_TIMING_STRESS_SPLIT_1 0x00400u -#define WT_TIMING_STRESS_SPLIT_2 0x00800u -#define WT_TIMING_STRESS_SPLIT_3 0x01000u -#define WT_TIMING_STRESS_SPLIT_4 0x02000u -#define WT_TIMING_STRESS_SPLIT_5 0x04000u -#define WT_TIMING_STRESS_SPLIT_6 0x08000u -#define WT_TIMING_STRESS_SPLIT_7 0x10000u -#define WT_TIMING_STRESS_TIERED_FLUSH_FINISH 0x20000u +#define WT_TIMING_STRESS_EVICT_REPOSITION 0x00020u +#define WT_TIMING_STRESS_FAILPOINT_HISTORY_STORE_DELETE_KEY_FROM_TS 0x00040u +#define WT_TIMING_STRESS_HS_CHECKPOINT_DELAY 0x00080u +#define WT_TIMING_STRESS_HS_SEARCH 0x00100u +#define WT_TIMING_STRESS_HS_SWEEP 0x00200u +#define WT_TIMING_STRESS_PREPARE_CHECKPOINT_DELAY 0x00400u +#define WT_TIMING_STRESS_SPLIT_1 0x00800u +#define WT_TIMING_STRESS_SPLIT_2 0x01000u +#define WT_TIMING_STRESS_SPLIT_3 0x02000u +#define WT_TIMING_STRESS_SPLIT_4 0x04000u +#define WT_TIMING_STRESS_SPLIT_5 0x08000u +#define WT_TIMING_STRESS_SPLIT_6 0x10000u +#define WT_TIMING_STRESS_SPLIT_7 0x20000u +#define WT_TIMING_STRESS_TIERED_FLUSH_FINISH 0x40000u /* AUTOMATIC FLAG VALUE GENERATION STOP 64 */ uint64_t timing_stress_flags; diff --git a/src/third_party/wiredtiger/src/include/cursor.h b/src/third_party/wiredtiger/src/include/cursor.h index d51db10de8f..6d606de5cc2 100644 --- a/src/third_party/wiredtiger/src/include/cursor.h +++ b/src/third_party/wiredtiger/src/include/cursor.h @@ -35,6 +35,16 @@ 0 /* uint32_t flags */ \ } +/* Call a function without the evict reposition cursor flag, restore afterwards. */ +#define WT_WITHOUT_EVICT_REPOSITION(e) \ + do { \ + bool __evict_reposition_flag = F_ISSET(cursor, WT_CURSTD_EVICT_REPOSITION); \ + F_CLR(cursor, WT_CURSTD_EVICT_REPOSITION); \ + e; \ + if (__evict_reposition_flag) \ + F_SET(cursor, WT_CURSTD_EVICT_REPOSITION); \ + } while (0) + struct __wt_cursor_backup { WT_CURSOR iface; @@ -232,7 +242,7 @@ struct __wt_cursor_btree { /* AUTOMATIC FLAG VALUE GENERATION START 0 */ #define WT_CBT_ACTIVE 0x001u /* Active in the tree */ -#define WT_CBT_CACHEABLE_RLE_CELL 0x002u /* Col-store: value in RLE cell valid for all its keys */ +#define WT_CBT_CACHEABLE_RLE_CELL 0x002u /* Col-store: value in RLE cell valid for its keys */ #define WT_CBT_ITERATE_APPEND 0x004u /* Col-store: iterating append list */ #define WT_CBT_ITERATE_NEXT 0x008u /* Next iteration configuration */ #define WT_CBT_ITERATE_PREV 0x010u /* Prev iteration configuration */ diff --git a/src/third_party/wiredtiger/src/include/extern.h b/src/third_party/wiredtiger/src/include/extern.h index d83f3be685b..78c9962a4ae 100644 --- a/src/third_party/wiredtiger/src/include/extern.h +++ b/src/third_party/wiredtiger/src/include/extern.h @@ -262,6 +262,8 @@ extern int __wt_btcur_compare(WT_CURSOR_BTREE *a_arg, WT_CURSOR_BTREE *b_arg, in WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result)); extern int __wt_btcur_equals(WT_CURSOR_BTREE *a_arg, WT_CURSOR_BTREE *b_arg, int *equalp) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result)); +extern int __wt_btcur_evict_reposition(WT_CURSOR_BTREE *cbt) + WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result)); extern int __wt_btcur_insert(WT_CURSOR_BTREE *cbt) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result)); extern int __wt_btcur_insert_check(WT_CURSOR_BTREE *cbt) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result)); @@ -1964,6 +1966,8 @@ static inline bool __wt_page_evict_clean(WT_PAGE *page) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result)); static inline bool __wt_page_evict_retry(WT_SESSION_IMPL *session, WT_PAGE *page) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result)); +static inline bool __wt_page_evict_soon_check(WT_SESSION_IMPL *session, WT_REF *ref, + bool *inmem_split) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result)); static inline bool __wt_page_is_empty(WT_PAGE *page) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result)); static inline bool __wt_page_is_modified(WT_PAGE *page) diff --git a/src/third_party/wiredtiger/src/include/stat.h b/src/third_party/wiredtiger/src/include/stat.h index 91e5ae7f0f5..8c1281a984c 100644 --- a/src/third_party/wiredtiger/src/include/stat.h +++ b/src/third_party/wiredtiger/src/include/stat.h @@ -548,6 +548,8 @@ struct __wt_connection_stats { int64_t cursor_prev_skip_total; int64_t cursor_skip_hs_cur_position; int64_t cursor_search_near_prefix_fast_paths; + int64_t cursor_reposition_failed; + int64_t cursor_reposition; int64_t cursor_cached_count; int64_t cursor_insert_bulk; int64_t cursor_cache; @@ -1001,6 +1003,8 @@ struct __wt_dsrc_stats { int64_t cursor_prev_skip_total; int64_t cursor_skip_hs_cur_position; int64_t cursor_search_near_prefix_fast_paths; + int64_t cursor_reposition_failed; + int64_t cursor_reposition; int64_t cursor_insert_bulk; int64_t cursor_reopen; int64_t cursor_cache; diff --git a/src/third_party/wiredtiger/src/include/wiredtiger.in b/src/third_party/wiredtiger/src/include/wiredtiger.in index 668a6e0f3a7..2b01cffaa33 100644 --- a/src/third_party/wiredtiger/src/include/wiredtiger.in +++ b/src/third_party/wiredtiger/src/include/wiredtiger.in @@ -724,22 +724,23 @@ struct __wt_cursor { #define WT_CURSTD_DUMP_PRETTY 0x00000400u #define WT_CURSTD_DUMP_PRINT 0x00000800u #define WT_CURSTD_DUP_NO_VALUE 0x00001000u -#define WT_CURSTD_HS_READ_ALL 0x00002000u -#define WT_CURSTD_HS_READ_COMMITTED 0x00004000u -#define WT_CURSTD_IGNORE_TOMBSTONE 0x00008000u -#define WT_CURSTD_JOINED 0x00010000u -#define WT_CURSTD_KEY_EXT 0x00020000u /* Key points out of tree. */ -#define WT_CURSTD_KEY_INT 0x00040000u /* Key points into tree. */ -#define WT_CURSTD_KEY_ONLY 0x00080000u -#define WT_CURSTD_META_INUSE 0x00100000u -#define WT_CURSTD_OPEN 0x00200000u -#define WT_CURSTD_OVERWRITE 0x00400000u -#define WT_CURSTD_PREFIX_SEARCH 0x00800000u -#define WT_CURSTD_RAW 0x01000000u -#define WT_CURSTD_RAW_SEARCH 0x02000000u -#define WT_CURSTD_VALUE_EXT 0x04000000u /* Value points out of tree. */ -#define WT_CURSTD_VALUE_INT 0x08000000u /* Value points into tree. */ -#define WT_CURSTD_VERSION_CURSOR 0x10000000u /* Version cursor. */ +#define WT_CURSTD_EVICT_REPOSITION 0x00002000u +#define WT_CURSTD_HS_READ_ALL 0x00004000u +#define WT_CURSTD_HS_READ_COMMITTED 0x00008000u +#define WT_CURSTD_IGNORE_TOMBSTONE 0x00010000u +#define WT_CURSTD_JOINED 0x00020000u +#define WT_CURSTD_KEY_EXT 0x00040000u /* Key points out of tree. */ +#define WT_CURSTD_KEY_INT 0x00080000u /* Key points into tree. */ +#define WT_CURSTD_KEY_ONLY 0x00100000u +#define WT_CURSTD_META_INUSE 0x00200000u +#define WT_CURSTD_OPEN 0x00400000u +#define WT_CURSTD_OVERWRITE 0x00800000u +#define WT_CURSTD_PREFIX_SEARCH 0x01000000u +#define WT_CURSTD_RAW 0x02000000u +#define WT_CURSTD_RAW_SEARCH 0x04000000u +#define WT_CURSTD_VALUE_EXT 0x08000000u /* Value points out of tree. */ +#define WT_CURSTD_VALUE_INT 0x10000000u /* Value points into tree. */ +#define WT_CURSTD_VERSION_CURSOR 0x20000000u /* Version cursor. */ /* AUTOMATIC FLAG VALUE GENERATION STOP 32 */ #define WT_CURSTD_KEY_SET (WT_CURSTD_KEY_EXT | WT_CURSTD_KEY_INT) #define WT_CURSTD_VALUE_SET (WT_CURSTD_VALUE_EXT | WT_CURSTD_VALUE_INT) @@ -5692,724 +5693,734 @@ extern int wiredtiger_extension_terminate(WT_CONNECTION *connection); * config */ #define WT_STAT_CONN_CURSOR_SEARCH_NEAR_PREFIX_FAST_PATHS 1215 +/*! + * cursor: Total number of times cursor fails to temporarily release + * pinned page to encourage eviction of hot or large page + */ +#define WT_STAT_CONN_CURSOR_REPOSITION_FAILED 1216 +/*! + * cursor: Total number of times cursor temporarily releases pinned page + * to encourage eviction of hot or large page + */ +#define WT_STAT_CONN_CURSOR_REPOSITION 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 log remove time sleeping (usecs) */ -#define WT_STAT_CONN_LOG_FORCE_REMOVE_SLEEP 1291 +#define WT_STAT_CONN_LOG_FORCE_REMOVE_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 /*! thread-state: active filesystem fsync calls */ -#define WT_STAT_CONN_THREAD_FSYNC_ACTIVE 1424 +#define WT_STAT_CONN_THREAD_FSYNC_ACTIVE 1426 /*! thread-state: active filesystem read calls */ -#define WT_STAT_CONN_THREAD_READ_ACTIVE 1425 +#define WT_STAT_CONN_THREAD_READ_ACTIVE 1427 /*! thread-state: active filesystem write calls */ -#define WT_STAT_CONN_THREAD_WRITE_ACTIVE 1426 +#define WT_STAT_CONN_THREAD_WRITE_ACTIVE 1428 /*! thread-yield: application thread time evicting (usecs) */ -#define WT_STAT_CONN_APPLICATION_EVICT_TIME 1427 +#define WT_STAT_CONN_APPLICATION_EVICT_TIME 1429 /*! thread-yield: application thread time waiting for cache (usecs) */ -#define WT_STAT_CONN_APPLICATION_CACHE_TIME 1428 +#define WT_STAT_CONN_APPLICATION_CACHE_TIME 1430 /*! * thread-yield: connection close blocked waiting for transaction state * stabilization */ -#define WT_STAT_CONN_TXN_RELEASE_BLOCKED 1429 +#define WT_STAT_CONN_TXN_RELEASE_BLOCKED 1431 /*! thread-yield: connection close yielded for lsm manager shutdown */ -#define WT_STAT_CONN_CONN_CLOSE_BLOCKED_LSM 1430 +#define WT_STAT_CONN_CONN_CLOSE_BLOCKED_LSM 1432 /*! thread-yield: data handle lock yielded */ -#define WT_STAT_CONN_DHANDLE_LOCK_BLOCKED 1431 +#define WT_STAT_CONN_DHANDLE_LOCK_BLOCKED 1433 /*! * thread-yield: get reference for page index and slot time sleeping * (usecs) */ -#define WT_STAT_CONN_PAGE_INDEX_SLOT_REF_BLOCKED 1432 +#define WT_STAT_CONN_PAGE_INDEX_SLOT_REF_BLOCKED 1434 /*! thread-yield: page access yielded due to prepare state change */ -#define WT_STAT_CONN_PREPARED_TRANSITION_BLOCKED_PAGE 1433 +#define WT_STAT_CONN_PREPARED_TRANSITION_BLOCKED_PAGE 1435 /*! thread-yield: page acquire busy blocked */ -#define WT_STAT_CONN_PAGE_BUSY_BLOCKED 1434 +#define WT_STAT_CONN_PAGE_BUSY_BLOCKED 1436 /*! thread-yield: page acquire eviction blocked */ -#define WT_STAT_CONN_PAGE_FORCIBLE_EVICT_BLOCKED 1435 +#define WT_STAT_CONN_PAGE_FORCIBLE_EVICT_BLOCKED 1437 /*! thread-yield: page acquire locked blocked */ -#define WT_STAT_CONN_PAGE_LOCKED_BLOCKED 1436 +#define WT_STAT_CONN_PAGE_LOCKED_BLOCKED 1438 /*! thread-yield: page acquire read blocked */ -#define WT_STAT_CONN_PAGE_READ_BLOCKED 1437 +#define WT_STAT_CONN_PAGE_READ_BLOCKED 1439 /*! thread-yield: page acquire time sleeping (usecs) */ -#define WT_STAT_CONN_PAGE_SLEEP 1438 +#define WT_STAT_CONN_PAGE_SLEEP 1440 /*! * thread-yield: page delete rollback time sleeping for state change * (usecs) */ -#define WT_STAT_CONN_PAGE_DEL_ROLLBACK_BLOCKED 1439 +#define WT_STAT_CONN_PAGE_DEL_ROLLBACK_BLOCKED 1441 /*! thread-yield: page reconciliation yielded due to child modification */ -#define WT_STAT_CONN_CHILD_MODIFY_BLOCKED_PAGE 1440 +#define WT_STAT_CONN_CHILD_MODIFY_BLOCKED_PAGE 1442 /*! transaction: Number of prepared updates */ -#define WT_STAT_CONN_TXN_PREPARED_UPDATES 1441 +#define WT_STAT_CONN_TXN_PREPARED_UPDATES 1443 /*! transaction: Number of prepared updates committed */ -#define WT_STAT_CONN_TXN_PREPARED_UPDATES_COMMITTED 1442 +#define WT_STAT_CONN_TXN_PREPARED_UPDATES_COMMITTED 1444 /*! transaction: Number of prepared updates repeated on the same key */ -#define WT_STAT_CONN_TXN_PREPARED_UPDATES_KEY_REPEATED 1443 +#define WT_STAT_CONN_TXN_PREPARED_UPDATES_KEY_REPEATED 1445 /*! transaction: Number of prepared updates rolled back */ -#define WT_STAT_CONN_TXN_PREPARED_UPDATES_ROLLEDBACK 1444 +#define WT_STAT_CONN_TXN_PREPARED_UPDATES_ROLLEDBACK 1446 /*! transaction: prepared transactions */ -#define WT_STAT_CONN_TXN_PREPARE 1445 +#define WT_STAT_CONN_TXN_PREPARE 1447 /*! transaction: prepared transactions committed */ -#define WT_STAT_CONN_TXN_PREPARE_COMMIT 1446 +#define WT_STAT_CONN_TXN_PREPARE_COMMIT 1448 /*! transaction: prepared transactions currently active */ -#define WT_STAT_CONN_TXN_PREPARE_ACTIVE 1447 +#define WT_STAT_CONN_TXN_PREPARE_ACTIVE 1449 /*! transaction: prepared transactions rolled back */ -#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK 1448 +#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK 1450 /*! * transaction: prepared transactions rolled back and do not remove the * history store entry */ -#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK_DO_NOT_REMOVE_HS_UPDATE 1449 +#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK_DO_NOT_REMOVE_HS_UPDATE 1451 /*! * transaction: prepared transactions rolled back and fix the history * store entry with checkpoint reserved transaction id */ -#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK_FIX_HS_UPDATE_WITH_CKPT_RESERVED_TXNID 1450 +#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK_FIX_HS_UPDATE_WITH_CKPT_RESERVED_TXNID 1452 /*! transaction: query timestamp calls */ -#define WT_STAT_CONN_TXN_QUERY_TS 1451 +#define WT_STAT_CONN_TXN_QUERY_TS 1453 /*! transaction: race to read prepared update retry */ -#define WT_STAT_CONN_TXN_READ_RACE_PREPARE_UPDATE 1452 +#define WT_STAT_CONN_TXN_READ_RACE_PREPARE_UPDATE 1454 /*! transaction: rollback to stable calls */ -#define WT_STAT_CONN_TXN_RTS 1453 +#define WT_STAT_CONN_TXN_RTS 1455 /*! * transaction: rollback to stable history store records with stop * timestamps older than newer records */ -#define WT_STAT_CONN_TXN_RTS_HS_STOP_OLDER_THAN_NEWER_START 1454 +#define WT_STAT_CONN_TXN_RTS_HS_STOP_OLDER_THAN_NEWER_START 1456 /*! transaction: rollback to stable inconsistent checkpoint */ -#define WT_STAT_CONN_TXN_RTS_INCONSISTENT_CKPT 1455 +#define WT_STAT_CONN_TXN_RTS_INCONSISTENT_CKPT 1457 /*! transaction: rollback to stable keys removed */ -#define WT_STAT_CONN_TXN_RTS_KEYS_REMOVED 1456 +#define WT_STAT_CONN_TXN_RTS_KEYS_REMOVED 1458 /*! transaction: rollback to stable keys restored */ -#define WT_STAT_CONN_TXN_RTS_KEYS_RESTORED 1457 +#define WT_STAT_CONN_TXN_RTS_KEYS_RESTORED 1459 /*! transaction: rollback to stable pages visited */ -#define WT_STAT_CONN_TXN_RTS_PAGES_VISITED 1458 +#define WT_STAT_CONN_TXN_RTS_PAGES_VISITED 1460 /*! transaction: rollback to stable restored tombstones from history store */ -#define WT_STAT_CONN_TXN_RTS_HS_RESTORE_TOMBSTONES 1459 +#define WT_STAT_CONN_TXN_RTS_HS_RESTORE_TOMBSTONES 1461 /*! transaction: rollback to stable restored updates from history store */ -#define WT_STAT_CONN_TXN_RTS_HS_RESTORE_UPDATES 1460 +#define WT_STAT_CONN_TXN_RTS_HS_RESTORE_UPDATES 1462 /*! transaction: rollback to stable skipping delete rle */ -#define WT_STAT_CONN_TXN_RTS_DELETE_RLE_SKIPPED 1461 +#define WT_STAT_CONN_TXN_RTS_DELETE_RLE_SKIPPED 1463 /*! transaction: rollback to stable skipping stable rle */ -#define WT_STAT_CONN_TXN_RTS_STABLE_RLE_SKIPPED 1462 +#define WT_STAT_CONN_TXN_RTS_STABLE_RLE_SKIPPED 1464 /*! transaction: rollback to stable sweeping history store keys */ -#define WT_STAT_CONN_TXN_RTS_SWEEP_HS_KEYS 1463 +#define WT_STAT_CONN_TXN_RTS_SWEEP_HS_KEYS 1465 /*! transaction: rollback to stable tree walk skipping pages */ -#define WT_STAT_CONN_TXN_RTS_TREE_WALK_SKIP_PAGES 1464 +#define WT_STAT_CONN_TXN_RTS_TREE_WALK_SKIP_PAGES 1466 /*! transaction: rollback to stable updates aborted */ -#define WT_STAT_CONN_TXN_RTS_UPD_ABORTED 1465 +#define WT_STAT_CONN_TXN_RTS_UPD_ABORTED 1467 /*! transaction: rollback to stable updates removed from history store */ -#define WT_STAT_CONN_TXN_RTS_HS_REMOVED 1466 +#define WT_STAT_CONN_TXN_RTS_HS_REMOVED 1468 /*! transaction: sessions scanned in each walk of concurrent sessions */ -#define WT_STAT_CONN_TXN_SESSIONS_WALKED 1467 +#define WT_STAT_CONN_TXN_SESSIONS_WALKED 1469 /*! transaction: set timestamp calls */ -#define WT_STAT_CONN_TXN_SET_TS 1468 +#define WT_STAT_CONN_TXN_SET_TS 1470 /*! transaction: set timestamp durable calls */ -#define WT_STAT_CONN_TXN_SET_TS_DURABLE 1469 +#define WT_STAT_CONN_TXN_SET_TS_DURABLE 1471 /*! transaction: set timestamp durable updates */ -#define WT_STAT_CONN_TXN_SET_TS_DURABLE_UPD 1470 +#define WT_STAT_CONN_TXN_SET_TS_DURABLE_UPD 1472 /*! transaction: set timestamp oldest calls */ -#define WT_STAT_CONN_TXN_SET_TS_OLDEST 1471 +#define WT_STAT_CONN_TXN_SET_TS_OLDEST 1473 /*! transaction: set timestamp oldest updates */ -#define WT_STAT_CONN_TXN_SET_TS_OLDEST_UPD 1472 +#define WT_STAT_CONN_TXN_SET_TS_OLDEST_UPD 1474 /*! transaction: set timestamp stable calls */ -#define WT_STAT_CONN_TXN_SET_TS_STABLE 1473 +#define WT_STAT_CONN_TXN_SET_TS_STABLE 1475 /*! transaction: set timestamp stable updates */ -#define WT_STAT_CONN_TXN_SET_TS_STABLE_UPD 1474 +#define WT_STAT_CONN_TXN_SET_TS_STABLE_UPD 1476 /*! transaction: transaction begins */ -#define WT_STAT_CONN_TXN_BEGIN 1475 +#define WT_STAT_CONN_TXN_BEGIN 1477 /*! transaction: transaction checkpoint currently running */ -#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1476 +#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1478 /*! * transaction: transaction checkpoint currently running for history * store file */ -#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING_HS 1477 +#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING_HS 1479 /*! transaction: transaction checkpoint generation */ -#define WT_STAT_CONN_TXN_CHECKPOINT_GENERATION 1478 +#define WT_STAT_CONN_TXN_CHECKPOINT_GENERATION 1480 /*! * transaction: transaction checkpoint history store file duration * (usecs) */ -#define WT_STAT_CONN_TXN_HS_CKPT_DURATION 1479 +#define WT_STAT_CONN_TXN_HS_CKPT_DURATION 1481 /*! transaction: transaction checkpoint max time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MAX 1480 +#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MAX 1482 /*! transaction: transaction checkpoint min time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MIN 1481 +#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MIN 1483 /*! * transaction: transaction checkpoint most recent duration for gathering * all handles (usecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION 1482 +#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION 1484 /*! * transaction: transaction checkpoint most recent duration for gathering * applied handles (usecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION_APPLY 1483 +#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION_APPLY 1485 /*! * transaction: transaction checkpoint most recent duration for gathering * skipped handles (usecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION_SKIP 1484 +#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_DURATION_SKIP 1486 /*! transaction: transaction checkpoint most recent handles applied */ -#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_APPLIED 1485 +#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_APPLIED 1487 /*! transaction: transaction checkpoint most recent handles skipped */ -#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_SKIPPED 1486 +#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_SKIPPED 1488 /*! transaction: transaction checkpoint most recent handles walked */ -#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_WALKED 1487 +#define WT_STAT_CONN_TXN_CHECKPOINT_HANDLE_WALKED 1489 /*! transaction: transaction checkpoint most recent time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_RECENT 1488 +#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_RECENT 1490 /*! transaction: transaction checkpoint prepare currently running */ -#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RUNNING 1489 +#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RUNNING 1491 /*! transaction: transaction checkpoint prepare max time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MAX 1490 +#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MAX 1492 /*! transaction: transaction checkpoint prepare min time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MIN 1491 +#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MIN 1493 /*! transaction: transaction checkpoint prepare most recent time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RECENT 1492 +#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RECENT 1494 /*! transaction: transaction checkpoint prepare total time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_TOTAL 1493 +#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_TOTAL 1495 /*! transaction: transaction checkpoint scrub dirty target */ -#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TARGET 1494 +#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TARGET 1496 /*! transaction: transaction checkpoint scrub time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TIME 1495 +#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TIME 1497 /*! transaction: transaction checkpoint total time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_TOTAL 1496 +#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_TOTAL 1498 /*! transaction: transaction checkpoints */ -#define WT_STAT_CONN_TXN_CHECKPOINT 1497 +#define WT_STAT_CONN_TXN_CHECKPOINT 1499 /*! transaction: transaction checkpoints due to obsolete pages */ -#define WT_STAT_CONN_TXN_CHECKPOINT_OBSOLETE_APPLIED 1498 +#define WT_STAT_CONN_TXN_CHECKPOINT_OBSOLETE_APPLIED 1500 /*! * transaction: transaction checkpoints skipped because database was * clean */ -#define WT_STAT_CONN_TXN_CHECKPOINT_SKIPPED 1499 +#define WT_STAT_CONN_TXN_CHECKPOINT_SKIPPED 1501 /*! transaction: transaction failures due to history store */ -#define WT_STAT_CONN_TXN_FAIL_CACHE 1500 +#define WT_STAT_CONN_TXN_FAIL_CACHE 1502 /*! * transaction: transaction fsync calls for checkpoint after allocating * the transaction ID */ -#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST 1501 +#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST 1503 /*! * transaction: transaction fsync duration for checkpoint after * allocating the transaction ID (usecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST_DURATION 1502 +#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST_DURATION 1504 /*! transaction: transaction range of IDs currently pinned */ -#define WT_STAT_CONN_TXN_PINNED_RANGE 1503 +#define WT_STAT_CONN_TXN_PINNED_RANGE 1505 /*! transaction: transaction range of IDs currently pinned by a checkpoint */ -#define WT_STAT_CONN_TXN_PINNED_CHECKPOINT_RANGE 1504 +#define WT_STAT_CONN_TXN_PINNED_CHECKPOINT_RANGE 1506 /*! transaction: transaction range of timestamps currently pinned */ -#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP 1505 +#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP 1507 /*! transaction: transaction range of timestamps pinned by a checkpoint */ -#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_CHECKPOINT 1506 +#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_CHECKPOINT 1508 /*! * transaction: transaction range of timestamps pinned by the oldest * active read timestamp */ -#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_READER 1507 +#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_READER 1509 /*! * transaction: transaction range of timestamps pinned by the oldest * timestamp */ -#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_OLDEST 1508 +#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_OLDEST 1510 /*! transaction: transaction read timestamp of the oldest active reader */ -#define WT_STAT_CONN_TXN_TIMESTAMP_OLDEST_ACTIVE_READ 1509 +#define WT_STAT_CONN_TXN_TIMESTAMP_OLDEST_ACTIVE_READ 1511 /*! transaction: transaction rollback to stable currently running */ -#define WT_STAT_CONN_TXN_ROLLBACK_TO_STABLE_RUNNING 1510 +#define WT_STAT_CONN_TXN_ROLLBACK_TO_STABLE_RUNNING 1512 /*! transaction: transaction walk of concurrent sessions */ -#define WT_STAT_CONN_TXN_WALK_SESSIONS 1511 +#define WT_STAT_CONN_TXN_WALK_SESSIONS 1513 /*! transaction: transactions committed */ -#define WT_STAT_CONN_TXN_COMMIT 1512 +#define WT_STAT_CONN_TXN_COMMIT 1514 /*! transaction: transactions rolled back */ -#define WT_STAT_CONN_TXN_ROLLBACK 1513 +#define WT_STAT_CONN_TXN_ROLLBACK 1515 /*! transaction: update conflicts */ -#define WT_STAT_CONN_TXN_UPDATE_CONFLICT 1514 +#define WT_STAT_CONN_TXN_UPDATE_CONFLICT 1516 /*! * @} @@ -6868,217 +6879,227 @@ extern int wiredtiger_extension_terminate(WT_CONNECTION *connection); * config */ #define WT_STAT_DSRC_CURSOR_SEARCH_NEAR_PREFIX_FAST_PATHS 2146 +/*! + * cursor: Total number of times cursor fails to temporarily release + * pinned page to encourage eviction of hot or large page + */ +#define WT_STAT_DSRC_CURSOR_REPOSITION_FAILED 2147 +/*! + * cursor: Total number of times cursor temporarily releases pinned page + * to encourage eviction of hot or large page + */ +#define WT_STAT_DSRC_CURSOR_REPOSITION 2148 /*! cursor: bulk loaded cursor insert calls */ -#define WT_STAT_DSRC_CURSOR_INSERT_BULK 2147 +#define WT_STAT_DSRC_CURSOR_INSERT_BULK 2149 /*! cursor: cache cursors reuse count */ -#define WT_STAT_DSRC_CURSOR_REOPEN 2148 +#define WT_STAT_DSRC_CURSOR_REOPEN 2150 /*! cursor: close calls that result in cache */ -#define WT_STAT_DSRC_CURSOR_CACHE 2149 +#define WT_STAT_DSRC_CURSOR_CACHE 2151 /*! cursor: create calls */ -#define WT_STAT_DSRC_CURSOR_CREATE 2150 +#define WT_STAT_DSRC_CURSOR_CREATE 2152 /*! * cursor: cursor next calls that skip due to a globally visible history * store tombstone */ -#define WT_STAT_DSRC_CURSOR_NEXT_HS_TOMBSTONE 2151 +#define WT_STAT_DSRC_CURSOR_NEXT_HS_TOMBSTONE 2153 /*! * cursor: cursor next calls that skip greater than or equal to 100 * entries */ -#define WT_STAT_DSRC_CURSOR_NEXT_SKIP_GE_100 2152 +#define WT_STAT_DSRC_CURSOR_NEXT_SKIP_GE_100 2154 /*! cursor: cursor next calls that skip less than 100 entries */ -#define WT_STAT_DSRC_CURSOR_NEXT_SKIP_LT_100 2153 +#define WT_STAT_DSRC_CURSOR_NEXT_SKIP_LT_100 2155 /*! * cursor: cursor prev calls that skip due to a globally visible history * store tombstone */ -#define WT_STAT_DSRC_CURSOR_PREV_HS_TOMBSTONE 2154 +#define WT_STAT_DSRC_CURSOR_PREV_HS_TOMBSTONE 2156 /*! * cursor: cursor prev calls that skip greater than or equal to 100 * entries */ -#define WT_STAT_DSRC_CURSOR_PREV_SKIP_GE_100 2155 +#define WT_STAT_DSRC_CURSOR_PREV_SKIP_GE_100 2157 /*! cursor: cursor prev calls that skip less than 100 entries */ -#define WT_STAT_DSRC_CURSOR_PREV_SKIP_LT_100 2156 +#define WT_STAT_DSRC_CURSOR_PREV_SKIP_LT_100 2158 /*! cursor: insert calls */ -#define WT_STAT_DSRC_CURSOR_INSERT 2157 +#define WT_STAT_DSRC_CURSOR_INSERT 2159 /*! cursor: insert key and value bytes */ -#define WT_STAT_DSRC_CURSOR_INSERT_BYTES 2158 +#define WT_STAT_DSRC_CURSOR_INSERT_BYTES 2160 /*! cursor: modify */ -#define WT_STAT_DSRC_CURSOR_MODIFY 2159 +#define WT_STAT_DSRC_CURSOR_MODIFY 2161 /*! cursor: modify key and value bytes affected */ -#define WT_STAT_DSRC_CURSOR_MODIFY_BYTES 2160 +#define WT_STAT_DSRC_CURSOR_MODIFY_BYTES 2162 /*! cursor: modify value bytes modified */ -#define WT_STAT_DSRC_CURSOR_MODIFY_BYTES_TOUCH 2161 +#define WT_STAT_DSRC_CURSOR_MODIFY_BYTES_TOUCH 2163 /*! cursor: next calls */ -#define WT_STAT_DSRC_CURSOR_NEXT 2162 +#define WT_STAT_DSRC_CURSOR_NEXT 2164 /*! cursor: open cursor count */ -#define WT_STAT_DSRC_CURSOR_OPEN_COUNT 2163 +#define WT_STAT_DSRC_CURSOR_OPEN_COUNT 2165 /*! cursor: operation restarted */ -#define WT_STAT_DSRC_CURSOR_RESTART 2164 +#define WT_STAT_DSRC_CURSOR_RESTART 2166 /*! cursor: prev calls */ -#define WT_STAT_DSRC_CURSOR_PREV 2165 +#define WT_STAT_DSRC_CURSOR_PREV 2167 /*! cursor: remove calls */ -#define WT_STAT_DSRC_CURSOR_REMOVE 2166 +#define WT_STAT_DSRC_CURSOR_REMOVE 2168 /*! cursor: remove key bytes removed */ -#define WT_STAT_DSRC_CURSOR_REMOVE_BYTES 2167 +#define WT_STAT_DSRC_CURSOR_REMOVE_BYTES 2169 /*! cursor: reserve calls */ -#define WT_STAT_DSRC_CURSOR_RESERVE 2168 +#define WT_STAT_DSRC_CURSOR_RESERVE 2170 /*! cursor: reset calls */ -#define WT_STAT_DSRC_CURSOR_RESET 2169 +#define WT_STAT_DSRC_CURSOR_RESET 2171 /*! cursor: search calls */ -#define WT_STAT_DSRC_CURSOR_SEARCH 2170 +#define WT_STAT_DSRC_CURSOR_SEARCH 2172 /*! cursor: search history store calls */ -#define WT_STAT_DSRC_CURSOR_SEARCH_HS 2171 +#define WT_STAT_DSRC_CURSOR_SEARCH_HS 2173 /*! cursor: search near calls */ -#define WT_STAT_DSRC_CURSOR_SEARCH_NEAR 2172 +#define WT_STAT_DSRC_CURSOR_SEARCH_NEAR 2174 /*! cursor: truncate calls */ -#define WT_STAT_DSRC_CURSOR_TRUNCATE 2173 +#define WT_STAT_DSRC_CURSOR_TRUNCATE 2175 /*! cursor: update calls */ -#define WT_STAT_DSRC_CURSOR_UPDATE 2174 +#define WT_STAT_DSRC_CURSOR_UPDATE 2176 /*! cursor: update key and value bytes */ -#define WT_STAT_DSRC_CURSOR_UPDATE_BYTES 2175 +#define WT_STAT_DSRC_CURSOR_UPDATE_BYTES 2177 /*! cursor: update value size change */ -#define WT_STAT_DSRC_CURSOR_UPDATE_BYTES_CHANGED 2176 +#define WT_STAT_DSRC_CURSOR_UPDATE_BYTES_CHANGED 2178 /*! reconciliation: approximate byte size of timestamps in pages written */ -#define WT_STAT_DSRC_REC_TIME_WINDOW_BYTES_TS 2177 +#define WT_STAT_DSRC_REC_TIME_WINDOW_BYTES_TS 2179 /*! * reconciliation: approximate byte size of transaction IDs in pages * written */ -#define WT_STAT_DSRC_REC_TIME_WINDOW_BYTES_TXN 2178 +#define WT_STAT_DSRC_REC_TIME_WINDOW_BYTES_TXN 2180 /*! reconciliation: dictionary matches */ -#define WT_STAT_DSRC_REC_DICTIONARY 2179 +#define WT_STAT_DSRC_REC_DICTIONARY 2181 /*! reconciliation: fast-path pages deleted */ -#define WT_STAT_DSRC_REC_PAGE_DELETE_FAST 2180 +#define WT_STAT_DSRC_REC_PAGE_DELETE_FAST 2182 /*! * reconciliation: internal page key bytes discarded using suffix * compression */ -#define WT_STAT_DSRC_REC_SUFFIX_COMPRESSION 2181 +#define WT_STAT_DSRC_REC_SUFFIX_COMPRESSION 2183 /*! reconciliation: internal page multi-block writes */ -#define WT_STAT_DSRC_REC_MULTIBLOCK_INTERNAL 2182 +#define WT_STAT_DSRC_REC_MULTIBLOCK_INTERNAL 2184 /*! reconciliation: leaf page key bytes discarded using prefix compression */ -#define WT_STAT_DSRC_REC_PREFIX_COMPRESSION 2183 +#define WT_STAT_DSRC_REC_PREFIX_COMPRESSION 2185 /*! reconciliation: leaf page multi-block writes */ -#define WT_STAT_DSRC_REC_MULTIBLOCK_LEAF 2184 +#define WT_STAT_DSRC_REC_MULTIBLOCK_LEAF 2186 /*! reconciliation: leaf-page overflow keys */ -#define WT_STAT_DSRC_REC_OVERFLOW_KEY_LEAF 2185 +#define WT_STAT_DSRC_REC_OVERFLOW_KEY_LEAF 2187 /*! reconciliation: maximum blocks required for a page */ -#define WT_STAT_DSRC_REC_MULTIBLOCK_MAX 2186 +#define WT_STAT_DSRC_REC_MULTIBLOCK_MAX 2188 /*! reconciliation: overflow values written */ -#define WT_STAT_DSRC_REC_OVERFLOW_VALUE 2187 +#define WT_STAT_DSRC_REC_OVERFLOW_VALUE 2189 /*! reconciliation: page checksum matches */ -#define WT_STAT_DSRC_REC_PAGE_MATCH 2188 +#define WT_STAT_DSRC_REC_PAGE_MATCH 2190 /*! reconciliation: page reconciliation calls */ -#define WT_STAT_DSRC_REC_PAGES 2189 +#define WT_STAT_DSRC_REC_PAGES 2191 /*! reconciliation: page reconciliation calls for eviction */ -#define WT_STAT_DSRC_REC_PAGES_EVICTION 2190 +#define WT_STAT_DSRC_REC_PAGES_EVICTION 2192 /*! reconciliation: pages deleted */ -#define WT_STAT_DSRC_REC_PAGE_DELETE 2191 +#define WT_STAT_DSRC_REC_PAGE_DELETE 2193 /*! * reconciliation: pages written including an aggregated newest start * durable timestamp */ -#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_START_DURABLE_TS 2192 +#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_START_DURABLE_TS 2194 /*! * reconciliation: pages written including an aggregated newest stop * durable timestamp */ -#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_STOP_DURABLE_TS 2193 +#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_STOP_DURABLE_TS 2195 /*! * reconciliation: pages written including an aggregated newest stop * timestamp */ -#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_STOP_TS 2194 +#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_STOP_TS 2196 /*! * reconciliation: pages written including an aggregated newest stop * transaction ID */ -#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_STOP_TXN 2195 +#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_STOP_TXN 2197 /*! * reconciliation: pages written including an aggregated newest * transaction ID */ -#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_TXN 2196 +#define WT_STAT_DSRC_REC_TIME_AGGR_NEWEST_TXN 2198 /*! * reconciliation: pages written including an aggregated oldest start * timestamp */ -#define WT_STAT_DSRC_REC_TIME_AGGR_OLDEST_START_TS 2197 +#define WT_STAT_DSRC_REC_TIME_AGGR_OLDEST_START_TS 2199 /*! reconciliation: pages written including an aggregated prepare */ -#define WT_STAT_DSRC_REC_TIME_AGGR_PREPARED 2198 +#define WT_STAT_DSRC_REC_TIME_AGGR_PREPARED 2200 /*! reconciliation: pages written including at least one prepare */ -#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_PREPARED 2199 +#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_PREPARED 2201 /*! * reconciliation: pages written including at least one start durable * timestamp */ -#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_DURABLE_START_TS 2200 +#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_DURABLE_START_TS 2202 /*! reconciliation: pages written including at least one start timestamp */ -#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_START_TS 2201 +#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_START_TS 2203 /*! * reconciliation: pages written including at least one start transaction * ID */ -#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_START_TXN 2202 +#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_START_TXN 2204 /*! * reconciliation: pages written including at least one stop durable * timestamp */ -#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_DURABLE_STOP_TS 2203 +#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_DURABLE_STOP_TS 2205 /*! reconciliation: pages written including at least one stop timestamp */ -#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_STOP_TS 2204 +#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_STOP_TS 2206 /*! * reconciliation: pages written including at least one stop transaction * ID */ -#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_STOP_TXN 2205 +#define WT_STAT_DSRC_REC_TIME_WINDOW_PAGES_STOP_TXN 2207 /*! reconciliation: records written including a prepare */ -#define WT_STAT_DSRC_REC_TIME_WINDOW_PREPARED 2206 +#define WT_STAT_DSRC_REC_TIME_WINDOW_PREPARED 2208 /*! reconciliation: records written including a start durable timestamp */ -#define WT_STAT_DSRC_REC_TIME_WINDOW_DURABLE_START_TS 2207 +#define WT_STAT_DSRC_REC_TIME_WINDOW_DURABLE_START_TS 2209 /*! reconciliation: records written including a start timestamp */ -#define WT_STAT_DSRC_REC_TIME_WINDOW_START_TS 2208 +#define WT_STAT_DSRC_REC_TIME_WINDOW_START_TS 2210 /*! reconciliation: records written including a start transaction ID */ -#define WT_STAT_DSRC_REC_TIME_WINDOW_START_TXN 2209 +#define WT_STAT_DSRC_REC_TIME_WINDOW_START_TXN 2211 /*! reconciliation: records written including a stop durable timestamp */ -#define WT_STAT_DSRC_REC_TIME_WINDOW_DURABLE_STOP_TS 2210 +#define WT_STAT_DSRC_REC_TIME_WINDOW_DURABLE_STOP_TS 2212 /*! reconciliation: records written including a stop timestamp */ -#define WT_STAT_DSRC_REC_TIME_WINDOW_STOP_TS 2211 +#define WT_STAT_DSRC_REC_TIME_WINDOW_STOP_TS 2213 /*! reconciliation: records written including a stop transaction ID */ -#define WT_STAT_DSRC_REC_TIME_WINDOW_STOP_TXN 2212 +#define WT_STAT_DSRC_REC_TIME_WINDOW_STOP_TXN 2214 /*! session: object compaction */ -#define WT_STAT_DSRC_SESSION_COMPACT 2213 +#define WT_STAT_DSRC_SESSION_COMPACT 2215 /*! transaction: race to read prepared update retry */ -#define WT_STAT_DSRC_TXN_READ_RACE_PREPARE_UPDATE 2214 +#define WT_STAT_DSRC_TXN_READ_RACE_PREPARE_UPDATE 2216 /*! * transaction: rollback to stable history store records with stop * timestamps older than newer records */ -#define WT_STAT_DSRC_TXN_RTS_HS_STOP_OLDER_THAN_NEWER_START 2215 +#define WT_STAT_DSRC_TXN_RTS_HS_STOP_OLDER_THAN_NEWER_START 2217 /*! transaction: rollback to stable inconsistent checkpoint */ -#define WT_STAT_DSRC_TXN_RTS_INCONSISTENT_CKPT 2216 +#define WT_STAT_DSRC_TXN_RTS_INCONSISTENT_CKPT 2218 /*! transaction: rollback to stable keys removed */ -#define WT_STAT_DSRC_TXN_RTS_KEYS_REMOVED 2217 +#define WT_STAT_DSRC_TXN_RTS_KEYS_REMOVED 2219 /*! transaction: rollback to stable keys restored */ -#define WT_STAT_DSRC_TXN_RTS_KEYS_RESTORED 2218 +#define WT_STAT_DSRC_TXN_RTS_KEYS_RESTORED 2220 /*! transaction: rollback to stable restored tombstones from history store */ -#define WT_STAT_DSRC_TXN_RTS_HS_RESTORE_TOMBSTONES 2219 +#define WT_STAT_DSRC_TXN_RTS_HS_RESTORE_TOMBSTONES 2221 /*! transaction: rollback to stable restored updates from history store */ -#define WT_STAT_DSRC_TXN_RTS_HS_RESTORE_UPDATES 2220 +#define WT_STAT_DSRC_TXN_RTS_HS_RESTORE_UPDATES 2222 /*! transaction: rollback to stable skipping delete rle */ -#define WT_STAT_DSRC_TXN_RTS_DELETE_RLE_SKIPPED 2221 +#define WT_STAT_DSRC_TXN_RTS_DELETE_RLE_SKIPPED 2223 /*! transaction: rollback to stable skipping stable rle */ -#define WT_STAT_DSRC_TXN_RTS_STABLE_RLE_SKIPPED 2222 +#define WT_STAT_DSRC_TXN_RTS_STABLE_RLE_SKIPPED 2224 /*! transaction: rollback to stable sweeping history store keys */ -#define WT_STAT_DSRC_TXN_RTS_SWEEP_HS_KEYS 2223 +#define WT_STAT_DSRC_TXN_RTS_SWEEP_HS_KEYS 2225 /*! transaction: rollback to stable updates removed from history store */ -#define WT_STAT_DSRC_TXN_RTS_HS_REMOVED 2224 +#define WT_STAT_DSRC_TXN_RTS_HS_REMOVED 2226 /*! transaction: transaction checkpoints due to obsolete pages */ -#define WT_STAT_DSRC_TXN_CHECKPOINT_OBSOLETE_APPLIED 2225 +#define WT_STAT_DSRC_TXN_CHECKPOINT_OBSOLETE_APPLIED 2227 /*! transaction: update conflicts */ -#define WT_STAT_DSRC_TXN_UPDATE_CONFLICT 2226 +#define WT_STAT_DSRC_TXN_UPDATE_CONFLICT 2228 /*! * @} diff --git a/src/third_party/wiredtiger/src/support/stat.c b/src/third_party/wiredtiger/src/support/stat.c index e26093d3353..f4bdb221d77 100644 --- a/src/third_party/wiredtiger/src/support/stat.c +++ b/src/third_party/wiredtiger/src/support/stat.c @@ -159,6 +159,10 @@ static const char *const __stats_dsrc_desc[] = { "cursor: Total number of entries skipped by cursor prev calls", "cursor: Total number of entries skipped to position the history store cursor", "cursor: Total number of times a search near has exited due to prefix config", + "cursor: Total number of times cursor fails to temporarily release pinned page to encourage " + "eviction of hot or large page", + "cursor: Total number of times cursor temporarily releases pinned page to encourage eviction of " + "hot or large page", "cursor: bulk loaded cursor insert calls", "cursor: cache cursors reuse count", "cursor: close calls that result in cache", @@ -427,6 +431,8 @@ __wt_stat_dsrc_clear_single(WT_DSRC_STATS *stats) stats->cursor_prev_skip_total = 0; stats->cursor_skip_hs_cur_position = 0; stats->cursor_search_near_prefix_fast_paths = 0; + stats->cursor_reposition_failed = 0; + stats->cursor_reposition = 0; stats->cursor_insert_bulk = 0; stats->cursor_reopen = 0; stats->cursor_cache = 0; @@ -683,6 +689,8 @@ __wt_stat_dsrc_aggregate_single(WT_DSRC_STATS *from, WT_DSRC_STATS *to) to->cursor_prev_skip_total += from->cursor_prev_skip_total; to->cursor_skip_hs_cur_position += from->cursor_skip_hs_cur_position; to->cursor_search_near_prefix_fast_paths += from->cursor_search_near_prefix_fast_paths; + to->cursor_reposition_failed += from->cursor_reposition_failed; + to->cursor_reposition += from->cursor_reposition; to->cursor_insert_bulk += from->cursor_insert_bulk; to->cursor_reopen += from->cursor_reopen; to->cursor_cache += from->cursor_cache; @@ -943,6 +951,8 @@ __wt_stat_dsrc_aggregate(WT_DSRC_STATS **from, WT_DSRC_STATS *to) to->cursor_skip_hs_cur_position += WT_STAT_READ(from, cursor_skip_hs_cur_position); to->cursor_search_near_prefix_fast_paths += WT_STAT_READ(from, cursor_search_near_prefix_fast_paths); + to->cursor_reposition_failed += WT_STAT_READ(from, cursor_reposition_failed); + to->cursor_reposition += WT_STAT_READ(from, cursor_reposition); to->cursor_insert_bulk += WT_STAT_READ(from, cursor_insert_bulk); to->cursor_reopen += WT_STAT_READ(from, cursor_reopen); to->cursor_cache += WT_STAT_READ(from, cursor_cache); @@ -1261,6 +1271,10 @@ static const char *const __stats_connection_desc[] = { "cursor: Total number of entries skipped by cursor prev calls", "cursor: Total number of entries skipped to position the history store cursor", "cursor: Total number of times a search near has exited due to prefix config", + "cursor: Total number of times cursor fails to temporarily release pinned page to encourage " + "eviction of hot or large page", + "cursor: Total number of times cursor temporarily releases pinned page to encourage eviction of " + "hot or large page", "cursor: cached cursor count", "cursor: cursor bulk loaded cursor insert calls", "cursor: cursor close calls that result in cache", @@ -1820,6 +1834,8 @@ __wt_stat_connection_clear_single(WT_CONNECTION_STATS *stats) stats->cursor_prev_skip_total = 0; stats->cursor_skip_hs_cur_position = 0; stats->cursor_search_near_prefix_fast_paths = 0; + stats->cursor_reposition_failed = 0; + stats->cursor_reposition = 0; /* not clearing cursor_cached_count */ stats->cursor_insert_bulk = 0; stats->cursor_cache = 0; @@ -2381,6 +2397,8 @@ __wt_stat_connection_aggregate(WT_CONNECTION_STATS **from, WT_CONNECTION_STATS * to->cursor_skip_hs_cur_position += WT_STAT_READ(from, cursor_skip_hs_cur_position); to->cursor_search_near_prefix_fast_paths += WT_STAT_READ(from, cursor_search_near_prefix_fast_paths); + to->cursor_reposition_failed += WT_STAT_READ(from, cursor_reposition_failed); + to->cursor_reposition += WT_STAT_READ(from, cursor_reposition); to->cursor_cached_count += WT_STAT_READ(from, cursor_cached_count); to->cursor_insert_bulk += WT_STAT_READ(from, cursor_insert_bulk); to->cursor_cache += WT_STAT_READ(from, cursor_cache); diff --git a/src/third_party/wiredtiger/test/checkpoint/test_checkpoint.c b/src/third_party/wiredtiger/test/checkpoint/test_checkpoint.c index 29b04378b92..0194ccd3ab1 100644 --- a/src/third_party/wiredtiger/test/checkpoint/test_checkpoint.c +++ b/src/third_party/wiredtiger/test/checkpoint/test_checkpoint.c @@ -67,6 +67,7 @@ main(int argc, char *argv[]) g.nops = 100000; g.ntables = 3; g.nworkers = 1; + g.evict_reposition_timing_stress = false; g.sweep_stress = g.use_timestamps = false; g.failpoint_hs_delete_key_from_ts = false; g.hs_checkpoint_timing_stress = g.reserved_txnid_timing_stress = false; @@ -127,6 +128,9 @@ main(int argc, char *argv[]) case '5': g.checkpoint_slow_timing_stress = true; break; + case '6': + g.evict_reposition_timing_stress = true; + break; default: return (usage()); } @@ -270,11 +274,14 @@ wt_connect(const char *config_open) fast_eviction = false; timing_stress = false; - if (g.sweep_stress || g.failpoint_hs_delete_key_from_ts || g.hs_checkpoint_timing_stress || - g.reserved_txnid_timing_stress || g.checkpoint_slow_timing_stress) { + if (g.evict_reposition_timing_stress || g.sweep_stress || g.failpoint_hs_delete_key_from_ts || + g.hs_checkpoint_timing_stress || g.reserved_txnid_timing_stress || + g.checkpoint_slow_timing_stress) { timing_stress = true; testutil_check(__wt_snprintf(timing_stress_config, sizeof(timing_stress_config), - ",timing_stress_for_test=[%s%s%s%s%s]", g.sweep_stress ? "aggressive_sweep" : "", + ",timing_stress_for_test=[%s%s%s%s%s%s]", + g.evict_reposition_timing_stress ? "evict_reposition" : "", + g.sweep_stress ? "aggressive_sweep" : "", g.failpoint_hs_delete_key_from_ts ? "failpoint_history_store_delete_key_from_ts" : "", g.hs_checkpoint_timing_stress ? "history_store_checkpoint_delay" : "", g.reserved_txnid_timing_stress ? "checkpoint_reserved_txnid_delay" : "", diff --git a/src/third_party/wiredtiger/test/checkpoint/test_checkpoint.h b/src/third_party/wiredtiger/test/checkpoint/test_checkpoint.h index 280a6bfac24..77cdb9cb356 100644 --- a/src/third_party/wiredtiger/test/checkpoint/test_checkpoint.h +++ b/src/third_party/wiredtiger/test/checkpoint/test_checkpoint.h @@ -67,6 +67,7 @@ typedef struct { int ntables_created; /* Number tables opened */ volatile int running; /* Whether to stop */ int status; /* Exit status */ + bool evict_reposition_timing_stress; /* Reposition the cursor for read operations */ bool sweep_stress; /* Sweep stress test */ bool failpoint_hs_delete_key_from_ts; /* Failpoint for hs key deletion. */ bool hs_checkpoint_timing_stress; /* History store checkpoint timing stress */ diff --git a/src/third_party/wiredtiger/test/evergreen.yml b/src/third_party/wiredtiger/test/evergreen.yml index 348b6d9ca46..af47f0d9385 100755 --- a/src/third_party/wiredtiger/test/evergreen.yml +++ b/src/third_party/wiredtiger/test/evergreen.yml @@ -2611,6 +2611,20 @@ tasks: set -o verbose ${test_env_vars|} ../../../tools/run_parallel.sh 'nice ./recovery-test.sh "${data_validation_stress_test_args} -s 5" WT_TEST.$t test_checkpoint' 120 + - name: data-validation-stress-test-checkpoint-fp-hs-insert-s6 + depends_on: + - name: compile + commands: + - func: "fetch artifacts" + - command: shell.exec + params: + working_dir: "wiredtiger/cmake_build/test/checkpoint" + shell: bash + script: | + set -o errexit + set -o verbose + ${test_env_vars|} ../../../tools/run_parallel.sh 'nice ./recovery-test.sh "${data_validation_stress_test_args} -x -s 6" WT_TEST.$t test_checkpoint' 120 + - name: format-failure-configs-test depends_on: - name: compile @@ -3829,6 +3843,7 @@ buildvariants: - name: data-validation-stress-test-checkpoint-fp-hs-insert-s4 - name: data-validation-stress-test-checkpoint-fp-hs-insert-s5 - name: data-validation-stress-test-checkpoint-fp-hs-insert-s5-no-timestamp + - name: data-validation-stress-test-checkpoint-fp-hs-insert-s6 - name: data-validation-stress-test-checkpoint-no-timestamp - name: unittest-test - name: tiered-storage-extensions-test diff --git a/src/third_party/wiredtiger/test/format/config.h b/src/third_party/wiredtiger/test/format/config.h index 14fb612d31d..be88a9511e0 100644 --- a/src/third_party/wiredtiger/test/format/config.h +++ b/src/third_party/wiredtiger/test/format/config.h @@ -115,21 +115,22 @@ typedef struct { #define V_GLOBAL_STRESS_CHECKPOINT 83 #define V_GLOBAL_STRESS_CHECKPOINT_RESERVED_TXNID_DELAY 84 #define V_GLOBAL_STRESS_CHECKPOINT_PREPARE 85 -#define V_GLOBAL_STRESS_FAILPOINT_HS_DELETE_KEY_FROM_TS 86 -#define V_GLOBAL_STRESS_HS_CHECKPOINT_DELAY 87 -#define V_GLOBAL_STRESS_HS_SEARCH 88 -#define V_GLOBAL_STRESS_HS_SWEEP 89 -#define V_GLOBAL_STRESS_SPLIT_1 90 -#define V_GLOBAL_STRESS_SPLIT_2 91 -#define V_GLOBAL_STRESS_SPLIT_3 92 -#define V_GLOBAL_STRESS_SPLIT_4 93 -#define V_GLOBAL_STRESS_SPLIT_5 94 -#define V_GLOBAL_STRESS_SPLIT_6 95 -#define V_GLOBAL_STRESS_SPLIT_7 96 -#define V_GLOBAL_TRANSACTION_IMPLICIT 97 -#define V_GLOBAL_TRANSACTION_TIMESTAMPS 98 -#define V_GLOBAL_WIREDTIGER_CONFIG 99 -#define V_GLOBAL_WIREDTIGER_RWLOCK 100 -#define V_GLOBAL_WIREDTIGER_LEAK_MEMORY 101 +#define V_GLOBAL_STRESS_EVICT_REPOSITION 86 +#define V_GLOBAL_STRESS_FAILPOINT_HS_DELETE_KEY_FROM_TS 87 +#define V_GLOBAL_STRESS_HS_CHECKPOINT_DELAY 88 +#define V_GLOBAL_STRESS_HS_SEARCH 89 +#define V_GLOBAL_STRESS_HS_SWEEP 90 +#define V_GLOBAL_STRESS_SPLIT_1 91 +#define V_GLOBAL_STRESS_SPLIT_2 92 +#define V_GLOBAL_STRESS_SPLIT_3 93 +#define V_GLOBAL_STRESS_SPLIT_4 94 +#define V_GLOBAL_STRESS_SPLIT_5 95 +#define V_GLOBAL_STRESS_SPLIT_6 96 +#define V_GLOBAL_STRESS_SPLIT_7 97 +#define V_GLOBAL_TRANSACTION_IMPLICIT 98 +#define V_GLOBAL_TRANSACTION_TIMESTAMPS 99 +#define V_GLOBAL_WIREDTIGER_CONFIG 100 +#define V_GLOBAL_WIREDTIGER_RWLOCK 101 +#define V_GLOBAL_WIREDTIGER_LEAK_MEMORY 102 -#define V_ELEMENT_COUNT 102 +#define V_ELEMENT_COUNT 103 diff --git a/src/third_party/wiredtiger/test/format/config.sh b/src/third_party/wiredtiger/test/format/config.sh index 23af56e2724..fcbbd617df2 100644..100755 --- a/src/third_party/wiredtiger/test/format/config.sh +++ b/src/third_party/wiredtiger/test/format/config.sh @@ -248,6 +248,8 @@ CONFIG configuration_list[] = { {"stress.checkpoint_prepare", "stress checkpoint prepare", C_BOOL, 2, 0, 0} +{"stress.evict_reposition", "stress evict reposition", C_BOOL, 2, 0, 0} + {"stress.failpoint_hs_delete_key_from_ts", "stress failpoint history store delete key from ts", C_BOOL, 30, 0, 0} {"stress.hs_checkpoint_delay", "stress history store checkpoint delay", C_BOOL, 2, 0, 0} diff --git a/src/third_party/wiredtiger/test/format/config_def.c b/src/third_party/wiredtiger/test/format/config_def.c index 78613c1c1ab..3f6d2179358 100644 --- a/src/third_party/wiredtiger/test/format/config_def.c +++ b/src/third_party/wiredtiger/test/format/config_def.c @@ -2,32 +2,36 @@ #include "format.h" -CONFIG configuration_list[] = {{"assert.read_timestamp", "assert read_timestamp", C_BOOL, 2, 0, 0, - V_GLOBAL_ASSERT_READ_TIMESTAMP}, +CONFIG configuration_list[] = { + {"assert.read_timestamp", "assert read_timestamp", + C_BOOL, 2, 0, 0, V_GLOBAL_ASSERT_READ_TIMESTAMP}, - {"assert.write_timestamp", "set write_timestamp_usage and assert write_timestamp", C_BOOL, 2, 0, - 0, V_GLOBAL_ASSERT_WRITE_TIMESTAMP}, + {"assert.write_timestamp", "set write_timestamp_usage and assert write_timestamp", + C_BOOL, 2, 0, 0, V_GLOBAL_ASSERT_WRITE_TIMESTAMP}, - {"backup", "configure backups", C_BOOL, 20, 0, 0, V_GLOBAL_BACKUP}, + {"backup", "configure backups", + C_BOOL, 20, 0, 0, V_GLOBAL_BACKUP}, - {"backup.incremental", "backup type (off | block | log)", C_IGNORE | C_STRING, 0, 0, 0, - V_GLOBAL_BACKUP_INCREMENTAL}, + {"backup.incremental", "backup type (off | block | log)", + C_IGNORE | C_STRING, 0, 0, 0, V_GLOBAL_BACKUP_INCREMENTAL}, - {"backup.incr_granularity", "incremental backup block granularity (KB)", 0x0, 4, 16384, 16384, - V_GLOBAL_BACKUP_INCR_GRANULARITY}, + {"backup.incr_granularity", "incremental backup block granularity (KB)", + 0x0, 4, 16384, 16384, V_GLOBAL_BACKUP_INCR_GRANULARITY}, - {"block_cache", "enable the block cache", C_BOOL, 10, 0, 0, V_GLOBAL_BLOCK_CACHE}, + {"block_cache", "enable the block cache", + C_BOOL, 10, 0, 0, V_GLOBAL_BLOCK_CACHE}, - {"block_cache.cache_on_checkpoint", "block cache: cache checkpoint writes", C_BOOL, 30, 0, 0, - V_GLOBAL_BLOCK_CACHE_CACHE_ON_CHECKPOINT}, + {"block_cache.cache_on_checkpoint", "block cache: cache checkpoint writes", + C_BOOL, 30, 0, 0, V_GLOBAL_BLOCK_CACHE_CACHE_ON_CHECKPOINT}, - {"block_cache.cache_on_writes", "block cache: populate the cache on writes", C_BOOL, 60, 0, 0, - V_GLOBAL_BLOCK_CACHE_CACHE_ON_WRITES}, + {"block_cache.cache_on_writes", "block cache: populate the cache on writes", + C_BOOL, 60, 0, 0, V_GLOBAL_BLOCK_CACHE_CACHE_ON_WRITES}, - {"block_cache.size", "block cache size (MB)", 0x0, 1, 100, 100 * 1024, V_GLOBAL_BLOCK_CACHE_SIZE}, + {"block_cache.size", "block cache size (MB)", + 0x0, 1, 100, 100 * 1024, V_GLOBAL_BLOCK_CACHE_SIZE}, - {"btree.bitcnt", "fixed-length column-store object size (number of bits)", C_TABLE | C_TYPE_FIX, - 1, 8, 8, V_TABLE_BTREE_BITCNT}, + {"btree.bitcnt", "fixed-length column-store object size (number of bits)", + C_TABLE | C_TYPE_FIX, 1, 8, 8, V_TABLE_BTREE_BITCNT}, {"btree.compression", "data compression (off | lz4 | snappy | zlib | zstd)", C_IGNORE | C_STRING | C_TABLE, 0, 0, 0, V_TABLE_BTREE_COMPRESSION}, @@ -38,244 +42,280 @@ CONFIG configuration_list[] = {{"assert.read_timestamp", "assert read_timestamp" {"btree.huffman_value", "configure huffman encoded values", C_BOOL | C_TABLE | C_TYPE_ROW | C_TYPE_VAR, 20, 0, 0, V_TABLE_BTREE_HUFFMAN_VALUE}, - {"btree.internal_key_truncation", "truncate internal keys", C_BOOL | C_TABLE, 95, 0, 0, - V_TABLE_BTREE_INTERNAL_KEY_TRUNCATION}, + {"btree.internal_key_truncation", "truncate internal keys", + C_BOOL | C_TABLE, 95, 0, 0, V_TABLE_BTREE_INTERNAL_KEY_TRUNCATION}, - {"btree.internal_page_max", "btree internal node maximum size", C_TABLE, 9, 17, 27, - V_TABLE_BTREE_INTERNAL_PAGE_MAX}, + {"btree.internal_page_max", "btree internal node maximum size", + C_TABLE, 9, 17, 27, V_TABLE_BTREE_INTERNAL_PAGE_MAX}, - {"btree.key_max", "maximum key size", C_TABLE | C_TYPE_ROW, 20, 128, MEGABYTE(10), - V_TABLE_BTREE_KEY_MAX}, + {"btree.key_max", "maximum key size", + C_TABLE | C_TYPE_ROW, 20, 128, MEGABYTE(10), V_TABLE_BTREE_KEY_MAX}, - {"btree.key_min", "minimum key size", C_TABLE | C_TYPE_ROW, KEY_LEN_CONFIG_MIN, 32, 256, - V_TABLE_BTREE_KEY_MIN}, + {"btree.key_min", "minimum key size", + C_TABLE | C_TYPE_ROW, KEY_LEN_CONFIG_MIN, 32, 256, V_TABLE_BTREE_KEY_MIN}, - {"btree.leaf_page_max", "btree leaf node maximum size", C_TABLE, 9, 17, 27, - V_TABLE_BTREE_LEAF_PAGE_MAX}, + {"btree.leaf_page_max", "btree leaf node maximum size", + C_TABLE, 9, 17, 27, V_TABLE_BTREE_LEAF_PAGE_MAX}, - {"btree.memory_page_max", "maximum cache page size", C_TABLE, 1, 10, 128, - V_TABLE_BTREE_MEMORY_PAGE_MAX}, + {"btree.memory_page_max", "maximum cache page size", + C_TABLE, 1, 10, 128, V_TABLE_BTREE_MEMORY_PAGE_MAX}, - {"btree.prefix_len", "common key prefix", C_TABLE | C_TYPE_ROW | C_ZERO_NOTSET, - PREFIX_LEN_CONFIG_MIN, PREFIX_LEN_CONFIG_MAX, PREFIX_LEN_CONFIG_MAX, V_TABLE_BTREE_PREFIX_LEN}, + {"btree.prefix_len", "common key prefix", + C_TABLE | C_TYPE_ROW | C_ZERO_NOTSET, PREFIX_LEN_CONFIG_MIN, PREFIX_LEN_CONFIG_MAX, PREFIX_LEN_CONFIG_MAX, V_TABLE_BTREE_PREFIX_LEN}, - {"btree.prefix_compression", "configure prefix compressed keys", C_BOOL | C_TABLE | C_TYPE_ROW, - 80, 0, 0, V_TABLE_BTREE_PREFIX_COMPRESSION}, + {"btree.prefix_compression", "configure prefix compressed keys", + C_BOOL | C_TABLE | C_TYPE_ROW, 80, 0, 0, V_TABLE_BTREE_PREFIX_COMPRESSION}, {"btree.prefix_compression_min", "minimum gain before prefix compression is used (bytes)", C_TABLE | C_TYPE_ROW, 0, 8, 256, V_TABLE_BTREE_PREFIX_COMPRESSION_MIN}, - {"btree.repeat_data_pct", "duplicate values (percentage)", C_TABLE | C_TYPE_VAR, 0, 90, 90, - V_TABLE_BTREE_REPEAT_DATA_PCT}, + {"btree.repeat_data_pct", "duplicate values (percentage)", + C_TABLE | C_TYPE_VAR, 0, 90, 90, V_TABLE_BTREE_REPEAT_DATA_PCT}, - {"btree.reverse", "reverse order collation", C_BOOL | C_TABLE | C_TYPE_ROW, 10, 0, 0, - V_TABLE_BTREE_REVERSE}, + {"btree.reverse", "reverse order collation", + C_BOOL | C_TABLE | C_TYPE_ROW, 10, 0, 0, V_TABLE_BTREE_REVERSE}, - {"btree.split_pct", "page split size as a percentage of the maximum page size", C_TABLE, 50, 100, - 100, V_TABLE_BTREE_SPLIT_PCT}, + {"btree.split_pct", "page split size as a percentage of the maximum page size", + C_TABLE, 50, 100, 100, V_TABLE_BTREE_SPLIT_PCT}, - {"btree.value_max", "maximum value size", C_TABLE | C_TYPE_ROW | C_TYPE_VAR, 32, 4096, - MEGABYTE(10), V_TABLE_BTREE_VALUE_MAX}, + {"btree.value_max", "maximum value size", + C_TABLE | C_TYPE_ROW | C_TYPE_VAR, 32, 4096, MEGABYTE(10), V_TABLE_BTREE_VALUE_MAX}, - {"btree.value_min", "minimum value size", C_TABLE | C_TYPE_ROW | C_TYPE_VAR, 0, 20, 4096, - V_TABLE_BTREE_VALUE_MIN}, + {"btree.value_min", "minimum value size", + C_TABLE | C_TYPE_ROW | C_TYPE_VAR, 0, 20, 4096, V_TABLE_BTREE_VALUE_MIN}, - {"cache", "cache size (MB)", 0x0, 1, 100, 100 * 1024, V_GLOBAL_CACHE}, + {"cache", "cache size (MB)", + 0x0, 1, 100, 100 * 1024, V_GLOBAL_CACHE}, - {"cache.evict_max", "maximum number of eviction workers", 0x0, 0, 5, 100, - V_GLOBAL_CACHE_EVICT_MAX}, + {"cache.evict_max", "maximum number of eviction workers", + 0x0, 0, 5, 100, V_GLOBAL_CACHE_EVICT_MAX}, - {"cache.minimum", "minimum cache size (MB)", C_IGNORE, 0, 0, 100 * 1024, V_GLOBAL_CACHE_MINIMUM}, + {"cache.minimum", "minimum cache size (MB)", + C_IGNORE, 0, 0, 100 * 1024, V_GLOBAL_CACHE_MINIMUM}, - {"checkpoint", "checkpoint type (on | off | wiredtiger)", C_IGNORE | C_STRING, 0, 0, 0, - V_GLOBAL_CHECKPOINT}, + {"checkpoint", "checkpoint type (on | off | wiredtiger)", + C_IGNORE | C_STRING, 0, 0, 0, V_GLOBAL_CHECKPOINT}, - {"checkpoint.log_size", "MB of log to wait if wiredtiger checkpoints configured", 0x0, 20, 200, - 1024, V_GLOBAL_CHECKPOINT_LOG_SIZE}, + {"checkpoint.log_size", "MB of log to wait if wiredtiger checkpoints configured", + 0x0, 20, 200, 1024, V_GLOBAL_CHECKPOINT_LOG_SIZE}, - {"checkpoint.wait", "seconds to wait if wiredtiger checkpoints configured", 0x0, 5, 100, 3600, - V_GLOBAL_CHECKPOINT_WAIT}, + {"checkpoint.wait", "seconds to wait if wiredtiger checkpoints configured", + 0x0, 5, 100, 3600, V_GLOBAL_CHECKPOINT_WAIT}, {"disk.checksum", "checksum type (on | off | uncompressed | unencrypted)", C_IGNORE | C_STRING | C_TABLE, 0, 0, 0, V_TABLE_DISK_CHECKSUM}, - {"disk.data_extend", "configure data file extension", C_BOOL, 5, 0, 0, V_GLOBAL_DISK_DATA_EXTEND}, + {"disk.data_extend", "configure data file extension", + C_BOOL, 5, 0, 0, V_GLOBAL_DISK_DATA_EXTEND}, - {"disk.direct_io", "configure direct I/O for data objects", C_BOOL | C_IGNORE, 0, 0, 1, - V_GLOBAL_DISK_DIRECT_IO}, + {"disk.direct_io", "configure direct I/O for data objects", + C_BOOL | C_IGNORE, 0, 0, 1, V_GLOBAL_DISK_DIRECT_IO}, - {"disk.encryption", "encryption type (off | rotn-7)", C_IGNORE | C_STRING, 0, 0, 0, - V_GLOBAL_DISK_ENCRYPTION}, + {"disk.encryption", "encryption type (off | rotn-7)", + C_IGNORE | C_STRING, 0, 0, 0, V_GLOBAL_DISK_ENCRYPTION}, - {"disk.firstfit", "configure first-fit allocation", C_BOOL | C_TABLE, 10, 0, 0, - V_TABLE_DISK_FIRSTFIT}, + {"disk.firstfit", "configure first-fit allocation", + C_BOOL | C_TABLE, 10, 0, 0, V_TABLE_DISK_FIRSTFIT}, - {"disk.mmap", "configure mmap operations (reads only)", C_BOOL, 90, 0, 0, V_GLOBAL_DISK_MMAP}, + {"disk.mmap", "configure mmap operations (reads only)", + C_BOOL, 90, 0, 0, V_GLOBAL_DISK_MMAP}, - {"disk.mmap_all", "configure mmap operations (read and write)", C_BOOL, 5, 0, 0, - V_GLOBAL_DISK_MMAP_ALL}, + {"disk.mmap_all", "configure mmap operations (read and write)", + C_BOOL, 5, 0, 0, V_GLOBAL_DISK_MMAP_ALL}, - {"format.abort", "drop core during timed run", C_BOOL, 0, 0, 0, V_GLOBAL_FORMAT_ABORT}, + {"format.abort", "drop core during timed run", + C_BOOL, 0, 0, 0, V_GLOBAL_FORMAT_ABORT}, - {"format.independent_thread_rng", "configure independent thread RNG space", C_BOOL, 75, 0, 0, - V_GLOBAL_FORMAT_INDEPENDENT_THREAD_RNG}, + {"format.independent_thread_rng", "configure independent thread RNG space", + C_BOOL, 75, 0, 0, V_GLOBAL_FORMAT_INDEPENDENT_THREAD_RNG}, - {"format.major_timeout", "long-running operations timeout (minutes)", C_IGNORE, 0, 0, 1000, - V_GLOBAL_FORMAT_MAJOR_TIMEOUT}, + {"format.major_timeout", "long-running operations timeout (minutes)", + C_IGNORE, 0, 0, 1000, V_GLOBAL_FORMAT_MAJOR_TIMEOUT}, - /* - * 0% - * FIXME-WT-7418: Temporarily disable import until WT_ROLLBACK error and wt_copy_and_sync error is - * fixed. It should be (C_BOOL, 20, 0, 0). - */ - {"import", "import table from newly created database", C_BOOL, 0, 0, 0, V_GLOBAL_IMPORT}, +/* + * 0% + * FIXME-WT-7418: Temporarily disable import until WT_ROLLBACK error and wt_copy_and_sync error is + * fixed. It should be (C_BOOL, 20, 0, 0). + */ + {"import", "import table from newly created database", + C_BOOL, 0, 0, 0, V_GLOBAL_IMPORT}, - {"logging", "configure logging", C_BOOL, 50, 0, 0, V_GLOBAL_LOGGING}, + {"logging", "configure logging", + C_BOOL, 50, 0, 0, V_GLOBAL_LOGGING}, {"logging.compression", "logging compression (off | lz4 | snappy | zlib | zstd)", C_IGNORE | C_STRING, 0, 0, 0, V_GLOBAL_LOGGING_COMPRESSION}, - {"logging.file_max", "maximum log file size (KB)", 0x0, 100, 512000, 2097152, - V_GLOBAL_LOGGING_FILE_MAX}, + {"logging.file_max", "maximum log file size (KB)", + 0x0, 100, 512000, 2097152, V_GLOBAL_LOGGING_FILE_MAX}, - {"logging.prealloc", "configure log file pre-allocation", C_BOOL, 50, 0, 0, - V_GLOBAL_LOGGING_PREALLOC}, + {"logging.prealloc", "configure log file pre-allocation", + C_BOOL, 50, 0, 0, V_GLOBAL_LOGGING_PREALLOC}, - {"logging.remove", "configure log file removal", C_BOOL, 50, 0, 0, V_GLOBAL_LOGGING_REMOVE}, + {"logging.remove", "configure log file removal", + C_BOOL, 50, 0, 0, V_GLOBAL_LOGGING_REMOVE}, - {"lsm.auto_throttle", "throttle LSM inserts", C_BOOL | C_TABLE | C_TYPE_LSM, 90, 0, 0, - V_TABLE_LSM_AUTO_THROTTLE}, + {"lsm.auto_throttle", "throttle LSM inserts", + C_BOOL | C_TABLE | C_TYPE_LSM, 90, 0, 0, V_TABLE_LSM_AUTO_THROTTLE}, - {"lsm.bloom", "configure bloom filters", C_BOOL | C_TABLE | C_TYPE_LSM, 95, 0, 0, - V_TABLE_LSM_BLOOM}, + {"lsm.bloom", "configure bloom filters", + C_BOOL | C_TABLE | C_TYPE_LSM, 95, 0, 0, V_TABLE_LSM_BLOOM}, - {"lsm.bloom_bit_count", "number of bits per item for bloom filters", C_TABLE | C_TYPE_LSM, 4, 64, - 1000, V_TABLE_LSM_BLOOM_BIT_COUNT}, + {"lsm.bloom_bit_count", "number of bits per item for bloom filters", + C_TABLE | C_TYPE_LSM, 4, 64, 1000, V_TABLE_LSM_BLOOM_BIT_COUNT}, - {"lsm.bloom_hash_count", "number of hash values per item for bloom filters", C_TABLE | C_TYPE_LSM, - 4, 32, 100, V_TABLE_LSM_BLOOM_HASH_COUNT}, + {"lsm.bloom_hash_count", "number of hash values per item for bloom filters", + C_TABLE | C_TYPE_LSM, 4, 32, 100, V_TABLE_LSM_BLOOM_HASH_COUNT}, - {"lsm.bloom_oldest", "configure bloom_oldest=true", C_BOOL | C_TABLE | C_TYPE_LSM, 10, 0, 0, - V_TABLE_LSM_BLOOM_OLDEST}, + {"lsm.bloom_oldest", "configure bloom_oldest=true", + C_BOOL | C_TABLE | C_TYPE_LSM, 10, 0, 0, V_TABLE_LSM_BLOOM_OLDEST}, - {"lsm.chunk_size", "LSM chunk size (MB)", C_TABLE | C_TYPE_LSM, 1, 10, 100, - V_TABLE_LSM_CHUNK_SIZE}, + {"lsm.chunk_size", "LSM chunk size (MB)", + C_TABLE | C_TYPE_LSM, 1, 10, 100, V_TABLE_LSM_CHUNK_SIZE}, {"lsm.merge_max", "maximum number of chunks to include in an LSM merge operation", C_TABLE | C_TYPE_LSM, 4, 20, 100, V_TABLE_LSM_MERGE_MAX}, - {"lsm.worker_threads", "number of LSM worker threads", C_TYPE_LSM, 3, 4, 20, - V_GLOBAL_LSM_WORKER_THREADS}, + {"lsm.worker_threads", "number of LSM worker threads", + C_TYPE_LSM, 3, 4, 20, V_GLOBAL_LSM_WORKER_THREADS}, - {"ops.alter", "configure table alterations", C_BOOL, 10, 0, 0, V_GLOBAL_OPS_ALTER}, + {"ops.alter", "configure table alterations", + C_BOOL, 10, 0, 0, V_GLOBAL_OPS_ALTER}, - {"ops.compaction", "configure compaction", C_BOOL, 10, 0, 0, V_GLOBAL_OPS_COMPACTION}, + {"ops.compaction", "configure compaction", + C_BOOL, 10, 0, 0, V_GLOBAL_OPS_COMPACTION}, - {"ops.hs_cursor", "configure history store cursor reads", C_BOOL, 50, 0, 0, - V_GLOBAL_OPS_HS_CURSOR}, + {"ops.hs_cursor", "configure history store cursor reads", + C_BOOL, 50, 0, 0, V_GLOBAL_OPS_HS_CURSOR}, - {"ops.pct.delete", "delete operations (percentage)", C_IGNORE | C_TABLE, 0, 0, 100, - V_TABLE_OPS_PCT_DELETE}, + {"ops.pct.delete", "delete operations (percentage)", + C_IGNORE | C_TABLE, 0, 0, 100, V_TABLE_OPS_PCT_DELETE}, - {"ops.pct.insert", "insert operations (percentage)", C_IGNORE | C_TABLE, 0, 0, 100, - V_TABLE_OPS_PCT_INSERT}, + {"ops.pct.insert", "insert operations (percentage)", + C_IGNORE | C_TABLE, 0, 0, 100, V_TABLE_OPS_PCT_INSERT}, - {"ops.pct.modify", "modify operations (percentage)", C_IGNORE | C_TABLE, 0, 0, 100, - V_TABLE_OPS_PCT_MODIFY}, + {"ops.pct.modify", "modify operations (percentage)", + C_IGNORE | C_TABLE, 0, 0, 100, V_TABLE_OPS_PCT_MODIFY}, - {"ops.pct.read", "read operations (percentage)", C_IGNORE | C_TABLE, 0, 0, 100, - V_TABLE_OPS_PCT_READ}, + {"ops.pct.read", "read operations (percentage)", + C_IGNORE | C_TABLE, 0, 0, 100, V_TABLE_OPS_PCT_READ}, - {"ops.pct.write", "update operations (percentage)", C_IGNORE | C_TABLE, 0, 0, 100, - V_TABLE_OPS_PCT_WRITE}, + {"ops.pct.write", "update operations (percentage)", + C_IGNORE | C_TABLE, 0, 0, 100, V_TABLE_OPS_PCT_WRITE}, - {"ops.prepare", "configure transaction prepare", C_BOOL, 5, 0, 0, V_GLOBAL_OPS_PREPARE}, + {"ops.prepare", "configure transaction prepare", + C_BOOL, 5, 0, 0, V_GLOBAL_OPS_PREPARE}, - {"ops.random_cursor", "configure random cursor reads", C_BOOL, 10, 0, 0, - V_GLOBAL_OPS_RANDOM_CURSOR}, + {"ops.random_cursor", "configure random cursor reads", + C_BOOL, 10, 0, 0, V_GLOBAL_OPS_RANDOM_CURSOR}, - {"ops.salvage", "configure salvage", C_BOOL, 100, 1, 0, V_GLOBAL_OPS_SALVAGE}, + {"ops.salvage", "configure salvage", + C_BOOL, 100, 1, 0, V_GLOBAL_OPS_SALVAGE}, - {"ops.truncate", "configure truncation", C_BOOL | C_TABLE, 100, 0, 0, V_TABLE_OPS_TRUNCATE}, + {"ops.truncate", "configure truncation", + C_BOOL | C_TABLE, 100, 0, 0, V_TABLE_OPS_TRUNCATE}, - {"ops.verify", "configure verify", C_BOOL, 100, 1, 0, V_GLOBAL_OPS_VERIFY}, + {"ops.verify", "configure verify", + C_BOOL, 100, 1, 0, V_GLOBAL_OPS_VERIFY}, - {"quiet", "quiet run (same as -q)", C_BOOL | C_IGNORE, 0, 0, 1, V_GLOBAL_QUIET}, + {"quiet", "quiet run (same as -q)", + C_BOOL | C_IGNORE, 0, 0, 1, V_GLOBAL_QUIET}, - {"runs.in_memory", "configure in-memory", C_BOOL | C_IGNORE, 0, 0, 1, V_GLOBAL_RUNS_IN_MEMORY}, + {"runs.in_memory", "configure in-memory", + C_BOOL | C_IGNORE, 0, 0, 1, V_GLOBAL_RUNS_IN_MEMORY}, - {"runs.ops", "operations per run", 0x0, 0, M(2), M(100), V_GLOBAL_RUNS_OPS}, + {"runs.ops", "operations per run", + 0x0, 0, M(2), M(100), V_GLOBAL_RUNS_OPS}, - {"runs.rows", "number of rows", C_TABLE, 10, M(1), M(100), V_TABLE_RUNS_ROWS}, + {"runs.rows", "number of rows", + C_TABLE, 10, M(1), M(100), V_TABLE_RUNS_ROWS}, - {"runs.source", "data source type (file | lsm | table)", C_IGNORE | C_STRING | C_TABLE, 0, 0, 0, - V_TABLE_RUNS_SOURCE}, + {"runs.source", "data source type (file | lsm | table)", + C_IGNORE | C_STRING | C_TABLE, 0, 0, 0, V_TABLE_RUNS_SOURCE}, - {"runs.tables", "number of tables", 0x0, 1, 32, V_MAX_TABLES_CONFIG, V_GLOBAL_RUNS_TABLES}, + {"runs.tables", "number of tables", + 0x0, 1, 32, V_MAX_TABLES_CONFIG, V_GLOBAL_RUNS_TABLES}, - {"runs.threads", "number of worker threads", 0x0, 1, 32, 128, V_GLOBAL_RUNS_THREADS}, + {"runs.threads", "number of worker threads", + 0x0, 1, 32, 128, V_GLOBAL_RUNS_THREADS}, - {"runs.timer", "run time (minutes)", C_IGNORE, 0, 0, UINT_MAX, V_GLOBAL_RUNS_TIMER}, + {"runs.timer", "run time (minutes)", + C_IGNORE, 0, 0, UINT_MAX, V_GLOBAL_RUNS_TIMER}, - {"runs.type", "object type (fix | row | var)", C_IGNORE | C_STRING | C_TABLE, 0, 0, 0, - V_TABLE_RUNS_TYPE}, + {"runs.type", "object type (fix | row | var)", + C_IGNORE | C_STRING | C_TABLE, 0, 0, 0, V_TABLE_RUNS_TYPE}, - {"runs.verify_failure_dump", "configure page dump on repeatable read error", C_BOOL | C_IGNORE, 0, - 0, 1, V_GLOBAL_RUNS_VERIFY_FAILURE_DUMP}, + {"runs.verify_failure_dump", "configure page dump on repeatable read error", + C_BOOL | C_IGNORE, 0, 0, 1, V_GLOBAL_RUNS_VERIFY_FAILURE_DUMP}, - {"statistics", "configure statistics", C_BOOL, 20, 0, 0, V_GLOBAL_STATISTICS}, + {"statistics", "configure statistics", + C_BOOL, 20, 0, 0, V_GLOBAL_STATISTICS}, - {"statistics.server", "configure statistics server thread", C_BOOL, 5, 0, 0, - V_GLOBAL_STATISTICS_SERVER}, + {"statistics.server", "configure statistics server thread", + C_BOOL, 5, 0, 0, V_GLOBAL_STATISTICS_SERVER}, - {"stress.aggressive_sweep", "stress aggressive sweep", C_BOOL, 2, 0, 0, - V_GLOBAL_STRESS_AGGRESSIVE_SWEEP}, + {"stress.aggressive_sweep", "stress aggressive sweep", + C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_AGGRESSIVE_SWEEP}, - {"stress.checkpoint", "stress checkpoints", C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_CHECKPOINT}, + {"stress.checkpoint", "stress checkpoints", + C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_CHECKPOINT}, {"stress.checkpoint_reserved_txnid_delay", "stress checkpoint invisible transaction id delay", C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_CHECKPOINT_RESERVED_TXNID_DELAY}, - {"stress.checkpoint_prepare", "stress checkpoint prepare", C_BOOL, 2, 0, 0, - V_GLOBAL_STRESS_CHECKPOINT_PREPARE}, + {"stress.checkpoint_prepare", "stress checkpoint prepare", + C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_CHECKPOINT_PREPARE}, + + {"stress.evict_reposition", "stress evict reposition", + C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_EVICT_REPOSITION}, {"stress.failpoint_hs_delete_key_from_ts", "stress failpoint history store delete key from ts", C_BOOL, 30, 0, 0, V_GLOBAL_STRESS_FAILPOINT_HS_DELETE_KEY_FROM_TS}, - {"stress.hs_checkpoint_delay", "stress history store checkpoint delay", C_BOOL, 2, 0, 0, - V_GLOBAL_STRESS_HS_CHECKPOINT_DELAY}, + {"stress.hs_checkpoint_delay", "stress history store checkpoint delay", + C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_HS_CHECKPOINT_DELAY}, - {"stress.hs_search", "stress history store search", C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_HS_SEARCH}, + {"stress.hs_search", "stress history store search", + C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_HS_SEARCH}, - {"stress.hs_sweep", "stress history store sweep", C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_HS_SWEEP}, + {"stress.hs_sweep", "stress history store sweep", + C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_HS_SWEEP}, - {"stress.split_1", "stress splits (#1)", C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_1}, + {"stress.split_1", "stress splits (#1)", + C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_1}, - {"stress.split_2", "stress splits (#2)", C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_2}, + {"stress.split_2", "stress splits (#2)", + C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_2}, - {"stress.split_3", "stress splits (#3)", C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_3}, + {"stress.split_3", "stress splits (#3)", + C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_3}, - {"stress.split_4", "stress splits (#4)", C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_4}, + {"stress.split_4", "stress splits (#4)", + C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_4}, - {"stress.split_5", "stress splits (#5)", C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_5}, + {"stress.split_5", "stress splits (#5)", + C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_5}, - {"stress.split_6", "stress splits (#6)", C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_6}, + {"stress.split_6", "stress splits (#6)", + C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_6}, - {"stress.split_7", "stress splits (#7)", C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_7}, + {"stress.split_7", "stress splits (#7)", + C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_7}, - {"transaction.implicit", "implicit, without timestamps, transactions (percentage)", 0, 0, 100, - 100, V_GLOBAL_TRANSACTION_IMPLICIT}, + {"transaction.implicit", "implicit, without timestamps, transactions (percentage)", + 0, 0, 100, 100, V_GLOBAL_TRANSACTION_IMPLICIT}, - {"transaction.timestamps", "all transactions (or none), have timestamps", C_BOOL, 80, 0, 0, - V_GLOBAL_TRANSACTION_TIMESTAMPS}, + {"transaction.timestamps", "all transactions (or none), have timestamps", + C_BOOL, 80, 0, 0, V_GLOBAL_TRANSACTION_TIMESTAMPS}, - {"wiredtiger.config", "wiredtiger_open API configuration string", C_IGNORE | C_STRING, 0, 0, 0, - V_GLOBAL_WIREDTIGER_CONFIG}, + {"wiredtiger.config", "wiredtiger_open API configuration string", + C_IGNORE | C_STRING, 0, 0, 0, V_GLOBAL_WIREDTIGER_CONFIG}, - {"wiredtiger.rwlock", "configure wiredtiger read/write mutexes", C_BOOL, 80, 0, 0, - V_GLOBAL_WIREDTIGER_RWLOCK}, + {"wiredtiger.rwlock", "configure wiredtiger read/write mutexes", + C_BOOL, 80, 0, 0, V_GLOBAL_WIREDTIGER_RWLOCK}, - {"wiredtiger.leak_memory", "leak memory on wiredtiger shutdown", C_BOOL, 0, 0, 0, - V_GLOBAL_WIREDTIGER_LEAK_MEMORY}, + {"wiredtiger.leak_memory", "leak memory on wiredtiger shutdown", + C_BOOL, 0, 0, 0, V_GLOBAL_WIREDTIGER_LEAK_MEMORY}, - {NULL, NULL, 0x0, 0, 0, 0, 0}}; + {NULL, NULL, 0x0, 0, 0, 0, 0} +}; diff --git a/src/third_party/wiredtiger/test/format/wts.c b/src/third_party/wiredtiger/test/format/wts.c index 01abbe755ff..0d2153e3207 100644 --- a/src/third_party/wiredtiger/test/format/wts.c +++ b/src/third_party/wiredtiger/test/format/wts.c @@ -158,6 +158,8 @@ configure_timing_stress(char *p, size_t max) CONFIG_APPEND(p, ",prepare_checkpoint_delay"); if (GV(STRESS_CHECKPOINT_RESERVED_TXNID_DELAY)) CONFIG_APPEND(p, ",checkpoint_reserved_txnid_delay"); + if (GV(STRESS_EVICT_REPOSITION)) + CONFIG_APPEND(p, ",evict_reposition"); if (GV(STRESS_FAILPOINT_HS_DELETE_KEY_FROM_TS)) CONFIG_APPEND(p, ",failpoint_history_store_delete_key_from_ts"); if (GV(STRESS_HS_CHECKPOINT_DELAY)) diff --git a/src/third_party/wiredtiger/test/suite/test_hs30.py b/src/third_party/wiredtiger/test/suite/test_hs30.py index 6a2d170d058..16b138cc00e 100644 --- a/src/third_party/wiredtiger/test/suite/test_hs30.py +++ b/src/third_party/wiredtiger/test/suite/test_hs30.py @@ -182,8 +182,8 @@ class test_hs30(wttest.WiredTigerTestCase): stat_cursor.close() if self.do_evict: - # Should have read nrows twice. - self.assertEqual(hs_read, nrows * 2) + # Should have at least read nrows twice. + self.assertGreaterEqual(hs_read, nrows * 2) else: # Apparently even if we checkpoint, without an explicit evict the old in-memory # updates hang around and the history store isn't accessed. |