diff options
author | Luke Chen <luke.chen@mongodb.com> | 2018-07-03 12:07:37 +1000 |
---|---|---|
committer | Luke Chen <luke.chen@mongodb.com> | 2018-07-03 12:07:37 +1000 |
commit | b76457d9aa0188e1d2369851506b9d4d927024cb (patch) | |
tree | f93ea10b6ea968ed52d08d9b714c506bf6b2de28 /src/third_party/wiredtiger/src/include | |
parent | 925a113194e00e193318486f576d14e6c3e27ea1 (diff) | |
download | mongo-b76457d9aa0188e1d2369851506b9d4d927024cb.tar.gz |
Import wiredtiger: 27f8e047911ff31500fecf4ea760e688ec541b97 from branch mongodb-4.2
ref: a8a6314182..27f8e04791
for: 4.1.1
WT-3839 Document the undefined behavior when a range truncate overlaps with inserts
WT-3917 Enhance WT_CURSOR::reserve documentation around commit visibility
WT-4024 Fix a race between split and next/prev
WT-4067 Enhance LSM to not pin as much history in cache
WT-4111 Improve checkpoint scrubbing algorithm
WT-4125 Ensure that subsequent checkpoints with stable timestamp don't read too much
WT-4136 Add a new timing stress flag that yields during tree search
WT-4138 Add an option to timeout waiting for space in the cache
WT-4140 Cursor walk limits quick eviction page selection unnecessarily.
WT-4141 Enhance checkpoint with timestamps to unblock eviction sooner
WT-4145 Only include the checkpoint timestamp during checkpoints
WT-4146 Coverity 1393639, unused variable
WT-4152 Save return value for later comparison in transaction code
Diffstat (limited to 'src/third_party/wiredtiger/src/include')
-rw-r--r-- | src/third_party/wiredtiger/src/include/api.h | 3 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/include/btmem.h | 18 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/include/btree.i | 115 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/include/cache.h | 6 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/include/cache.i | 23 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/include/connection.h | 2 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/include/extern.h | 1 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/include/lsm.h | 19 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/include/misc.h | 9 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/include/session.h | 2 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/include/stat.h | 2 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/include/txn.h | 2 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/include/txn.i | 72 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/include/wiredtiger.in | 554 |
14 files changed, 431 insertions, 397 deletions
diff --git a/src/third_party/wiredtiger/src/include/api.h b/src/third_party/wiredtiger/src/include/api.h index ca2176fcf0e..aabb19c86aa 100644 --- a/src/third_party/wiredtiger/src/include/api.h +++ b/src/third_party/wiredtiger/src/include/api.h @@ -48,6 +48,9 @@ WT_TRACK_OP_INIT(s); \ WT_SINGLE_THREAD_CHECK_START(s); \ WT_ERR(WT_SESSION_CHECK_PANIC(s)); \ + /* Reset wait time if this isn't an API re entry. */ \ + if (__oldname == NULL) \ + (s)->cache_wait_us = 0; \ __wt_verbose((s), WT_VERB_API, "%s", "CALL: " #h ":" #n) #define API_CALL_NOCONF(s, h, n, dh) do { \ diff --git a/src/third_party/wiredtiger/src/include/btmem.h b/src/third_party/wiredtiger/src/include/btmem.h index 33e382feba2..64e84e59d36 100644 --- a/src/third_party/wiredtiger/src/include/btmem.h +++ b/src/third_party/wiredtiger/src/include/btmem.h @@ -234,14 +234,13 @@ struct __wt_ovfl_reuse { */ struct __wt_page_lookaside { uint64_t las_pageid; /* Page ID in lookaside */ - uint64_t las_max_txn; /* Max transaction ID in lookaside */ - uint64_t las_min_txn; /* Min transaction ID in lookaside */ - WT_DECL_TIMESTAMP(min_timestamp)/* Min timestamp in lookaside */ - /* Max timestamp on page */ - WT_DECL_TIMESTAMP(onpage_timestamp) + uint64_t max_txn; /* Maximum transaction ID */ + uint64_t unstable_txn; /* First transaction ID not on page */ + WT_DECL_TIMESTAMP(max_timestamp)/* Maximum timestamp */ + WT_DECL_TIMESTAMP(unstable_timestamp)/* First timestamp not on page */ bool eviction_to_lookaside; /* Revert to lookaside on eviction */ - bool las_skew_newest; /* On-page skewed to newest */ bool invalid; /* History is required correct reads */ + bool skew_newest; /* Page image has newest versions */ }; /* @@ -270,6 +269,9 @@ struct __wt_page_modify { uint64_t rec_max_txn; WT_DECL_TIMESTAMP(rec_max_timestamp) + /* Stable timestamp at last reconciliation. */ + WT_DECL_TIMESTAMP(last_stable_timestamp) + /* The largest update transaction ID (approximate). */ uint64_t update_txn; @@ -481,7 +483,9 @@ struct __wt_page_modify { #define WT_PM_REC_REPLACE 3 /* Reconciliation: single block */ uint8_t rec_result; /* Reconciliation state */ - uint8_t update_restored; /* Page created by restoring updates */ +#define WT_PAGE_RS_LOOKASIDE 0x1 +#define WT_PAGE_RS_RESTORED 0x2 + uint8_t restore_state; /* Created by restoring updates */ }; /* diff --git a/src/third_party/wiredtiger/src/include/btree.i b/src/third_party/wiredtiger/src/include/btree.i index 81c166eb0e4..d7edcd00d5a 100644 --- a/src/third_party/wiredtiger/src/include/btree.i +++ b/src/third_party/wiredtiger/src/include/btree.i @@ -1190,10 +1190,10 @@ __wt_page_las_active(WT_SESSION_IMPL *session, WT_REF *ref) if ((page_las = ref->page_las) == NULL) return (false); - if (page_las->invalid || !ref->page_las->las_skew_newest) + if (page_las->invalid || !ref->page_las->skew_newest) return (true); - if (__wt_txn_visible_all(session, page_las->las_max_txn, - WT_TIMESTAMP_NULL(&page_las->onpage_timestamp))) + if (__wt_txn_visible_all(session, page_las->max_txn, + WT_TIMESTAMP_NULL(&page_las->max_timestamp))) return (false); return (true); @@ -1329,6 +1329,7 @@ __wt_leaf_page_can_split(WT_SESSION_IMPL *session, WT_PAGE *page) static inline bool __wt_page_evict_retry(WT_SESSION_IMPL *session, WT_PAGE *page) { + WT_DECL_TIMESTAMP(pinned_ts) WT_PAGE_MODIFY *mod; WT_TXN_GLOBAL *txn_global; @@ -1338,7 +1339,8 @@ __wt_page_evict_retry(WT_SESSION_IMPL *session, WT_PAGE *page) * If the page hasn't been through one round of update/restore, give it * a try. */ - if ((mod = page->modify) == NULL || !mod->update_restored) + if ((mod = page->modify) == NULL || + !FLD_ISSET(mod->restore_state, WT_PAGE_RS_RESTORED)) return (true); /* @@ -1356,17 +1358,12 @@ __wt_page_evict_retry(WT_SESSION_IMPL *session, WT_PAGE *page) return (true); #ifdef HAVE_TIMESTAMPS - { - bool same_timestamp; - - same_timestamp = false; - if (!__wt_timestamp_iszero(&mod->last_eviction_timestamp)) - WT_WITH_TIMESTAMP_READLOCK(session, &txn_global->rwlock, - same_timestamp = __wt_timestamp_cmp( + if (!__wt_timestamp_iszero(&mod->last_eviction_timestamp)) { + __wt_txn_pinned_timestamp(session, &pinned_ts); + if (__wt_timestamp_cmp( &mod->last_eviction_timestamp, - &txn_global->pinned_timestamp) == 0); - if (!same_timestamp) - return (true); + &txn_global->pinned_timestamp) != 0) + return (true); } #endif @@ -1605,6 +1602,8 @@ __wt_split_descent_race( * update. A thread can read the parent page's original page index and * then read the split page's replacement index. * + * For example, imagine a search descending the tree. + * * Because internal page splits work by truncating the original page to * the initial part of the original page, the result of this race is we * will have a search key that points past the end of the current page. @@ -1649,73 +1648,17 @@ __wt_split_descent_race( * work by truncating the split page, so the split page search is for * content the split page retains after the split, and we ignore this * race. - */ - WT_INTL_INDEX_GET(session, ref->home, pindex); - return (pindex != saved_pindex); -} - -/* - * __wt_split_prev_race -- - * Return if we raced with an internal page split when moving backwards - * through the tree. - */ -static inline bool -__wt_split_prev_race(WT_SESSION_IMPL *session, WT_REF *ref) -{ - WT_PAGE_INDEX *pindex; - - /* - * There's a split race when a cursor moving backwards through the tree - * descends the tree. If we're splitting an internal page into its - * parent, we move the WT_REF structures and update the parent's page - * index before updating the split page's page index, and it's not an - * atomic update. A thread can read the parent and split page's original - * indexes during a split, or read the parent page's replacement page - * index and then read the split page's original index, either of which - * can lead to skipping pages. * - * For example, imagine an internal page with 3 child pages, with the - * namespaces a-f, g-h and i-j; the first child page splits. The parent - * starts out with the following page-index: + * This code is a general purpose check for a descent race and we call + * it in other cases, for example, a cursor traversing backwards through + * the tree. * - * | ... | a | g | i | ... | - * - * The split page starts out with the following page-index: - * - * | a | b | c | d | e | f | - * - * The first step is to move the c-f ranges into a new subtree, so, for - * example we might have two new internal pages 'c' and 'e', where the - * new 'c' page references the c-d namespace and the new 'e' page - * references the e-f namespace. The top of the subtree references the - * parent page, but until the parent's page index is updated, threads in - * the subtree won't be able to ascend out of the subtree. However, once - * the parent page's page index is updated to this: - * - * | ... | a | c | e | g | i | ... | - * - * threads in the subtree can ascend into the parent. Imagine a cursor - * in the c-d part of the namespace that ascends to the parent's 'c' - * slot. It would then decrement to the slot before the 'c' slot, the - * 'a' slot. - * - * The previous-cursor movement selects the last slot in the 'a' page; - * if the split page's page-index hasn't been updated yet, it selects - * the 'f' slot, which is incorrect. Once the split page's page index is - * updated to this: - * - * | a | b | - * - * the previous-cursor movement will select the 'b' slot, which is - * correct. - * - * This function takes an argument which is the internal page into which - * we're coupling. If the last slot on the page no longer points to - * the current page as its "home", the page is being split and part of - * its namespace moved, we have to restart. + * Presumably we acquired a page index on the child page before calling + * this code, don't re-order that acquisition with this check. */ - WT_INTL_INDEX_GET(session, ref->page, pindex); - return (pindex->index[pindex->entries - 1]->home != ref->page); + WT_BARRIER(); + WT_INTL_INDEX_GET(session, ref->home, pindex); + return (pindex != saved_pindex); } /* @@ -1724,8 +1667,8 @@ __wt_split_prev_race(WT_SESSION_IMPL *session, WT_REF *ref) * coupling up/down the tree. */ static inline int -__wt_page_swap_func(WT_SESSION_IMPL *session, - WT_REF *held, WT_REF *want, bool prev_race, uint32_t flags +__wt_page_swap_func( + WT_SESSION_IMPL *session, WT_REF *held, WT_REF *want, uint32_t flags #ifdef HAVE_DIAGNOSTIC , const char *file, int line #endif @@ -1755,18 +1698,6 @@ __wt_page_swap_func(WT_SESSION_IMPL *session, ); /* - * We can race when descending into an internal page as part of moving - * backwards through the tree, and we have to detect that race before - * releasing the page from which we are coupling, else we can't restart - * the movement. - */ - if (ret == 0 && prev_race && WT_PAGE_IS_INTERNAL(want->page) && - __wt_split_prev_race(session, want)) { - ret = WT_RESTART; - WT_TRET(__wt_page_release(session, want, flags)); - } - - /* * Expected failures: page not found or restart. Our callers list the * errors they're expecting to handle. */ diff --git a/src/third_party/wiredtiger/src/include/cache.h b/src/third_party/wiredtiger/src/include/cache.h index 1299d3e90e3..7d07e6dfd98 100644 --- a/src/third_party/wiredtiger/src/include/cache.h +++ b/src/third_party/wiredtiger/src/include/cache.h @@ -120,11 +120,11 @@ struct __wt_cache { double eviction_checkpoint_target;/* Percent to reduce dirty to during checkpoint scrubs */ - double eviction_scrub_limit; /* Percent of cache to trigger - dirty eviction during checkpoint - scrubs */ + double eviction_scrub_target; /* Current scrub target */ u_int overhead_pct; /* Cache percent adjustment */ + uint64_t cache_max_wait_us; /* Maximum time an operation waits for + * space in cache */ /* * Eviction thread tuning information. diff --git a/src/third_party/wiredtiger/src/include/cache.i b/src/third_party/wiredtiger/src/include/cache.i index fc127942d02..7f12949e162 100644 --- a/src/third_party/wiredtiger/src/include/cache.i +++ b/src/third_party/wiredtiger/src/include/cache.i @@ -276,6 +276,22 @@ __wt_eviction_clean_needed(WT_SESSION_IMPL *session, double *pct_fullp) } /* + * __wt_eviction_dirty_target -- + * Return the effective dirty target (including checkpoint scrubbing). + */ +static inline double +__wt_eviction_dirty_target(WT_CACHE *cache) +{ + double dirty_target, scrub_target; + + dirty_target = cache->eviction_dirty_target; + scrub_target = cache->eviction_scrub_target; + + return (scrub_target > 0 && scrub_target < dirty_target ? + scrub_target : dirty_target); +} + +/* * __wt_eviction_dirty_needed -- * Return if an application thread should do eviction due to the total * volume of dirty data in cache. @@ -284,7 +300,6 @@ static inline bool __wt_eviction_dirty_needed(WT_SESSION_IMPL *session, double *pct_fullp) { WT_CACHE *cache; - double dirty_trigger; uint64_t dirty_inuse, bytes_max; cache = S2C(session)->cache; @@ -299,10 +314,8 @@ __wt_eviction_dirty_needed(WT_SESSION_IMPL *session, double *pct_fullp) if (pct_fullp != NULL) *pct_fullp = ((100.0 * dirty_inuse) / bytes_max); - if ((dirty_trigger = cache->eviction_scrub_limit) < 1.0) - dirty_trigger = cache->eviction_dirty_trigger; - - return (dirty_inuse > (uint64_t)(dirty_trigger * bytes_max) / 100); + return (dirty_inuse > (uint64_t)( + cache->eviction_dirty_trigger * bytes_max) / 100); } /* diff --git a/src/third_party/wiredtiger/src/include/connection.h b/src/third_party/wiredtiger/src/include/connection.h index d0bebe8da5d..22459b0072c 100644 --- a/src/third_party/wiredtiger/src/include/connection.h +++ b/src/third_party/wiredtiger/src/include/connection.h @@ -458,6 +458,8 @@ struct __wt_connection_impl { #define WT_TIMING_STRESS_SPLIT_5 0x040u #define WT_TIMING_STRESS_SPLIT_6 0x080u #define WT_TIMING_STRESS_SPLIT_7 0x100u +#define WT_TIMING_STRESS_SPLIT_8 0x200u +#define WT_TIMING_STRESS_SPLIT_9 0x400u /* AUTOMATIC FLAG VALUE GENERATION STOP */ uint64_t timing_stress_flags; diff --git a/src/third_party/wiredtiger/src/include/extern.h b/src/third_party/wiredtiger/src/include/extern.h index 7e2d4a4786d..c78c460f445 100644 --- a/src/third_party/wiredtiger/src/include/extern.h +++ b/src/third_party/wiredtiger/src/include/extern.h @@ -498,6 +498,7 @@ extern int __wt_lsm_work_switch(WT_SESSION_IMPL *session, WT_LSM_WORK_UNIT **ent extern int __wt_lsm_work_bloom(WT_SESSION_IMPL *session, WT_LSM_TREE *lsm_tree) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result)); extern bool __wt_lsm_chunk_visible_all(WT_SESSION_IMPL *session, WT_LSM_CHUNK *chunk) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result)); extern int __wt_lsm_checkpoint_chunk(WT_SESSION_IMPL *session, WT_LSM_TREE *lsm_tree, WT_LSM_CHUNK *chunk) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result)); +extern int __wt_lsm_work_enable_evict(WT_SESSION_IMPL *session, WT_LSM_TREE *lsm_tree) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result)); extern int __wt_lsm_free_chunks(WT_SESSION_IMPL *session, WT_LSM_TREE *lsm_tree) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result)); extern int __wt_lsm_worker_start(WT_SESSION_IMPL *session, WT_LSM_WORKER_ARGS *args) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result)); extern int __wt_lsm_worker_stop(WT_SESSION_IMPL *session, WT_LSM_WORKER_ARGS *args) WT_GCC_FUNC_DECL_ATTRIBUTE((warn_unused_result)); diff --git a/src/third_party/wiredtiger/src/include/lsm.h b/src/third_party/wiredtiger/src/include/lsm.h index f515e03519a..67ef28757ef 100644 --- a/src/third_party/wiredtiger/src/include/lsm.h +++ b/src/third_party/wiredtiger/src/include/lsm.h @@ -107,7 +107,8 @@ struct __wt_lsm_chunk { uint32_t id; /* ID used to generate URIs */ uint32_t generation; /* Merge generation */ uint32_t refcnt; /* Number of worker thread references */ - uint32_t bloom_busy; /* Number of worker thread references */ + uint32_t bloom_busy; /* Currently creating bloom filter */ + uint32_t evict_enabled; /* Eviction allowed on the chunk */ int8_t empty; /* 1/0: checkpoint missing */ int8_t evicted; /* 1/0: in-memory chunk was evicted */ @@ -129,13 +130,19 @@ struct __wt_lsm_chunk { * is required. */ /* AUTOMATIC FLAG VALUE GENERATION START */ -#define WT_LSM_WORK_BLOOM 0x01u /* Create a bloom filter */ -#define WT_LSM_WORK_DROP 0x02u /* Drop unused chunks */ -#define WT_LSM_WORK_FLUSH 0x04u /* Flush a chunk to disk */ -#define WT_LSM_WORK_MERGE 0x08u /* Look for a tree merge */ -#define WT_LSM_WORK_SWITCH 0x10u /* Switch to new in-memory chunk */ +#define WT_LSM_WORK_BLOOM 0x01u /* Create a bloom filter */ +#define WT_LSM_WORK_DROP 0x02u /* Drop unused chunks */ +#define WT_LSM_WORK_ENABLE_EVICT 0x04u /* Create a bloom filter */ +#define WT_LSM_WORK_FLUSH 0x08u /* Flush a chunk to disk */ +#define WT_LSM_WORK_MERGE 0x10u /* Look for a tree merge */ +#define WT_LSM_WORK_SWITCH 0x20u /* Switch the in-memory chunk */ /* AUTOMATIC FLAG VALUE GENERATION STOP */ +/* Work units that are serviced by general worker threads. */ +#define WT_LSM_WORK_GENERAL_OPS \ + (WT_LSM_WORK_BLOOM | WT_LSM_WORK_DROP | WT_LSM_WORK_ENABLE_EVICT |\ + WT_LSM_WORK_FLUSH | WT_LSM_WORK_SWITCH) + /* * WT_LSM_WORK_UNIT -- * A definition of maintenance that an LSM tree needs done. diff --git a/src/third_party/wiredtiger/src/include/misc.h b/src/third_party/wiredtiger/src/include/misc.h index 1507e2d07cc..d76560d26e6 100644 --- a/src/third_party/wiredtiger/src/include/misc.h +++ b/src/third_party/wiredtiger/src/include/misc.h @@ -294,16 +294,15 @@ typedef void wt_timestamp_t; __wt_scr_alloc_func(session, size, scratchp, __func__, __LINE__) #define __wt_page_in(session, ref, flags) \ __wt_page_in_func(session, ref, flags, __func__, __LINE__) -#define __wt_page_swap(session, held, want, prev_race, flags) \ - __wt_page_swap_func( \ - session, held, want, prev_race, flags, __func__, __LINE__) +#define __wt_page_swap(session, held, want, flags) \ + __wt_page_swap_func(session, held, want, flags, __func__, __LINE__) #else #define __wt_scr_alloc(session, size, scratchp) \ __wt_scr_alloc_func(session, size, scratchp) #define __wt_page_in(session, ref, flags) \ __wt_page_in_func(session, ref, flags) -#define __wt_page_swap(session, held, want, prev_race, flags) \ - __wt_page_swap_func(session, held, want, prev_race, flags) +#define __wt_page_swap(session, held, want, flags) \ + __wt_page_swap_func(session, held, want, flags) #endif /* Called on unexpected code path: locate the failure. */ diff --git a/src/third_party/wiredtiger/src/include/session.h b/src/third_party/wiredtiger/src/include/session.h index e102d7f5057..cbf572f9a23 100644 --- a/src/third_party/wiredtiger/src/include/session.h +++ b/src/third_party/wiredtiger/src/include/session.h @@ -141,6 +141,8 @@ struct __wt_session_impl { u_int ckpt_handle_next; /* Next empty slot */ size_t ckpt_handle_allocated; /* Bytes allocated */ + uint64_t cache_wait_us; /* Wait time for cache for current operation */ + /* * Operations acting on handles. * diff --git a/src/third_party/wiredtiger/src/include/stat.h b/src/third_party/wiredtiger/src/include/stat.h index 92f28d88e62..1693b9baa82 100644 --- a/src/third_party/wiredtiger/src/include/stat.h +++ b/src/third_party/wiredtiger/src/include/stat.h @@ -406,6 +406,7 @@ struct __wt_connection_stats { int64_t cache_eviction_maximum_page_size; int64_t cache_eviction_dirty; int64_t cache_eviction_app_dirty; + int64_t cache_timed_out_ops; int64_t cache_read_overflow; int64_t cache_eviction_deepen; int64_t cache_write_lookaside; @@ -663,6 +664,7 @@ struct __wt_connection_stats { int64_t txn_pinned_checkpoint_range; int64_t txn_pinned_snapshot_range; int64_t txn_pinned_timestamp; + int64_t txn_pinned_timestamp_checkpoint; int64_t txn_pinned_timestamp_oldest; int64_t txn_sync; int64_t txn_commit; diff --git a/src/third_party/wiredtiger/src/include/txn.h b/src/third_party/wiredtiger/src/include/txn.h index 32234dca23e..480d31b188e 100644 --- a/src/third_party/wiredtiger/src/include/txn.h +++ b/src/third_party/wiredtiger/src/include/txn.h @@ -147,7 +147,7 @@ struct __wt_txn_global { volatile bool checkpoint_running; /* Checkpoint running */ volatile uint32_t checkpoint_id; /* Checkpoint's session ID */ WT_TXN_STATE checkpoint_state; /* Checkpoint's txn state */ - WT_TXN *checkpoint_txn; /* Checkpoint's txn structure */ + WT_DECL_TIMESTAMP(checkpoint_timestamp) /* Checkpoint's timestamp */ volatile uint64_t metadata_pinned; /* Oldest ID for metadata */ diff --git a/src/third_party/wiredtiger/src/include/txn.i b/src/third_party/wiredtiger/src/include/txn.i index 9276ca62903..0efc32811e6 100644 --- a/src/third_party/wiredtiger/src/include/txn.i +++ b/src/third_party/wiredtiger/src/include/txn.i @@ -396,6 +396,60 @@ __wt_txn_oldest_id(WT_SESSION_IMPL *session) return (checkpoint_pinned); } +#ifdef HAVE_TIMESTAMPS +/* + * __wt_txn_pinned_timestamp -- + * Get the first timestamp that has to be kept for the current tree. + */ +static inline void +__wt_txn_pinned_timestamp(WT_SESSION_IMPL *session, wt_timestamp_t *pinned_tsp) +{ + WT_BTREE *btree; + WT_TXN_GLOBAL *txn_global; + wt_timestamp_t checkpoint_ts, pinned_ts; + bool include_checkpoint_txn; + + btree = S2BT_SAFE(session); + txn_global = &S2C(session)->txn_global; + + WT_WITH_TIMESTAMP_READLOCK(session, &txn_global->rwlock, + __wt_timestamp_set(&pinned_ts, &txn_global->pinned_timestamp)); + __wt_timestamp_set(pinned_tsp, &pinned_ts); + + /* + * Checkpoint transactions often fall behind ordinary application + * threads. Take special effort to not keep changes pinned in cache if + * they are only required for the checkpoint and it has already seen + * them. + * + * If there is no active checkpoint or this handle is up to date with + * the active checkpoint then it's safe to ignore the checkpoint ID in + * the visibility check. + */ + include_checkpoint_txn = btree == NULL || + (!F_ISSET(btree, WT_BTREE_LOOKASIDE) && + btree->checkpoint_gen != __wt_gen(session, WT_GEN_CHECKPOINT)); + if (!include_checkpoint_txn) + return; + + /* + * The read of the timestamp pinned by a checkpoint needs to be + * carefully ordered: if a checkpoint is starting and we have to use + * the checkpoint timestamp, we take the minimum of it with the oldest + * timestamp, which is what we want. + */ + WT_READ_BARRIER(); + + WT_WITH_TIMESTAMP_READLOCK(session, &txn_global->rwlock, + __wt_timestamp_set(&checkpoint_ts, + &txn_global->checkpoint_timestamp)); + + if (!__wt_timestamp_iszero(&checkpoint_ts) && + __wt_timestamp_cmp(&checkpoint_ts, &pinned_ts) < 0) + __wt_timestamp_set(pinned_tsp, &checkpoint_ts); +} +#endif + /* * __txn_visible_all_id -- * Check if a given transaction ID is "globally visible". This is, if @@ -427,8 +481,7 @@ __wt_txn_visible_all( #ifdef HAVE_TIMESTAMPS { - WT_TXN_GLOBAL *txn_global = &S2C(session)->txn_global; - int cmp; + wt_timestamp_t pinned_ts; /* Timestamp check. */ if (timestamp == NULL || __wt_timestamp_iszero(timestamp)) @@ -438,20 +491,11 @@ __wt_txn_visible_all( * If no oldest timestamp has been supplied, updates have to stay in * cache until we are shutting down. */ - if (!txn_global->has_pinned_timestamp) + if (!S2C(session)->txn_global.has_pinned_timestamp) return (F_ISSET(S2C(session), WT_CONN_CLOSING)); - WT_WITH_TIMESTAMP_READLOCK(session, &txn_global->rwlock, - cmp = __wt_timestamp_cmp(timestamp, &txn_global->pinned_timestamp)); - - /* - * We can discard updates with timestamps less than or equal to the - * pinned timestamp. This is different to the situation for - * transaction IDs, because we know that updates with timestamps are - * definitely committed (and in this case, that the transaction ID is - * globally visible). - */ - return (cmp <= 0); + __wt_txn_pinned_timestamp(session, &pinned_ts); + return (__wt_timestamp_cmp(timestamp, &pinned_ts) <= 0); } #else WT_UNUSED(timestamp); diff --git a/src/third_party/wiredtiger/src/include/wiredtiger.in b/src/third_party/wiredtiger/src/include/wiredtiger.in index 159e9e2cf72..a4ba834d5ef 100644 --- a/src/third_party/wiredtiger/src/include/wiredtiger.in +++ b/src/third_party/wiredtiger/src/include/wiredtiger.in @@ -602,6 +602,14 @@ struct __wt_cursor { * * The key must first be set and the record must already exist. * + * Note that reserve works by doing a special update operation that is + * not logged and does not change the value of the record. This update + * is aborted when the enclosing transaction ends regardless of whether + * it commits or rolls back. Given that, reserve can only be used to + * detect conflicts between transactions that execute concurrently. It + * cannot detect all logical conflicts between transactions. For that, + * some update to the record must be committed. + * * @snippet ex_all.c Reserve a record * * On success, the cursor ends positioned at the specified record; to @@ -1639,6 +1647,12 @@ struct __wt_session { * the WT_CURSOR::next (WT_CURSOR::prev) method will iterate from the * beginning (end) of the table. * + * When a range truncate is in progress, and another transaction inserts + * a key into that range, the behavior is not well defined - a conflict + * may be detected or both transactions may be permitted to commit. If + * they do commit, and if there is a crash and recovery runs, the result + * may be different than what was in cache before the crash. + * * @param session the session handle * @param name the URI of the table or file to truncate * @param start optional cursor marking the first record discarded; @@ -2128,6 +2142,10 @@ struct __wt_connection { * thread uses a session from the configured session_max., an integer * between 1 and 20; default \c 2.} * @config{ ),,} + * @config{cache_max_wait_ms, the maximum number of milliseconds an + * application thread will wait for space to be available in cache + * before giving up. Default will wait forever., an integer greater + * than or equal to 0; default \c 0.} * @config{cache_overhead, assume the heap allocator overhead is the * specified percentage\, and adjust the cache usage by that amount (for * example\, if there is 10GB of data in cache\, a percentage of 10 @@ -2179,7 +2197,7 @@ struct __wt_connection { * is a percentage of the cache size if the value is within the range of * 0 to 100 or an absolute size when greater than 100. The value is not * allowed to exceed the \c cache_size. Ignored if set to zero or \c - * in_memory is \c true., an integer between 0 and 10TB; default \c 5.} + * in_memory is \c true., an integer between 0 and 10TB; default \c 1.} * @config{eviction_dirty_target, perform eviction in worker threads * when the cache contains at least this much dirty content. It is a * percentage of the cache size if the value is within the range of 1 to @@ -2708,6 +2726,10 @@ struct __wt_connection { * default value for any sessions created\, and can be overridden in configuring * \c cache_cursors in WT_CONNECTION.open_session., a boolean flag; default \c * true.} + * @config{cache_max_wait_ms, the maximum number of milliseconds an application + * thread will wait for space to be available in cache before giving up. + * Default will wait forever., an integer greater than or equal to 0; default \c + * 0.} * @config{cache_overhead, assume the heap allocator overhead is the specified * percentage\, and adjust the cache usage by that amount (for example\, if * there is 10GB of data in cache\, a percentage of 10 means WiredTiger treats @@ -2808,7 +2830,7 @@ struct __wt_connection { * percentage of the cache size if the value is within the range of 0 to 100 or * an absolute size when greater than 100. The value is not allowed to exceed * the \c cache_size. Ignored if set to zero or \c in_memory is \c true., an - * integer between 0 and 10TB; default \c 5.} + * integer between 0 and 10TB; default \c 1.} * @config{eviction_dirty_target, perform eviction in worker threads when the * cache contains at least this much dirty content. It is a percentage of the * cache size if the value is within the range of 1 to 100 or an absolute size @@ -5103,596 +5125,600 @@ extern int wiredtiger_extension_terminate(WT_CONNECTION *connection); #define WT_STAT_CONN_CACHE_EVICTION_DIRTY 1091 /*! cache: modified pages evicted by application threads */ #define WT_STAT_CONN_CACHE_EVICTION_APP_DIRTY 1092 +/*! cache: operations timed out waiting for space in cache */ +#define WT_STAT_CONN_CACHE_TIMED_OUT_OPS 1093 /*! cache: overflow pages read into cache */ -#define WT_STAT_CONN_CACHE_READ_OVERFLOW 1093 +#define WT_STAT_CONN_CACHE_READ_OVERFLOW 1094 /*! cache: page split during eviction deepened the tree */ -#define WT_STAT_CONN_CACHE_EVICTION_DEEPEN 1094 +#define WT_STAT_CONN_CACHE_EVICTION_DEEPEN 1095 /*! cache: page written requiring lookaside records */ -#define WT_STAT_CONN_CACHE_WRITE_LOOKASIDE 1095 +#define WT_STAT_CONN_CACHE_WRITE_LOOKASIDE 1096 /*! cache: pages currently held in the cache */ -#define WT_STAT_CONN_CACHE_PAGES_INUSE 1096 +#define WT_STAT_CONN_CACHE_PAGES_INUSE 1097 /*! cache: pages evicted because they exceeded the in-memory maximum count */ -#define WT_STAT_CONN_CACHE_EVICTION_FORCE 1097 +#define WT_STAT_CONN_CACHE_EVICTION_FORCE 1098 /*! * cache: pages evicted because they exceeded the in-memory maximum time * (usecs) */ -#define WT_STAT_CONN_CACHE_EVICTION_FORCE_TIME 1098 +#define WT_STAT_CONN_CACHE_EVICTION_FORCE_TIME 1099 /*! cache: pages evicted because they had chains of deleted items count */ -#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DELETE 1099 +#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DELETE 1100 /*! * cache: pages evicted because they had chains of deleted items time * (usecs) */ -#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DELETE_TIME 1100 +#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DELETE_TIME 1101 /*! cache: pages evicted by application threads */ -#define WT_STAT_CONN_CACHE_EVICTION_APP 1101 +#define WT_STAT_CONN_CACHE_EVICTION_APP 1102 /*! cache: pages queued for eviction */ -#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED 1102 +#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED 1103 /*! cache: pages queued for urgent eviction */ -#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_URGENT 1103 +#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_URGENT 1104 /*! cache: pages queued for urgent eviction during walk */ -#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_OLDEST 1104 +#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_OLDEST 1105 /*! cache: pages read into cache */ -#define WT_STAT_CONN_CACHE_READ 1105 +#define WT_STAT_CONN_CACHE_READ 1106 /*! cache: pages read into cache after truncate */ -#define WT_STAT_CONN_CACHE_READ_DELETED 1106 +#define WT_STAT_CONN_CACHE_READ_DELETED 1107 /*! cache: pages read into cache after truncate in prepare state */ -#define WT_STAT_CONN_CACHE_READ_DELETED_PREPARED 1107 +#define WT_STAT_CONN_CACHE_READ_DELETED_PREPARED 1108 /*! cache: pages read into cache requiring lookaside entries */ -#define WT_STAT_CONN_CACHE_READ_LOOKASIDE 1108 +#define WT_STAT_CONN_CACHE_READ_LOOKASIDE 1109 /*! cache: pages read into cache requiring lookaside for checkpoint */ -#define WT_STAT_CONN_CACHE_READ_LOOKASIDE_CHECKPOINT 1109 +#define WT_STAT_CONN_CACHE_READ_LOOKASIDE_CHECKPOINT 1110 /*! cache: pages read into cache skipping older lookaside entries */ -#define WT_STAT_CONN_CACHE_READ_LOOKASIDE_SKIPPED 1110 +#define WT_STAT_CONN_CACHE_READ_LOOKASIDE_SKIPPED 1111 /*! * cache: pages read into cache with skipped lookaside entries needed * later */ -#define WT_STAT_CONN_CACHE_READ_LOOKASIDE_DELAY 1111 +#define WT_STAT_CONN_CACHE_READ_LOOKASIDE_DELAY 1112 /*! * cache: pages read into cache with skipped lookaside entries needed * later by checkpoint */ -#define WT_STAT_CONN_CACHE_READ_LOOKASIDE_DELAY_CHECKPOINT 1112 +#define WT_STAT_CONN_CACHE_READ_LOOKASIDE_DELAY_CHECKPOINT 1113 /*! cache: pages requested from the cache */ -#define WT_STAT_CONN_CACHE_PAGES_REQUESTED 1113 +#define WT_STAT_CONN_CACHE_PAGES_REQUESTED 1114 /*! cache: pages seen by eviction walk */ -#define WT_STAT_CONN_CACHE_EVICTION_PAGES_SEEN 1114 +#define WT_STAT_CONN_CACHE_EVICTION_PAGES_SEEN 1115 /*! cache: pages selected for eviction unable to be evicted */ -#define WT_STAT_CONN_CACHE_EVICTION_FAIL 1115 +#define WT_STAT_CONN_CACHE_EVICTION_FAIL 1116 /*! cache: pages walked for eviction */ -#define WT_STAT_CONN_CACHE_EVICTION_WALK 1116 +#define WT_STAT_CONN_CACHE_EVICTION_WALK 1117 /*! cache: pages written from cache */ -#define WT_STAT_CONN_CACHE_WRITE 1117 +#define WT_STAT_CONN_CACHE_WRITE 1118 /*! cache: pages written requiring in-memory restoration */ -#define WT_STAT_CONN_CACHE_WRITE_RESTORE 1118 +#define WT_STAT_CONN_CACHE_WRITE_RESTORE 1119 /*! cache: percentage overhead */ -#define WT_STAT_CONN_CACHE_OVERHEAD 1119 +#define WT_STAT_CONN_CACHE_OVERHEAD 1120 /*! cache: tracked bytes belonging to internal pages in the cache */ -#define WT_STAT_CONN_CACHE_BYTES_INTERNAL 1120 +#define WT_STAT_CONN_CACHE_BYTES_INTERNAL 1121 /*! cache: tracked bytes belonging to leaf pages in the cache */ -#define WT_STAT_CONN_CACHE_BYTES_LEAF 1121 +#define WT_STAT_CONN_CACHE_BYTES_LEAF 1122 /*! cache: tracked dirty bytes in the cache */ -#define WT_STAT_CONN_CACHE_BYTES_DIRTY 1122 +#define WT_STAT_CONN_CACHE_BYTES_DIRTY 1123 /*! cache: tracked dirty pages in the cache */ -#define WT_STAT_CONN_CACHE_PAGES_DIRTY 1123 +#define WT_STAT_CONN_CACHE_PAGES_DIRTY 1124 /*! cache: unmodified pages evicted */ -#define WT_STAT_CONN_CACHE_EVICTION_CLEAN 1124 +#define WT_STAT_CONN_CACHE_EVICTION_CLEAN 1125 /*! connection: auto adjusting condition resets */ -#define WT_STAT_CONN_COND_AUTO_WAIT_RESET 1125 +#define WT_STAT_CONN_COND_AUTO_WAIT_RESET 1126 /*! connection: auto adjusting condition wait calls */ -#define WT_STAT_CONN_COND_AUTO_WAIT 1126 +#define WT_STAT_CONN_COND_AUTO_WAIT 1127 /*! connection: detected system time went backwards */ -#define WT_STAT_CONN_TIME_TRAVEL 1127 +#define WT_STAT_CONN_TIME_TRAVEL 1128 /*! connection: files currently open */ -#define WT_STAT_CONN_FILE_OPEN 1128 +#define WT_STAT_CONN_FILE_OPEN 1129 /*! connection: memory allocations */ -#define WT_STAT_CONN_MEMORY_ALLOCATION 1129 +#define WT_STAT_CONN_MEMORY_ALLOCATION 1130 /*! connection: memory frees */ -#define WT_STAT_CONN_MEMORY_FREE 1130 +#define WT_STAT_CONN_MEMORY_FREE 1131 /*! connection: memory re-allocations */ -#define WT_STAT_CONN_MEMORY_GROW 1131 +#define WT_STAT_CONN_MEMORY_GROW 1132 /*! connection: pthread mutex condition wait calls */ -#define WT_STAT_CONN_COND_WAIT 1132 +#define WT_STAT_CONN_COND_WAIT 1133 /*! connection: pthread mutex shared lock read-lock calls */ -#define WT_STAT_CONN_RWLOCK_READ 1133 +#define WT_STAT_CONN_RWLOCK_READ 1134 /*! connection: pthread mutex shared lock write-lock calls */ -#define WT_STAT_CONN_RWLOCK_WRITE 1134 +#define WT_STAT_CONN_RWLOCK_WRITE 1135 /*! connection: total fsync I/Os */ -#define WT_STAT_CONN_FSYNC_IO 1135 +#define WT_STAT_CONN_FSYNC_IO 1136 /*! connection: total read I/Os */ -#define WT_STAT_CONN_READ_IO 1136 +#define WT_STAT_CONN_READ_IO 1137 /*! connection: total write I/Os */ -#define WT_STAT_CONN_WRITE_IO 1137 +#define WT_STAT_CONN_WRITE_IO 1138 /*! cursor: cursor create calls */ -#define WT_STAT_CONN_CURSOR_CREATE 1138 +#define WT_STAT_CONN_CURSOR_CREATE 1139 /*! cursor: cursor insert calls */ -#define WT_STAT_CONN_CURSOR_INSERT 1139 +#define WT_STAT_CONN_CURSOR_INSERT 1140 /*! cursor: cursor modify calls */ -#define WT_STAT_CONN_CURSOR_MODIFY 1140 +#define WT_STAT_CONN_CURSOR_MODIFY 1141 /*! cursor: cursor next calls */ -#define WT_STAT_CONN_CURSOR_NEXT 1141 +#define WT_STAT_CONN_CURSOR_NEXT 1142 /*! cursor: cursor operation restarted */ -#define WT_STAT_CONN_CURSOR_RESTART 1142 +#define WT_STAT_CONN_CURSOR_RESTART 1143 /*! cursor: cursor prev calls */ -#define WT_STAT_CONN_CURSOR_PREV 1143 +#define WT_STAT_CONN_CURSOR_PREV 1144 /*! cursor: cursor remove calls */ -#define WT_STAT_CONN_CURSOR_REMOVE 1144 +#define WT_STAT_CONN_CURSOR_REMOVE 1145 /*! cursor: cursor reserve calls */ -#define WT_STAT_CONN_CURSOR_RESERVE 1145 +#define WT_STAT_CONN_CURSOR_RESERVE 1146 /*! cursor: cursor reset calls */ -#define WT_STAT_CONN_CURSOR_RESET 1146 +#define WT_STAT_CONN_CURSOR_RESET 1147 /*! cursor: cursor search calls */ -#define WT_STAT_CONN_CURSOR_SEARCH 1147 +#define WT_STAT_CONN_CURSOR_SEARCH 1148 /*! cursor: cursor search near calls */ -#define WT_STAT_CONN_CURSOR_SEARCH_NEAR 1148 +#define WT_STAT_CONN_CURSOR_SEARCH_NEAR 1149 /*! cursor: cursor sweep buckets */ -#define WT_STAT_CONN_CURSOR_SWEEP_BUCKETS 1149 +#define WT_STAT_CONN_CURSOR_SWEEP_BUCKETS 1150 /*! cursor: cursor sweep cursors closed */ -#define WT_STAT_CONN_CURSOR_SWEEP_CLOSED 1150 +#define WT_STAT_CONN_CURSOR_SWEEP_CLOSED 1151 /*! cursor: cursor sweep cursors examined */ -#define WT_STAT_CONN_CURSOR_SWEEP_EXAMINED 1151 +#define WT_STAT_CONN_CURSOR_SWEEP_EXAMINED 1152 /*! cursor: cursor sweeps */ -#define WT_STAT_CONN_CURSOR_SWEEP 1152 +#define WT_STAT_CONN_CURSOR_SWEEP 1153 /*! cursor: cursor update calls */ -#define WT_STAT_CONN_CURSOR_UPDATE 1153 +#define WT_STAT_CONN_CURSOR_UPDATE 1154 /*! cursor: cursors cached on close */ -#define WT_STAT_CONN_CURSOR_CACHE 1154 +#define WT_STAT_CONN_CURSOR_CACHE 1155 /*! cursor: cursors reused from cache */ -#define WT_STAT_CONN_CURSOR_REOPEN 1155 +#define WT_STAT_CONN_CURSOR_REOPEN 1156 /*! cursor: truncate calls */ -#define WT_STAT_CONN_CURSOR_TRUNCATE 1156 +#define WT_STAT_CONN_CURSOR_TRUNCATE 1157 /*! data-handle: connection data handles currently active */ -#define WT_STAT_CONN_DH_CONN_HANDLE_COUNT 1157 +#define WT_STAT_CONN_DH_CONN_HANDLE_COUNT 1158 /*! data-handle: connection sweep candidate became referenced */ -#define WT_STAT_CONN_DH_SWEEP_REF 1158 +#define WT_STAT_CONN_DH_SWEEP_REF 1159 /*! data-handle: connection sweep dhandles closed */ -#define WT_STAT_CONN_DH_SWEEP_CLOSE 1159 +#define WT_STAT_CONN_DH_SWEEP_CLOSE 1160 /*! data-handle: connection sweep dhandles removed from hash list */ -#define WT_STAT_CONN_DH_SWEEP_REMOVE 1160 +#define WT_STAT_CONN_DH_SWEEP_REMOVE 1161 /*! data-handle: connection sweep time-of-death sets */ -#define WT_STAT_CONN_DH_SWEEP_TOD 1161 +#define WT_STAT_CONN_DH_SWEEP_TOD 1162 /*! data-handle: connection sweeps */ -#define WT_STAT_CONN_DH_SWEEPS 1162 +#define WT_STAT_CONN_DH_SWEEPS 1163 /*! data-handle: session dhandles swept */ -#define WT_STAT_CONN_DH_SESSION_HANDLES 1163 +#define WT_STAT_CONN_DH_SESSION_HANDLES 1164 /*! data-handle: session sweep attempts */ -#define WT_STAT_CONN_DH_SESSION_SWEEPS 1164 +#define WT_STAT_CONN_DH_SESSION_SWEEPS 1165 /*! lock: checkpoint lock acquisitions */ -#define WT_STAT_CONN_LOCK_CHECKPOINT_COUNT 1165 +#define WT_STAT_CONN_LOCK_CHECKPOINT_COUNT 1166 /*! lock: checkpoint lock application thread wait time (usecs) */ -#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_APPLICATION 1166 +#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_APPLICATION 1167 /*! lock: checkpoint lock internal thread wait time (usecs) */ -#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_INTERNAL 1167 +#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_INTERNAL 1168 /*! * lock: commit timestamp queue lock application thread time waiting for * the dhandle lock (usecs) */ -#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_WAIT_APPLICATION 1168 +#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_WAIT_APPLICATION 1169 /*! * lock: commit timestamp queue lock internal thread time waiting for the * dhandle lock (usecs) */ -#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_WAIT_INTERNAL 1169 +#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_WAIT_INTERNAL 1170 /*! lock: commit timestamp queue read lock acquisitions */ -#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_READ_COUNT 1170 +#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_READ_COUNT 1171 /*! lock: commit timestamp queue write lock acquisitions */ -#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_WRITE_COUNT 1171 +#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_WRITE_COUNT 1172 /*! * lock: dhandle lock application thread time waiting for the dhandle * lock (usecs) */ -#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_APPLICATION 1172 +#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_APPLICATION 1173 /*! * lock: dhandle lock internal thread time waiting for the dhandle lock * (usecs) */ -#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_INTERNAL 1173 +#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_INTERNAL 1174 /*! lock: dhandle read lock acquisitions */ -#define WT_STAT_CONN_LOCK_DHANDLE_READ_COUNT 1174 +#define WT_STAT_CONN_LOCK_DHANDLE_READ_COUNT 1175 /*! lock: dhandle write lock acquisitions */ -#define WT_STAT_CONN_LOCK_DHANDLE_WRITE_COUNT 1175 +#define WT_STAT_CONN_LOCK_DHANDLE_WRITE_COUNT 1176 /*! lock: metadata lock acquisitions */ -#define WT_STAT_CONN_LOCK_METADATA_COUNT 1176 +#define WT_STAT_CONN_LOCK_METADATA_COUNT 1177 /*! lock: metadata lock application thread wait time (usecs) */ -#define WT_STAT_CONN_LOCK_METADATA_WAIT_APPLICATION 1177 +#define WT_STAT_CONN_LOCK_METADATA_WAIT_APPLICATION 1178 /*! lock: metadata lock internal thread wait time (usecs) */ -#define WT_STAT_CONN_LOCK_METADATA_WAIT_INTERNAL 1178 +#define WT_STAT_CONN_LOCK_METADATA_WAIT_INTERNAL 1179 /*! * lock: read timestamp queue lock application thread time waiting for * the dhandle lock (usecs) */ -#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_APPLICATION 1179 +#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_APPLICATION 1180 /*! * lock: read timestamp queue lock internal thread time waiting for the * dhandle lock (usecs) */ -#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_INTERNAL 1180 +#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_INTERNAL 1181 /*! lock: read timestamp queue read lock acquisitions */ -#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_READ_COUNT 1181 +#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_READ_COUNT 1182 /*! lock: read timestamp queue write lock acquisitions */ -#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WRITE_COUNT 1182 +#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WRITE_COUNT 1183 /*! lock: schema lock acquisitions */ -#define WT_STAT_CONN_LOCK_SCHEMA_COUNT 1183 +#define WT_STAT_CONN_LOCK_SCHEMA_COUNT 1184 /*! lock: schema lock application thread wait time (usecs) */ -#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_APPLICATION 1184 +#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_APPLICATION 1185 /*! lock: schema lock internal thread wait time (usecs) */ -#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_INTERNAL 1185 +#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_INTERNAL 1186 /*! * lock: table lock application thread time waiting for the table lock * (usecs) */ -#define WT_STAT_CONN_LOCK_TABLE_WAIT_APPLICATION 1186 +#define WT_STAT_CONN_LOCK_TABLE_WAIT_APPLICATION 1187 /*! * lock: table lock internal thread time waiting for the table lock * (usecs) */ -#define WT_STAT_CONN_LOCK_TABLE_WAIT_INTERNAL 1187 +#define WT_STAT_CONN_LOCK_TABLE_WAIT_INTERNAL 1188 /*! lock: table read lock acquisitions */ -#define WT_STAT_CONN_LOCK_TABLE_READ_COUNT 1188 +#define WT_STAT_CONN_LOCK_TABLE_READ_COUNT 1189 /*! lock: table write lock acquisitions */ -#define WT_STAT_CONN_LOCK_TABLE_WRITE_COUNT 1189 +#define WT_STAT_CONN_LOCK_TABLE_WRITE_COUNT 1190 /*! * lock: txn global lock application thread time waiting for the dhandle * lock (usecs) */ -#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_APPLICATION 1190 +#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_APPLICATION 1191 /*! * lock: txn global lock internal thread time waiting for the dhandle * lock (usecs) */ -#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_INTERNAL 1191 +#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_INTERNAL 1192 /*! lock: txn global read lock acquisitions */ -#define WT_STAT_CONN_LOCK_TXN_GLOBAL_READ_COUNT 1192 +#define WT_STAT_CONN_LOCK_TXN_GLOBAL_READ_COUNT 1193 /*! lock: txn global write lock acquisitions */ -#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WRITE_COUNT 1193 +#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WRITE_COUNT 1194 /*! log: busy returns attempting to switch slots */ -#define WT_STAT_CONN_LOG_SLOT_SWITCH_BUSY 1194 +#define WT_STAT_CONN_LOG_SLOT_SWITCH_BUSY 1195 /*! log: force archive time sleeping (usecs) */ -#define WT_STAT_CONN_LOG_FORCE_ARCHIVE_SLEEP 1195 +#define WT_STAT_CONN_LOG_FORCE_ARCHIVE_SLEEP 1196 /*! log: log bytes of payload data */ -#define WT_STAT_CONN_LOG_BYTES_PAYLOAD 1196 +#define WT_STAT_CONN_LOG_BYTES_PAYLOAD 1197 /*! log: log bytes written */ -#define WT_STAT_CONN_LOG_BYTES_WRITTEN 1197 +#define WT_STAT_CONN_LOG_BYTES_WRITTEN 1198 /*! log: log files manually zero-filled */ -#define WT_STAT_CONN_LOG_ZERO_FILLS 1198 +#define WT_STAT_CONN_LOG_ZERO_FILLS 1199 /*! log: log flush operations */ -#define WT_STAT_CONN_LOG_FLUSH 1199 +#define WT_STAT_CONN_LOG_FLUSH 1200 /*! log: log force write operations */ -#define WT_STAT_CONN_LOG_FORCE_WRITE 1200 +#define WT_STAT_CONN_LOG_FORCE_WRITE 1201 /*! log: log force write operations skipped */ -#define WT_STAT_CONN_LOG_FORCE_WRITE_SKIP 1201 +#define WT_STAT_CONN_LOG_FORCE_WRITE_SKIP 1202 /*! log: log records compressed */ -#define WT_STAT_CONN_LOG_COMPRESS_WRITES 1202 +#define WT_STAT_CONN_LOG_COMPRESS_WRITES 1203 /*! log: log records not compressed */ -#define WT_STAT_CONN_LOG_COMPRESS_WRITE_FAILS 1203 +#define WT_STAT_CONN_LOG_COMPRESS_WRITE_FAILS 1204 /*! log: log records too small to compress */ -#define WT_STAT_CONN_LOG_COMPRESS_SMALL 1204 +#define WT_STAT_CONN_LOG_COMPRESS_SMALL 1205 /*! log: log release advances write LSN */ -#define WT_STAT_CONN_LOG_RELEASE_WRITE_LSN 1205 +#define WT_STAT_CONN_LOG_RELEASE_WRITE_LSN 1206 /*! log: log scan operations */ -#define WT_STAT_CONN_LOG_SCANS 1206 +#define WT_STAT_CONN_LOG_SCANS 1207 /*! log: log scan records requiring two reads */ -#define WT_STAT_CONN_LOG_SCAN_REREADS 1207 +#define WT_STAT_CONN_LOG_SCAN_REREADS 1208 /*! log: log server thread advances write LSN */ -#define WT_STAT_CONN_LOG_WRITE_LSN 1208 +#define WT_STAT_CONN_LOG_WRITE_LSN 1209 /*! log: log server thread write LSN walk skipped */ -#define WT_STAT_CONN_LOG_WRITE_LSN_SKIP 1209 +#define WT_STAT_CONN_LOG_WRITE_LSN_SKIP 1210 /*! log: log sync operations */ -#define WT_STAT_CONN_LOG_SYNC 1210 +#define WT_STAT_CONN_LOG_SYNC 1211 /*! log: log sync time duration (usecs) */ -#define WT_STAT_CONN_LOG_SYNC_DURATION 1211 +#define WT_STAT_CONN_LOG_SYNC_DURATION 1212 /*! log: log sync_dir operations */ -#define WT_STAT_CONN_LOG_SYNC_DIR 1212 +#define WT_STAT_CONN_LOG_SYNC_DIR 1213 /*! log: log sync_dir time duration (usecs) */ -#define WT_STAT_CONN_LOG_SYNC_DIR_DURATION 1213 +#define WT_STAT_CONN_LOG_SYNC_DIR_DURATION 1214 /*! log: log write operations */ -#define WT_STAT_CONN_LOG_WRITES 1214 +#define WT_STAT_CONN_LOG_WRITES 1215 /*! log: logging bytes consolidated */ -#define WT_STAT_CONN_LOG_SLOT_CONSOLIDATED 1215 +#define WT_STAT_CONN_LOG_SLOT_CONSOLIDATED 1216 /*! log: maximum log file size */ -#define WT_STAT_CONN_LOG_MAX_FILESIZE 1216 +#define WT_STAT_CONN_LOG_MAX_FILESIZE 1217 /*! log: number of pre-allocated log files to create */ -#define WT_STAT_CONN_LOG_PREALLOC_MAX 1217 +#define WT_STAT_CONN_LOG_PREALLOC_MAX 1218 /*! log: pre-allocated log files not ready and missed */ -#define WT_STAT_CONN_LOG_PREALLOC_MISSED 1218 +#define WT_STAT_CONN_LOG_PREALLOC_MISSED 1219 /*! log: pre-allocated log files prepared */ -#define WT_STAT_CONN_LOG_PREALLOC_FILES 1219 +#define WT_STAT_CONN_LOG_PREALLOC_FILES 1220 /*! log: pre-allocated log files used */ -#define WT_STAT_CONN_LOG_PREALLOC_USED 1220 +#define WT_STAT_CONN_LOG_PREALLOC_USED 1221 /*! log: records processed by log scan */ -#define WT_STAT_CONN_LOG_SCAN_RECORDS 1221 +#define WT_STAT_CONN_LOG_SCAN_RECORDS 1222 /*! log: slot close lost race */ -#define WT_STAT_CONN_LOG_SLOT_CLOSE_RACE 1222 +#define WT_STAT_CONN_LOG_SLOT_CLOSE_RACE 1223 /*! log: slot close unbuffered waits */ -#define WT_STAT_CONN_LOG_SLOT_CLOSE_UNBUF 1223 +#define WT_STAT_CONN_LOG_SLOT_CLOSE_UNBUF 1224 /*! log: slot closures */ -#define WT_STAT_CONN_LOG_SLOT_CLOSES 1224 +#define WT_STAT_CONN_LOG_SLOT_CLOSES 1225 /*! log: slot join atomic update races */ -#define WT_STAT_CONN_LOG_SLOT_RACES 1225 +#define WT_STAT_CONN_LOG_SLOT_RACES 1226 /*! log: slot join calls atomic updates raced */ -#define WT_STAT_CONN_LOG_SLOT_YIELD_RACE 1226 +#define WT_STAT_CONN_LOG_SLOT_YIELD_RACE 1227 /*! log: slot join calls did not yield */ -#define WT_STAT_CONN_LOG_SLOT_IMMEDIATE 1227 +#define WT_STAT_CONN_LOG_SLOT_IMMEDIATE 1228 /*! log: slot join calls found active slot closed */ -#define WT_STAT_CONN_LOG_SLOT_YIELD_CLOSE 1228 +#define WT_STAT_CONN_LOG_SLOT_YIELD_CLOSE 1229 /*! log: slot join calls slept */ -#define WT_STAT_CONN_LOG_SLOT_YIELD_SLEEP 1229 +#define WT_STAT_CONN_LOG_SLOT_YIELD_SLEEP 1230 /*! log: slot join calls yielded */ -#define WT_STAT_CONN_LOG_SLOT_YIELD 1230 +#define WT_STAT_CONN_LOG_SLOT_YIELD 1231 /*! log: slot join found active slot closed */ -#define WT_STAT_CONN_LOG_SLOT_ACTIVE_CLOSED 1231 +#define WT_STAT_CONN_LOG_SLOT_ACTIVE_CLOSED 1232 /*! log: slot joins yield time (usecs) */ -#define WT_STAT_CONN_LOG_SLOT_YIELD_DURATION 1232 +#define WT_STAT_CONN_LOG_SLOT_YIELD_DURATION 1233 /*! log: slot transitions unable to find free slot */ -#define WT_STAT_CONN_LOG_SLOT_NO_FREE_SLOTS 1233 +#define WT_STAT_CONN_LOG_SLOT_NO_FREE_SLOTS 1234 /*! log: slot unbuffered writes */ -#define WT_STAT_CONN_LOG_SLOT_UNBUFFERED 1234 +#define WT_STAT_CONN_LOG_SLOT_UNBUFFERED 1235 /*! log: total in-memory size of compressed records */ -#define WT_STAT_CONN_LOG_COMPRESS_MEM 1235 +#define WT_STAT_CONN_LOG_COMPRESS_MEM 1236 /*! log: total log buffer size */ -#define WT_STAT_CONN_LOG_BUFFER_SIZE 1236 +#define WT_STAT_CONN_LOG_BUFFER_SIZE 1237 /*! log: total size of compressed records */ -#define WT_STAT_CONN_LOG_COMPRESS_LEN 1237 +#define WT_STAT_CONN_LOG_COMPRESS_LEN 1238 /*! log: written slots coalesced */ -#define WT_STAT_CONN_LOG_SLOT_COALESCED 1238 +#define WT_STAT_CONN_LOG_SLOT_COALESCED 1239 /*! log: yields waiting for previous log file close */ -#define WT_STAT_CONN_LOG_CLOSE_YIELDS 1239 +#define WT_STAT_CONN_LOG_CLOSE_YIELDS 1240 /*! perf: file system read latency histogram (bucket 1) - 10-49ms */ -#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT50 1240 +#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT50 1241 /*! perf: file system read latency histogram (bucket 2) - 50-99ms */ -#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT100 1241 +#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT100 1242 /*! perf: file system read latency histogram (bucket 3) - 100-249ms */ -#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT250 1242 +#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT250 1243 /*! perf: file system read latency histogram (bucket 4) - 250-499ms */ -#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT500 1243 +#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT500 1244 /*! perf: file system read latency histogram (bucket 5) - 500-999ms */ -#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT1000 1244 +#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT1000 1245 /*! perf: file system read latency histogram (bucket 6) - 1000ms+ */ -#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_GT1000 1245 +#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_GT1000 1246 /*! perf: file system write latency histogram (bucket 1) - 10-49ms */ -#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT50 1246 +#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT50 1247 /*! perf: file system write latency histogram (bucket 2) - 50-99ms */ -#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT100 1247 +#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT100 1248 /*! perf: file system write latency histogram (bucket 3) - 100-249ms */ -#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT250 1248 +#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT250 1249 /*! perf: file system write latency histogram (bucket 4) - 250-499ms */ -#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT500 1249 +#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT500 1250 /*! perf: file system write latency histogram (bucket 5) - 500-999ms */ -#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT1000 1250 +#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT1000 1251 /*! perf: file system write latency histogram (bucket 6) - 1000ms+ */ -#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_GT1000 1251 +#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_GT1000 1252 /*! perf: operation read latency histogram (bucket 1) - 100-249us */ -#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT250 1252 +#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT250 1253 /*! perf: operation read latency histogram (bucket 2) - 250-499us */ -#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT500 1253 +#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT500 1254 /*! perf: operation read latency histogram (bucket 3) - 500-999us */ -#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT1000 1254 +#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT1000 1255 /*! perf: operation read latency histogram (bucket 4) - 1000-9999us */ -#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT10000 1255 +#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT10000 1256 /*! perf: operation read latency histogram (bucket 5) - 10000us+ */ -#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_GT10000 1256 +#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_GT10000 1257 /*! perf: operation write latency histogram (bucket 1) - 100-249us */ -#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT250 1257 +#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT250 1258 /*! perf: operation write latency histogram (bucket 2) - 250-499us */ -#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT500 1258 +#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT500 1259 /*! perf: operation write latency histogram (bucket 3) - 500-999us */ -#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT1000 1259 +#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT1000 1260 /*! perf: operation write latency histogram (bucket 4) - 1000-9999us */ -#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT10000 1260 +#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT10000 1261 /*! perf: operation write latency histogram (bucket 5) - 10000us+ */ -#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_GT10000 1261 +#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_GT10000 1262 /*! reconciliation: fast-path pages deleted */ -#define WT_STAT_CONN_REC_PAGE_DELETE_FAST 1262 +#define WT_STAT_CONN_REC_PAGE_DELETE_FAST 1263 /*! reconciliation: page reconciliation calls */ -#define WT_STAT_CONN_REC_PAGES 1263 +#define WT_STAT_CONN_REC_PAGES 1264 /*! reconciliation: page reconciliation calls for eviction */ -#define WT_STAT_CONN_REC_PAGES_EVICTION 1264 +#define WT_STAT_CONN_REC_PAGES_EVICTION 1265 /*! reconciliation: pages deleted */ -#define WT_STAT_CONN_REC_PAGE_DELETE 1265 +#define WT_STAT_CONN_REC_PAGE_DELETE 1266 /*! reconciliation: split bytes currently awaiting free */ -#define WT_STAT_CONN_REC_SPLIT_STASHED_BYTES 1266 +#define WT_STAT_CONN_REC_SPLIT_STASHED_BYTES 1267 /*! reconciliation: split objects currently awaiting free */ -#define WT_STAT_CONN_REC_SPLIT_STASHED_OBJECTS 1267 +#define WT_STAT_CONN_REC_SPLIT_STASHED_OBJECTS 1268 /*! session: open cursor count */ -#define WT_STAT_CONN_SESSION_CURSOR_OPEN 1268 +#define WT_STAT_CONN_SESSION_CURSOR_OPEN 1269 /*! session: open session count */ -#define WT_STAT_CONN_SESSION_OPEN 1269 +#define WT_STAT_CONN_SESSION_OPEN 1270 /*! session: table alter failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_ALTER_FAIL 1270 +#define WT_STAT_CONN_SESSION_TABLE_ALTER_FAIL 1271 /*! session: table alter successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_ALTER_SUCCESS 1271 +#define WT_STAT_CONN_SESSION_TABLE_ALTER_SUCCESS 1272 /*! session: table alter unchanged and skipped */ -#define WT_STAT_CONN_SESSION_TABLE_ALTER_SKIP 1272 +#define WT_STAT_CONN_SESSION_TABLE_ALTER_SKIP 1273 /*! session: table compact failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_COMPACT_FAIL 1273 +#define WT_STAT_CONN_SESSION_TABLE_COMPACT_FAIL 1274 /*! session: table compact successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_COMPACT_SUCCESS 1274 +#define WT_STAT_CONN_SESSION_TABLE_COMPACT_SUCCESS 1275 /*! session: table create failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_CREATE_FAIL 1275 +#define WT_STAT_CONN_SESSION_TABLE_CREATE_FAIL 1276 /*! session: table create successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_CREATE_SUCCESS 1276 +#define WT_STAT_CONN_SESSION_TABLE_CREATE_SUCCESS 1277 /*! session: table drop failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_DROP_FAIL 1277 +#define WT_STAT_CONN_SESSION_TABLE_DROP_FAIL 1278 /*! session: table drop successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_DROP_SUCCESS 1278 +#define WT_STAT_CONN_SESSION_TABLE_DROP_SUCCESS 1279 /*! session: table rebalance failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_REBALANCE_FAIL 1279 +#define WT_STAT_CONN_SESSION_TABLE_REBALANCE_FAIL 1280 /*! session: table rebalance successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_REBALANCE_SUCCESS 1280 +#define WT_STAT_CONN_SESSION_TABLE_REBALANCE_SUCCESS 1281 /*! session: table rename failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_RENAME_FAIL 1281 +#define WT_STAT_CONN_SESSION_TABLE_RENAME_FAIL 1282 /*! session: table rename successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_RENAME_SUCCESS 1282 +#define WT_STAT_CONN_SESSION_TABLE_RENAME_SUCCESS 1283 /*! session: table salvage failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_FAIL 1283 +#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_FAIL 1284 /*! session: table salvage successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_SUCCESS 1284 +#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_SUCCESS 1285 /*! session: table truncate failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_FAIL 1285 +#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_FAIL 1286 /*! session: table truncate successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_SUCCESS 1286 +#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_SUCCESS 1287 /*! session: table verify failed calls */ -#define WT_STAT_CONN_SESSION_TABLE_VERIFY_FAIL 1287 +#define WT_STAT_CONN_SESSION_TABLE_VERIFY_FAIL 1288 /*! session: table verify successful calls */ -#define WT_STAT_CONN_SESSION_TABLE_VERIFY_SUCCESS 1288 +#define WT_STAT_CONN_SESSION_TABLE_VERIFY_SUCCESS 1289 /*! thread-state: active filesystem fsync calls */ -#define WT_STAT_CONN_THREAD_FSYNC_ACTIVE 1289 +#define WT_STAT_CONN_THREAD_FSYNC_ACTIVE 1290 /*! thread-state: active filesystem read calls */ -#define WT_STAT_CONN_THREAD_READ_ACTIVE 1290 +#define WT_STAT_CONN_THREAD_READ_ACTIVE 1291 /*! thread-state: active filesystem write calls */ -#define WT_STAT_CONN_THREAD_WRITE_ACTIVE 1291 +#define WT_STAT_CONN_THREAD_WRITE_ACTIVE 1292 /*! thread-yield: application thread time evicting (usecs) */ -#define WT_STAT_CONN_APPLICATION_EVICT_TIME 1292 +#define WT_STAT_CONN_APPLICATION_EVICT_TIME 1293 /*! thread-yield: application thread time waiting for cache (usecs) */ -#define WT_STAT_CONN_APPLICATION_CACHE_TIME 1293 +#define WT_STAT_CONN_APPLICATION_CACHE_TIME 1294 /*! * thread-yield: connection close blocked waiting for transaction state * stabilization */ -#define WT_STAT_CONN_TXN_RELEASE_BLOCKED 1294 +#define WT_STAT_CONN_TXN_RELEASE_BLOCKED 1295 /*! thread-yield: connection close yielded for lsm manager shutdown */ -#define WT_STAT_CONN_CONN_CLOSE_BLOCKED_LSM 1295 +#define WT_STAT_CONN_CONN_CLOSE_BLOCKED_LSM 1296 /*! thread-yield: data handle lock yielded */ -#define WT_STAT_CONN_DHANDLE_LOCK_BLOCKED 1296 +#define WT_STAT_CONN_DHANDLE_LOCK_BLOCKED 1297 /*! * thread-yield: get reference for page index and slot time sleeping * (usecs) */ -#define WT_STAT_CONN_PAGE_INDEX_SLOT_REF_BLOCKED 1297 +#define WT_STAT_CONN_PAGE_INDEX_SLOT_REF_BLOCKED 1298 /*! thread-yield: log server sync yielded for log write */ -#define WT_STAT_CONN_LOG_SERVER_SYNC_BLOCKED 1298 +#define WT_STAT_CONN_LOG_SERVER_SYNC_BLOCKED 1299 /*! thread-yield: page access yielded due to prepare state change */ -#define WT_STAT_CONN_PREPARED_TRANSITION_BLOCKED_PAGE 1299 +#define WT_STAT_CONN_PREPARED_TRANSITION_BLOCKED_PAGE 1300 /*! thread-yield: page acquire busy blocked */ -#define WT_STAT_CONN_PAGE_BUSY_BLOCKED 1300 +#define WT_STAT_CONN_PAGE_BUSY_BLOCKED 1301 /*! thread-yield: page acquire eviction blocked */ -#define WT_STAT_CONN_PAGE_FORCIBLE_EVICT_BLOCKED 1301 +#define WT_STAT_CONN_PAGE_FORCIBLE_EVICT_BLOCKED 1302 /*! thread-yield: page acquire locked blocked */ -#define WT_STAT_CONN_PAGE_LOCKED_BLOCKED 1302 +#define WT_STAT_CONN_PAGE_LOCKED_BLOCKED 1303 /*! thread-yield: page acquire read blocked */ -#define WT_STAT_CONN_PAGE_READ_BLOCKED 1303 +#define WT_STAT_CONN_PAGE_READ_BLOCKED 1304 /*! thread-yield: page acquire time sleeping (usecs) */ -#define WT_STAT_CONN_PAGE_SLEEP 1304 +#define WT_STAT_CONN_PAGE_SLEEP 1305 /*! * thread-yield: page delete rollback time sleeping for state change * (usecs) */ -#define WT_STAT_CONN_PAGE_DEL_ROLLBACK_BLOCKED 1305 +#define WT_STAT_CONN_PAGE_DEL_ROLLBACK_BLOCKED 1306 /*! thread-yield: page reconciliation yielded due to child modification */ -#define WT_STAT_CONN_CHILD_MODIFY_BLOCKED_PAGE 1306 +#define WT_STAT_CONN_CHILD_MODIFY_BLOCKED_PAGE 1307 /*! transaction: commit timestamp queue insert to empty */ -#define WT_STAT_CONN_TXN_COMMIT_QUEUE_EMPTY 1307 +#define WT_STAT_CONN_TXN_COMMIT_QUEUE_EMPTY 1308 /*! transaction: commit timestamp queue inserts to tail */ -#define WT_STAT_CONN_TXN_COMMIT_QUEUE_TAIL 1308 +#define WT_STAT_CONN_TXN_COMMIT_QUEUE_TAIL 1309 /*! transaction: commit timestamp queue inserts total */ -#define WT_STAT_CONN_TXN_COMMIT_QUEUE_INSERTS 1309 +#define WT_STAT_CONN_TXN_COMMIT_QUEUE_INSERTS 1310 /*! transaction: commit timestamp queue length */ -#define WT_STAT_CONN_TXN_COMMIT_QUEUE_LEN 1310 +#define WT_STAT_CONN_TXN_COMMIT_QUEUE_LEN 1311 /*! transaction: number of named snapshots created */ -#define WT_STAT_CONN_TXN_SNAPSHOTS_CREATED 1311 +#define WT_STAT_CONN_TXN_SNAPSHOTS_CREATED 1312 /*! transaction: number of named snapshots dropped */ -#define WT_STAT_CONN_TXN_SNAPSHOTS_DROPPED 1312 +#define WT_STAT_CONN_TXN_SNAPSHOTS_DROPPED 1313 /*! transaction: prepared transactions */ -#define WT_STAT_CONN_TXN_PREPARE 1313 +#define WT_STAT_CONN_TXN_PREPARE 1314 /*! transaction: prepared transactions committed */ -#define WT_STAT_CONN_TXN_PREPARE_COMMIT 1314 +#define WT_STAT_CONN_TXN_PREPARE_COMMIT 1315 /*! transaction: prepared transactions currently active */ -#define WT_STAT_CONN_TXN_PREPARE_ACTIVE 1315 +#define WT_STAT_CONN_TXN_PREPARE_ACTIVE 1316 /*! transaction: prepared transactions rolled back */ -#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK 1316 +#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK 1317 /*! transaction: query timestamp calls */ -#define WT_STAT_CONN_TXN_QUERY_TS 1317 +#define WT_STAT_CONN_TXN_QUERY_TS 1318 /*! transaction: read timestamp queue insert to empty */ -#define WT_STAT_CONN_TXN_READ_QUEUE_EMPTY 1318 +#define WT_STAT_CONN_TXN_READ_QUEUE_EMPTY 1319 /*! transaction: read timestamp queue inserts to head */ -#define WT_STAT_CONN_TXN_READ_QUEUE_HEAD 1319 +#define WT_STAT_CONN_TXN_READ_QUEUE_HEAD 1320 /*! transaction: read timestamp queue inserts total */ -#define WT_STAT_CONN_TXN_READ_QUEUE_INSERTS 1320 +#define WT_STAT_CONN_TXN_READ_QUEUE_INSERTS 1321 /*! transaction: read timestamp queue length */ -#define WT_STAT_CONN_TXN_READ_QUEUE_LEN 1321 +#define WT_STAT_CONN_TXN_READ_QUEUE_LEN 1322 /*! transaction: rollback to stable calls */ -#define WT_STAT_CONN_TXN_ROLLBACK_TO_STABLE 1322 +#define WT_STAT_CONN_TXN_ROLLBACK_TO_STABLE 1323 /*! transaction: rollback to stable updates aborted */ -#define WT_STAT_CONN_TXN_ROLLBACK_UPD_ABORTED 1323 +#define WT_STAT_CONN_TXN_ROLLBACK_UPD_ABORTED 1324 /*! transaction: rollback to stable updates removed from lookaside */ -#define WT_STAT_CONN_TXN_ROLLBACK_LAS_REMOVED 1324 +#define WT_STAT_CONN_TXN_ROLLBACK_LAS_REMOVED 1325 /*! transaction: set timestamp calls */ -#define WT_STAT_CONN_TXN_SET_TS 1325 +#define WT_STAT_CONN_TXN_SET_TS 1326 /*! transaction: set timestamp commit calls */ -#define WT_STAT_CONN_TXN_SET_TS_COMMIT 1326 +#define WT_STAT_CONN_TXN_SET_TS_COMMIT 1327 /*! transaction: set timestamp commit updates */ -#define WT_STAT_CONN_TXN_SET_TS_COMMIT_UPD 1327 +#define WT_STAT_CONN_TXN_SET_TS_COMMIT_UPD 1328 /*! transaction: set timestamp oldest calls */ -#define WT_STAT_CONN_TXN_SET_TS_OLDEST 1328 +#define WT_STAT_CONN_TXN_SET_TS_OLDEST 1329 /*! transaction: set timestamp oldest updates */ -#define WT_STAT_CONN_TXN_SET_TS_OLDEST_UPD 1329 +#define WT_STAT_CONN_TXN_SET_TS_OLDEST_UPD 1330 /*! transaction: set timestamp stable calls */ -#define WT_STAT_CONN_TXN_SET_TS_STABLE 1330 +#define WT_STAT_CONN_TXN_SET_TS_STABLE 1331 /*! transaction: set timestamp stable updates */ -#define WT_STAT_CONN_TXN_SET_TS_STABLE_UPD 1331 +#define WT_STAT_CONN_TXN_SET_TS_STABLE_UPD 1332 /*! transaction: transaction begins */ -#define WT_STAT_CONN_TXN_BEGIN 1332 +#define WT_STAT_CONN_TXN_BEGIN 1333 /*! transaction: transaction checkpoint currently running */ -#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1333 +#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1334 /*! transaction: transaction checkpoint generation */ -#define WT_STAT_CONN_TXN_CHECKPOINT_GENERATION 1334 +#define WT_STAT_CONN_TXN_CHECKPOINT_GENERATION 1335 /*! transaction: transaction checkpoint max time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MAX 1335 +#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MAX 1336 /*! transaction: transaction checkpoint min time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MIN 1336 +#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MIN 1337 /*! transaction: transaction checkpoint most recent time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_RECENT 1337 +#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_RECENT 1338 /*! transaction: transaction checkpoint scrub dirty target */ -#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TARGET 1338 +#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TARGET 1339 /*! transaction: transaction checkpoint scrub time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TIME 1339 +#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TIME 1340 /*! transaction: transaction checkpoint total time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_TOTAL 1340 +#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_TOTAL 1341 /*! transaction: transaction checkpoints */ -#define WT_STAT_CONN_TXN_CHECKPOINT 1341 +#define WT_STAT_CONN_TXN_CHECKPOINT 1342 /*! * transaction: transaction checkpoints skipped because database was * clean */ -#define WT_STAT_CONN_TXN_CHECKPOINT_SKIPPED 1342 +#define WT_STAT_CONN_TXN_CHECKPOINT_SKIPPED 1343 /*! transaction: transaction failures due to cache overflow */ -#define WT_STAT_CONN_TXN_FAIL_CACHE 1343 +#define WT_STAT_CONN_TXN_FAIL_CACHE 1344 /*! * transaction: transaction fsync calls for checkpoint after allocating * the transaction ID */ -#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST 1344 +#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST 1345 /*! * transaction: transaction fsync duration for checkpoint after * allocating the transaction ID (usecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST_DURATION 1345 +#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST_DURATION 1346 /*! transaction: transaction range of IDs currently pinned */ -#define WT_STAT_CONN_TXN_PINNED_RANGE 1346 +#define WT_STAT_CONN_TXN_PINNED_RANGE 1347 /*! transaction: transaction range of IDs currently pinned by a checkpoint */ -#define WT_STAT_CONN_TXN_PINNED_CHECKPOINT_RANGE 1347 +#define WT_STAT_CONN_TXN_PINNED_CHECKPOINT_RANGE 1348 /*! * transaction: transaction range of IDs currently pinned by named * snapshots */ -#define WT_STAT_CONN_TXN_PINNED_SNAPSHOT_RANGE 1348 +#define WT_STAT_CONN_TXN_PINNED_SNAPSHOT_RANGE 1349 /*! transaction: transaction range of timestamps currently pinned */ -#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP 1349 +#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP 1350 +/*! transaction: transaction range of timestamps pinned by a checkpoint */ +#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_CHECKPOINT 1351 /*! * transaction: transaction range of timestamps pinned by the oldest * timestamp */ -#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_OLDEST 1350 +#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_OLDEST 1352 /*! transaction: transaction sync calls */ -#define WT_STAT_CONN_TXN_SYNC 1351 +#define WT_STAT_CONN_TXN_SYNC 1353 /*! transaction: transactions committed */ -#define WT_STAT_CONN_TXN_COMMIT 1352 +#define WT_STAT_CONN_TXN_COMMIT 1354 /*! transaction: transactions rolled back */ -#define WT_STAT_CONN_TXN_ROLLBACK 1353 +#define WT_STAT_CONN_TXN_ROLLBACK 1355 /*! transaction: update conflicts */ -#define WT_STAT_CONN_TXN_UPDATE_CONFLICT 1354 +#define WT_STAT_CONN_TXN_UPDATE_CONFLICT 1356 /*! * @} |