summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/src/include
diff options
context:
space:
mode:
authorLuke Chen <luke.chen@mongodb.com>2018-07-03 12:07:37 +1000
committerLuke Chen <luke.chen@mongodb.com>2018-07-03 12:07:37 +1000
commitb76457d9aa0188e1d2369851506b9d4d927024cb (patch)
treef93ea10b6ea968ed52d08d9b714c506bf6b2de28 /src/third_party/wiredtiger/src/include
parent925a113194e00e193318486f576d14e6c3e27ea1 (diff)
downloadmongo-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.h3
-rw-r--r--src/third_party/wiredtiger/src/include/btmem.h18
-rw-r--r--src/third_party/wiredtiger/src/include/btree.i115
-rw-r--r--src/third_party/wiredtiger/src/include/cache.h6
-rw-r--r--src/third_party/wiredtiger/src/include/cache.i23
-rw-r--r--src/third_party/wiredtiger/src/include/connection.h2
-rw-r--r--src/third_party/wiredtiger/src/include/extern.h1
-rw-r--r--src/third_party/wiredtiger/src/include/lsm.h19
-rw-r--r--src/third_party/wiredtiger/src/include/misc.h9
-rw-r--r--src/third_party/wiredtiger/src/include/session.h2
-rw-r--r--src/third_party/wiredtiger/src/include/stat.h2
-rw-r--r--src/third_party/wiredtiger/src/include/txn.h2
-rw-r--r--src/third_party/wiredtiger/src/include/txn.i72
-rw-r--r--src/third_party/wiredtiger/src/include/wiredtiger.in554
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
/*!
* @}