summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Gorrod <alexander.gorrod@mongodb.com>2017-10-27 18:02:02 +1100
committerGitHub <noreply@github.com>2017-10-27 18:02:02 +1100
commitec5e7a0eb7db26a15efd62559ee5c8d70548d67a (patch)
treebbca008b0f408f2e9feb891fdf3707f3146b8d0d
parentb59b8856c040531ef883b6e68010ff1f47ce1495 (diff)
downloadmongo-ec5e7a0eb7db26a15efd62559ee5c8d70548d67a.tar.gz
Revert "WT-3652 Skip unnecessary lookaside reads / writes. (#3744)" (#3763)
This reverts commit b59b8856c040531ef883b6e68010ff1f47ce1495.
-rw-r--r--dist/stat_data.py1
-rw-r--r--src/btree/bt_read.c78
-rw-r--r--src/btree/bt_split.c33
-rw-r--r--src/conn/conn_cache.c13
-rw-r--r--src/evict/evict_lru.c30
-rw-r--r--src/evict/evict_page.c17
-rw-r--r--src/include/btmem.h6
-rw-r--r--src/include/cache.h36
-rw-r--r--src/include/cache.i53
-rw-r--r--src/include/stat.h1
-rw-r--r--src/include/wiredtiger.in410
-rw-r--r--src/reconcile/rec_write.c53
-rw-r--r--src/support/stat.c4
13 files changed, 328 insertions, 407 deletions
diff --git a/dist/stat_data.py b/dist/stat_data.py
index 64d3d46818b..24610b9ab14 100644
--- a/dist/stat_data.py
+++ b/dist/stat_data.py
@@ -257,7 +257,6 @@ connection_stats = [
CacheStat('cache_lookaside_entries', 'lookaside table entries', 'no_clear,no_scale'),
CacheStat('cache_lookaside_insert', 'lookaside table insert calls'),
CacheStat('cache_lookaside_remove', 'lookaside table remove calls'),
- CacheStat('cache_lookaside_score', 'lookaside score', 'no_clear,no_scale'),
CacheStat('cache_overhead', 'percentage overhead', 'no_clear,no_scale'),
CacheStat('cache_pages_dirty', 'tracked dirty pages in the cache', 'no_clear,no_scale'),
CacheStat('cache_pages_inuse', 'pages currently held in the cache', 'no_clear,no_scale'),
diff --git a/src/btree/bt_read.c b/src/btree/bt_read.c
index eaf025d5468..2dd366d8d5e 100644
--- a/src/btree/bt_read.c
+++ b/src/btree/bt_read.c
@@ -430,61 +430,6 @@ err: /*
}
/*
- * __page_in_lookaside_check --
- * Review lookaside page references for page in
- */
-static inline int
-__page_in_lookaside_check(WT_SESSION_IMPL *session, WT_REF *ref)
-{
- WT_TXN *txn;
- WT_TXN_GLOBAL *txn_global;
-
- txn = &session->txn;
- txn_global = &S2C(session)->txn_global;
-
- /*
- * Skip lookaside pages if reading without a timestamp and all the
- * updates in lookaside are in the past.
- *
- * If we skip a lookaside page, the tree cannot be left clean:
- * lookaside entries must be resolved before the tree can be discarded.
- *
- * Lookaside eviction preferentially chooses the newest updates when
- * creating page image with no stable timestamp. If a stable timestamp
- * has been set, we have to visit the page because eviction chooses old
- * version of records in that case.
- *
- * One case where we may need to visit the page is if lookaside
- * eviction is active in tree 2 when a checkpoint has started and is
- * working its way through tree 1. In that case, lookaside may have
- * created a page image with updates in the future of the checkpoint.
- */
- if (!F_ISSET(txn, WT_TXN_HAS_TS_READ) &&
- F_ISSET(txn, WT_TXN_HAS_SNAPSHOT) &&
- !txn_global->has_stable_timestamp &&
- WT_TXNID_LT(ref->page_las->las_max_txn,
- txn->snap_min)) {
- __wt_tree_modify_set(session);
- return (WT_NOTFOUND);
- }
-#ifdef HAVE_TIMESTAMPS
- /*
- * Skip lookaside pages if reading as of a timestamp and all the
- * updates are in the future.
- */
- if (F_ISSET(&session->txn, WT_TXN_HAS_TS_READ) &&
- txn_global->has_stable_timestamp &&
- WT_TXNID_LT(ref->page_las->las_max_txn, txn->snap_min) &&
- __wt_timestamp_cmp(
- &ref->page_las->min_timestamp, &session->txn.read_timestamp) > 0) {
- __wt_tree_modify_set(session);
- return (WT_NOTFOUND);
- }
-#endif
- return (0);
-}
-
-/*
* __wt_page_in_func --
* Acquire a hazard pointer to a page; if the page is not in-memory,
* read it from the disk and build an in-memory version.
@@ -528,8 +473,23 @@ __wt_page_in_func(WT_SESSION_IMPL *session, WT_REF *ref, uint32_t flags
if (ref->state != WT_REF_LOOKASIDE ||
!LF_ISSET(WT_READ_LOOKASIDE))
return (WT_NOTFOUND);
-
- WT_RET(__page_in_lookaside_check(session, ref));
+#ifdef HAVE_TIMESTAMPS
+ /*
+ * Skip lookaside pages if reading as of a
+ * timestamp and all the updates are in the
+ * future. If we skip a lookaside page, the
+ * tree cannot be left clean: it must be
+ * visited by future checkpoints.
+ */
+ if (F_ISSET(
+ &session->txn, WT_TXN_HAS_TS_READ) &&
+ __wt_timestamp_cmp(
+ &ref->page_las->min_timestamp,
+ &session->txn.read_timestamp) > 0) {
+ __wt_tree_modify_set(session);
+ return (WT_NOTFOUND);
+ }
+#endif
}
/*
@@ -643,7 +603,7 @@ __wt_page_in_func(WT_SESSION_IMPL *session, WT_REF *ref, uint32_t flags
continue;
}
-skip_evict: /*
+ /*
* If we read the page and are configured to not trash
* the cache, and no other thread has already used the
* page, set the read generation so the page is evicted
@@ -662,7 +622,7 @@ skip_evict: /*
__wt_cache_read_gen_new(session, page);
} else if (!LF_ISSET(WT_READ_NO_GEN))
__wt_cache_read_gen_bump(session, page);
-
+skip_evict:
/*
* Check if we need an autocommit transaction.
* Starting a transaction can trigger eviction, so skip
diff --git a/src/btree/bt_split.c b/src/btree/bt_split.c
index 24c88128a0e..66f0478c542 100644
--- a/src/btree/bt_split.c
+++ b/src/btree/bt_split.c
@@ -1383,7 +1383,7 @@ __split_multi_inmem(
WT_DECL_RET;
WT_PAGE *page;
WT_SAVE_UPD *supd;
- WT_UPDATE *upd;
+ WT_UPDATE *prev_upd, *upd;
uint64_t recno;
uint32_t i, slot;
@@ -1474,6 +1474,36 @@ __split_multi_inmem(
break;
WT_ILLEGAL_VALUE_ERR(session);
}
+
+ /*
+ * Discard the update used to create the on-page disk image.
+ * This is not just a performance issue: if the update used to
+ * create the value for this on-page disk image was a modify,
+ * and it was applied to the previous on-page value to
+ * determine a value to write to this disk image, that update
+ * cannot be applied to the new on-page value without risking
+ * corruption.
+ */
+ if (supd->onpage_upd != NULL) {
+ for (prev_upd = upd; prev_upd != NULL &&
+ prev_upd->next != supd->onpage_upd;
+ prev_upd = prev_upd->next)
+ ;
+ /*
+ * If the on-page update was in fact a tombstone, there
+ * will be no value on the page. Don't throw the
+ * tombstone away: we may need it to correctly resolve
+ * modifications.
+ */
+ if (supd->onpage_upd->type == WT_UPDATE_DELETED &&
+ prev_upd != NULL)
+ prev_upd = prev_upd->next;
+ if (prev_upd != NULL) {
+ __wt_update_obsolete_free(
+ session, page, prev_upd->next);
+ prev_upd->next = NULL;
+ }
+ }
}
/*
@@ -1643,7 +1673,6 @@ __wt_multi_to_ref(WT_SESSION_IMPL *session,
WT_RET(__wt_calloc_one(session, &ref->page_las));
ref->page_las->las_pageid = multi->las_pageid;
- ref->page_las->las_max_txn = multi->las_max_txn;
#ifdef HAVE_TIMESTAMPS
__wt_timestamp_set(
&ref->page_las->min_timestamp, &multi->las_min_timestamp);
diff --git a/src/conn/conn_cache.c b/src/conn/conn_cache.c
index 007aa8757da..c83fb544982 100644
--- a/src/conn/conn_cache.c
+++ b/src/conn/conn_cache.c
@@ -266,19 +266,6 @@ __wt_cache_stats_update(WT_SESSION_IMPL *session)
WT_STAT_SET(session, stats, cache_pages_dirty,
cache->pages_dirty_intl + cache->pages_dirty_leaf);
- WT_STAT_CONN_SET(session, cache_eviction_state, cache->flags);
- WT_STAT_CONN_SET(session,
- cache_eviction_aggressive_set, cache->evict_aggressive_score);
- WT_STAT_CONN_SET(session,
- cache_eviction_empty_score, cache->evict_empty_score);
- WT_STAT_CONN_SET(session,
- cache_lookaside_score, __wt_cache_lookaside_score(cache));
-
- WT_STAT_CONN_SET(session,
- cache_eviction_active_workers, conn->evict_threads.current_threads);
- WT_STAT_CONN_SET(session, cache_eviction_stable_state_workers,
- cache->evict_tune_workers_best);
-
/*
* The number of files with active walks ~= number of hazard pointers
* in the walk session. Note: reading without locking.
diff --git a/src/evict/evict_lru.c b/src/evict/evict_lru.c
index 2e559531f4b..daee1b3d29a 100644
--- a/src/evict/evict_lru.c
+++ b/src/evict/evict_lru.c
@@ -617,6 +617,8 @@ __evict_update_work(WT_SESSION_IMPL *session)
F_CLR(cache, WT_CACHE_EVICT_CLEAN | WT_CACHE_EVICT_CLEAN_HARD);
}
+ WT_STAT_CONN_SET(session, cache_eviction_state, cache->flags);
+
return (F_ISSET(cache, WT_CACHE_EVICT_ALL | WT_CACHE_EVICT_URGENT));
}
@@ -725,6 +727,9 @@ __evict_pass(WT_SESSION_IMPL *session)
txn_global->current != oldest_id &&
cache->evict_aggressive_score < 100)
++cache->evict_aggressive_score;
+ WT_STAT_CONN_SET(session,
+ cache_eviction_aggressive_set,
+ cache->evict_aggressive_score);
prev = now;
prev_oldest_id = oldest_id;
}
@@ -756,8 +761,12 @@ __evict_pass(WT_SESSION_IMPL *session)
"%s", "unable to reach eviction goal");
break;
} else {
- if (cache->evict_aggressive_score > 0)
+ if (cache->evict_aggressive_score > 0) {
--cache->evict_aggressive_score;
+ WT_STAT_CONN_SET(session,
+ cache_eviction_aggressive_set,
+ cache->evict_aggressive_score);
+ }
loop = 0;
eviction_progress = cache->eviction_progress;
}
@@ -1089,7 +1098,12 @@ __evict_tune_workers(WT_SESSION_IMPL *session)
WT_STAT_CONN_INCR(session,
cache_eviction_worker_removed);
}
+ WT_STAT_CONN_SET(session,
+ cache_eviction_stable_state_workers,
+ cache->evict_tune_workers_best);
cache->evict_tune_stable = true;
+ WT_STAT_CONN_SET(session, cache_eviction_active_workers,
+ conn->evict_threads.current_threads);
goto done;
}
}
@@ -1121,6 +1135,9 @@ __evict_tune_workers(WT_SESSION_IMPL *session)
cache->evict_tune_last_action_time = current_time;
}
+ WT_STAT_CONN_SET(session, cache_eviction_active_workers,
+ conn->evict_threads.current_threads);
+
done: cache->evict_tune_last_time = current_time;
cache->evict_tune_progress_last = eviction_progress;
}
@@ -1170,8 +1187,11 @@ __evict_lru_walk(WT_SESSION_IMPL *session)
cache = S2C(session)->cache;
/* Age out the score of how much the queue has been empty recently. */
- if (cache->evict_empty_score > 0)
+ if (cache->evict_empty_score > 0) {
--cache->evict_empty_score;
+ WT_STAT_CONN_SET(session, cache_eviction_empty_score,
+ cache->evict_empty_score);
+ }
/* Fill the next queue (that isn't the urgent queue). */
queue = cache->evict_fill_queue;
@@ -1201,10 +1221,14 @@ __evict_lru_walk(WT_SESSION_IMPL *session)
*/
if (__evict_queue_empty(queue, false)) {
if (F_ISSET(cache,
- WT_CACHE_EVICT_CLEAN_HARD | WT_CACHE_EVICT_DIRTY_HARD))
+ WT_CACHE_EVICT_CLEAN_HARD | WT_CACHE_EVICT_DIRTY_HARD)) {
cache->evict_empty_score = WT_MIN(
cache->evict_empty_score + WT_EVICT_SCORE_BUMP,
WT_EVICT_SCORE_MAX);
+ WT_STAT_CONN_SET(session,
+ cache_eviction_empty_score,
+ cache->evict_empty_score);
+ }
WT_STAT_CONN_INCR(session, cache_eviction_queue_empty);
} else
WT_STAT_CONN_INCR(session, cache_eviction_queue_not_empty);
diff --git a/src/evict/evict_page.c b/src/evict/evict_page.c
index d0128d8bcdd..edf80ec4460 100644
--- a/src/evict/evict_page.c
+++ b/src/evict/evict_page.c
@@ -576,13 +576,18 @@ __evict_review(
}
/*
- * If the cache is under pressure with many updates
- * that can't be evicted, check if reconciliation
- * suggests trying the lookaside table.
+ * If the cache is nearly stuck, check if
+ * reconciliation suggests trying the lookaside table
+ * unless lookaside eviction is disabled globally.
+ *
+ * We don't wait until the cache is completely stuck:
+ * for workloads where lookaside eviction is necessary
+ * to make progress, we don't want a single successful
+ * page eviction to make the cache "unstuck" so we have
+ * to wait again before evicting the next page.
*/
- if (!F_ISSET(conn, WT_CONN_EVICTION_NO_LOOKASIDE) &&
- (__wt_cache_lookaside_score(cache) > 50 ||
- __wt_cache_stuck(session)))
+ if (__wt_cache_nearly_stuck(session) &&
+ !F_ISSET(conn, WT_CONN_EVICTION_NO_LOOKASIDE))
lookaside_retryp = &lookaside_retry;
}
}
diff --git a/src/include/btmem.h b/src/include/btmem.h
index 8662c40c635..158fcf87d29 100644
--- a/src/include/btmem.h
+++ b/src/include/btmem.h
@@ -242,7 +242,6 @@ struct __wt_page_modify {
/* The page has lookaside entries. */
uint64_t las_pageid;
- uint64_t las_max_txn;
WT_DECL_TIMESTAMP(las_min_timestamp)
} r;
#undef mod_replace
@@ -251,8 +250,6 @@ struct __wt_page_modify {
#define mod_disk_image u1.r.disk_image
#undef mod_replace_las_pageid
#define mod_replace_las_pageid u1.r.las_pageid
-#undef mod_replace_las_max_txn
-#define mod_replace_las_max_txn u1.r.las_max_txn
#undef mod_replace_las_min_timestamp
#define mod_replace_las_min_timestamp u1.r.las_min_timestamp
@@ -301,7 +298,6 @@ struct __wt_page_modify {
uint32_t checksum;
uint64_t las_pageid;
- uint64_t las_max_txn;
WT_DECL_TIMESTAMP(las_min_timestamp)
} *multi;
uint32_t multi_entries; /* Multiple blocks element count */
@@ -730,8 +726,6 @@ struct __wt_page_deleted {
*/
struct __wt_page_lookaside {
uint64_t las_pageid; /* Page ID in lookaside */
- uint64_t las_max_txn; /* Maximum transaction ID in
- lookaside */
WT_DECL_TIMESTAMP(min_timestamp) /* Oldest timestamp in
lookaside for the page */
};
diff --git a/src/include/cache.h b/src/include/cache.h
index 0a42853b95b..456cb0382e4 100644
--- a/src/include/cache.h
+++ b/src/include/cache.h
@@ -152,28 +152,20 @@ struct __wt_cache {
#define WT_EVICT_SCORE_BUMP 10
#define WT_EVICT_SCORE_CUTOFF 10
#define WT_EVICT_SCORE_MAX 100
- /*
- * Score of how aggressive eviction should be about selecting eviction
- * candidates. If eviction is struggling to make progress, this score
- * rises (up to a maximum of 100), at which point the cache is "stuck"
- * and transaction will be rolled back.
- */
- uint32_t evict_aggressive_score;
-
- /*
- * Score of how often LRU queues are empty on refill. This score varies
- * between 0 (if the queue hasn't been empty for a long time) and 100
- * (if the queue has been empty the last 10 times we filled up.
- */
- uint32_t evict_empty_score;
-
- /*
- * Score of how much pressure storing historical versions is having on
- * eviction. This score varies between 0, if reconciliation always
- * sees updates that are globally visible and hence can be discarded,
- * to 100 if no updates are globally visible.
- */
- int32_t evict_lookaside_score;
+ uint32_t evict_aggressive_score;/* Score of how aggressive eviction
+ should be about selecting eviction
+ candidates. If eviction is
+ struggling to make progress, this
+ score rises (up to a maximum of
+ 100), at which point the cache is
+ "stuck" and transaction will be
+ rolled back. */
+ uint32_t evict_empty_score; /* Score of how often LRU queues are
+ empty on refill. This score varies
+ between 0 (if the queue hasn't been
+ empty for a long time) and 100 (if
+ the queue has been empty the last 10
+ times we filled up. */
/*
* Cache pool information.
diff --git a/src/include/cache.i b/src/include/cache.i
index e160dbf4d64..33b1bf2a7af 100644
--- a/src/include/cache.i
+++ b/src/include/cache.i
@@ -79,6 +79,22 @@ __wt_cache_read_gen_new(WT_SESSION_IMPL *session, WT_PAGE *page)
}
/*
+ * __wt_cache_nearly_stuck --
+ * Indicate if the cache is nearly stuck.
+ */
+static inline bool
+__wt_cache_nearly_stuck(WT_SESSION_IMPL *session)
+{
+ WT_CACHE *cache;
+
+ cache = S2C(session)->cache;
+ return (cache->evict_aggressive_score >=
+ (WT_EVICT_SCORE_MAX - WT_EVICT_SCORE_BUMP) &&
+ F_ISSET(cache,
+ WT_CACHE_EVICT_CLEAN_HARD | WT_CACHE_EVICT_DIRTY_HARD));
+}
+
+/*
* __wt_cache_stuck --
* Indicate if the cache is stuck (i.e., not making progress).
*/
@@ -189,43 +205,6 @@ __wt_cache_bytes_other(WT_CACHE *cache)
}
/*
- * __wt_cache_lookaside_score --
- * Get the current lookaside score (between 0 and 100).
- */
-static inline uint32_t
-__wt_cache_lookaside_score(WT_CACHE *cache)
-{
- int32_t global_score;
-
- global_score = cache->evict_lookaside_score;
- return ((uint32_t)WT_MIN(WT_MAX(global_score, 0), 100));
-}
-
-/*
- * __wt_cache_update_lookaside_score --
- * Update the lookaside score based how many unstable updates are seen.
- */
-static inline void
-__wt_cache_update_lookaside_score(
- WT_SESSION_IMPL *session, u_int updates_seen, u_int updates_unstable)
-{
- WT_CACHE *cache;
- int32_t global_score, score;
-
- if (updates_seen == 0)
- return;
-
- cache = S2C(session)->cache;
- score = (int32_t)((100 * updates_unstable) / updates_seen);
- global_score = cache->evict_lookaside_score;
-
- if (score > global_score && global_score < 100)
- __wt_atomic_addi32(&cache->evict_lookaside_score, 1);
- else if (score < global_score && global_score > 0)
- __wt_atomic_subi32(&cache->evict_lookaside_score, 1);
-}
-
-/*
* __wt_session_can_wait --
* Return if a session available for a potentially slow operation.
*/
diff --git a/src/include/stat.h b/src/include/stat.h
index 12a7d532496..922b211bec4 100644
--- a/src/include/stat.h
+++ b/src/include/stat.h
@@ -341,7 +341,6 @@ struct __wt_connection_stats {
int64_t cache_eviction_internal;
int64_t cache_eviction_split_internal;
int64_t cache_eviction_split_leaf;
- int64_t cache_lookaside_score;
int64_t cache_lookaside_entries;
int64_t cache_lookaside_insert;
int64_t cache_lookaside_remove;
diff --git a/src/include/wiredtiger.in b/src/include/wiredtiger.in
index 41dd970d3ba..aeea3394015 100644
--- a/src/include/wiredtiger.in
+++ b/src/include/wiredtiger.in
@@ -4854,458 +4854,456 @@ extern int wiredtiger_extension_terminate(WT_CONNECTION *connection);
#define WT_STAT_CONN_CACHE_EVICTION_SPLIT_INTERNAL 1082
/*! cache: leaf pages split during eviction */
#define WT_STAT_CONN_CACHE_EVICTION_SPLIT_LEAF 1083
-/*! cache: lookaside score */
-#define WT_STAT_CONN_CACHE_LOOKASIDE_SCORE 1084
/*! cache: lookaside table entries */
-#define WT_STAT_CONN_CACHE_LOOKASIDE_ENTRIES 1085
+#define WT_STAT_CONN_CACHE_LOOKASIDE_ENTRIES 1084
/*! cache: lookaside table insert calls */
-#define WT_STAT_CONN_CACHE_LOOKASIDE_INSERT 1086
+#define WT_STAT_CONN_CACHE_LOOKASIDE_INSERT 1085
/*! cache: lookaside table remove calls */
-#define WT_STAT_CONN_CACHE_LOOKASIDE_REMOVE 1087
+#define WT_STAT_CONN_CACHE_LOOKASIDE_REMOVE 1086
/*! cache: maximum bytes configured */
-#define WT_STAT_CONN_CACHE_BYTES_MAX 1088
+#define WT_STAT_CONN_CACHE_BYTES_MAX 1087
/*! cache: maximum page size at eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_MAXIMUM_PAGE_SIZE 1089
+#define WT_STAT_CONN_CACHE_EVICTION_MAXIMUM_PAGE_SIZE 1088
/*! cache: modified pages evicted */
-#define WT_STAT_CONN_CACHE_EVICTION_DIRTY 1090
+#define WT_STAT_CONN_CACHE_EVICTION_DIRTY 1089
/*! cache: modified pages evicted by application threads */
-#define WT_STAT_CONN_CACHE_EVICTION_APP_DIRTY 1091
+#define WT_STAT_CONN_CACHE_EVICTION_APP_DIRTY 1090
/*! cache: overflow pages read into cache */
-#define WT_STAT_CONN_CACHE_READ_OVERFLOW 1092
+#define WT_STAT_CONN_CACHE_READ_OVERFLOW 1091
/*! cache: page split during eviction deepened the tree */
-#define WT_STAT_CONN_CACHE_EVICTION_DEEPEN 1093
+#define WT_STAT_CONN_CACHE_EVICTION_DEEPEN 1092
/*! cache: page written requiring lookaside records */
-#define WT_STAT_CONN_CACHE_WRITE_LOOKASIDE 1094
+#define WT_STAT_CONN_CACHE_WRITE_LOOKASIDE 1093
/*! cache: pages currently held in the cache */
-#define WT_STAT_CONN_CACHE_PAGES_INUSE 1095
+#define WT_STAT_CONN_CACHE_PAGES_INUSE 1094
/*! cache: pages evicted because they exceeded the in-memory maximum count */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE 1096
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE 1095
/*!
* cache: pages evicted because they exceeded the in-memory maximum time
* (usecs)
*/
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_TIME 1097
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_TIME 1096
/*! cache: pages evicted because they had chains of deleted items count */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DELETE 1098
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DELETE 1097
/*!
* cache: pages evicted because they had chains of deleted items time
* (usecs)
*/
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DELETE_TIME 1099
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DELETE_TIME 1098
/*! cache: pages evicted by application threads */
-#define WT_STAT_CONN_CACHE_EVICTION_APP 1100
+#define WT_STAT_CONN_CACHE_EVICTION_APP 1099
/*! cache: pages queued for eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED 1101
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED 1100
/*! cache: pages queued for urgent eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_URGENT 1102
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_URGENT 1101
/*! cache: pages queued for urgent eviction during walk */
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_OLDEST 1103
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_OLDEST 1102
/*! cache: pages read into cache */
-#define WT_STAT_CONN_CACHE_READ 1104
+#define WT_STAT_CONN_CACHE_READ 1103
/*! cache: pages read into cache requiring lookaside entries */
-#define WT_STAT_CONN_CACHE_READ_LOOKASIDE 1105
+#define WT_STAT_CONN_CACHE_READ_LOOKASIDE 1104
/*! cache: pages requested from the cache */
-#define WT_STAT_CONN_CACHE_PAGES_REQUESTED 1106
+#define WT_STAT_CONN_CACHE_PAGES_REQUESTED 1105
/*! cache: pages seen by eviction walk */
-#define WT_STAT_CONN_CACHE_EVICTION_PAGES_SEEN 1107
+#define WT_STAT_CONN_CACHE_EVICTION_PAGES_SEEN 1106
/*! cache: pages selected for eviction unable to be evicted */
-#define WT_STAT_CONN_CACHE_EVICTION_FAIL 1108
+#define WT_STAT_CONN_CACHE_EVICTION_FAIL 1107
/*! cache: pages walked for eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_WALK 1109
+#define WT_STAT_CONN_CACHE_EVICTION_WALK 1108
/*! cache: pages written from cache */
-#define WT_STAT_CONN_CACHE_WRITE 1110
+#define WT_STAT_CONN_CACHE_WRITE 1109
/*! cache: pages written requiring in-memory restoration */
-#define WT_STAT_CONN_CACHE_WRITE_RESTORE 1111
+#define WT_STAT_CONN_CACHE_WRITE_RESTORE 1110
/*! cache: percentage overhead */
-#define WT_STAT_CONN_CACHE_OVERHEAD 1112
+#define WT_STAT_CONN_CACHE_OVERHEAD 1111
/*! cache: tracked bytes belonging to internal pages in the cache */
-#define WT_STAT_CONN_CACHE_BYTES_INTERNAL 1113
+#define WT_STAT_CONN_CACHE_BYTES_INTERNAL 1112
/*! cache: tracked bytes belonging to leaf pages in the cache */
-#define WT_STAT_CONN_CACHE_BYTES_LEAF 1114
+#define WT_STAT_CONN_CACHE_BYTES_LEAF 1113
/*! cache: tracked dirty bytes in the cache */
-#define WT_STAT_CONN_CACHE_BYTES_DIRTY 1115
+#define WT_STAT_CONN_CACHE_BYTES_DIRTY 1114
/*! cache: tracked dirty pages in the cache */
-#define WT_STAT_CONN_CACHE_PAGES_DIRTY 1116
+#define WT_STAT_CONN_CACHE_PAGES_DIRTY 1115
/*! cache: unmodified pages evicted */
-#define WT_STAT_CONN_CACHE_EVICTION_CLEAN 1117
+#define WT_STAT_CONN_CACHE_EVICTION_CLEAN 1116
/*! connection: auto adjusting condition resets */
-#define WT_STAT_CONN_COND_AUTO_WAIT_RESET 1118
+#define WT_STAT_CONN_COND_AUTO_WAIT_RESET 1117
/*! connection: auto adjusting condition wait calls */
-#define WT_STAT_CONN_COND_AUTO_WAIT 1119
+#define WT_STAT_CONN_COND_AUTO_WAIT 1118
/*! connection: detected system time went backwards */
-#define WT_STAT_CONN_TIME_TRAVEL 1120
+#define WT_STAT_CONN_TIME_TRAVEL 1119
/*! connection: files currently open */
-#define WT_STAT_CONN_FILE_OPEN 1121
+#define WT_STAT_CONN_FILE_OPEN 1120
/*! connection: memory allocations */
-#define WT_STAT_CONN_MEMORY_ALLOCATION 1122
+#define WT_STAT_CONN_MEMORY_ALLOCATION 1121
/*! connection: memory frees */
-#define WT_STAT_CONN_MEMORY_FREE 1123
+#define WT_STAT_CONN_MEMORY_FREE 1122
/*! connection: memory re-allocations */
-#define WT_STAT_CONN_MEMORY_GROW 1124
+#define WT_STAT_CONN_MEMORY_GROW 1123
/*! connection: pthread mutex condition wait calls */
-#define WT_STAT_CONN_COND_WAIT 1125
+#define WT_STAT_CONN_COND_WAIT 1124
/*! connection: pthread mutex shared lock read-lock calls */
-#define WT_STAT_CONN_RWLOCK_READ 1126
+#define WT_STAT_CONN_RWLOCK_READ 1125
/*! connection: pthread mutex shared lock write-lock calls */
-#define WT_STAT_CONN_RWLOCK_WRITE 1127
+#define WT_STAT_CONN_RWLOCK_WRITE 1126
/*! connection: total fsync I/Os */
-#define WT_STAT_CONN_FSYNC_IO 1128
+#define WT_STAT_CONN_FSYNC_IO 1127
/*! connection: total read I/Os */
-#define WT_STAT_CONN_READ_IO 1129
+#define WT_STAT_CONN_READ_IO 1128
/*! connection: total write I/Os */
-#define WT_STAT_CONN_WRITE_IO 1130
+#define WT_STAT_CONN_WRITE_IO 1129
/*! cursor: cursor create calls */
-#define WT_STAT_CONN_CURSOR_CREATE 1131
+#define WT_STAT_CONN_CURSOR_CREATE 1130
/*! cursor: cursor insert calls */
-#define WT_STAT_CONN_CURSOR_INSERT 1132
+#define WT_STAT_CONN_CURSOR_INSERT 1131
/*! cursor: cursor modify calls */
-#define WT_STAT_CONN_CURSOR_MODIFY 1133
+#define WT_STAT_CONN_CURSOR_MODIFY 1132
/*! cursor: cursor next calls */
-#define WT_STAT_CONN_CURSOR_NEXT 1134
+#define WT_STAT_CONN_CURSOR_NEXT 1133
/*! cursor: cursor prev calls */
-#define WT_STAT_CONN_CURSOR_PREV 1135
+#define WT_STAT_CONN_CURSOR_PREV 1134
/*! cursor: cursor remove calls */
-#define WT_STAT_CONN_CURSOR_REMOVE 1136
+#define WT_STAT_CONN_CURSOR_REMOVE 1135
/*! cursor: cursor reserve calls */
-#define WT_STAT_CONN_CURSOR_RESERVE 1137
+#define WT_STAT_CONN_CURSOR_RESERVE 1136
/*! cursor: cursor reset calls */
-#define WT_STAT_CONN_CURSOR_RESET 1138
+#define WT_STAT_CONN_CURSOR_RESET 1137
/*! cursor: cursor restarted searches */
-#define WT_STAT_CONN_CURSOR_RESTART 1139
+#define WT_STAT_CONN_CURSOR_RESTART 1138
/*! cursor: cursor search calls */
-#define WT_STAT_CONN_CURSOR_SEARCH 1140
+#define WT_STAT_CONN_CURSOR_SEARCH 1139
/*! cursor: cursor search near calls */
-#define WT_STAT_CONN_CURSOR_SEARCH_NEAR 1141
+#define WT_STAT_CONN_CURSOR_SEARCH_NEAR 1140
/*! cursor: cursor update calls */
-#define WT_STAT_CONN_CURSOR_UPDATE 1142
+#define WT_STAT_CONN_CURSOR_UPDATE 1141
/*! cursor: truncate calls */
-#define WT_STAT_CONN_CURSOR_TRUNCATE 1143
+#define WT_STAT_CONN_CURSOR_TRUNCATE 1142
/*! data-handle: connection data handles currently active */
-#define WT_STAT_CONN_DH_CONN_HANDLE_COUNT 1144
+#define WT_STAT_CONN_DH_CONN_HANDLE_COUNT 1143
/*! data-handle: connection sweep candidate became referenced */
-#define WT_STAT_CONN_DH_SWEEP_REF 1145
+#define WT_STAT_CONN_DH_SWEEP_REF 1144
/*! data-handle: connection sweep dhandles closed */
-#define WT_STAT_CONN_DH_SWEEP_CLOSE 1146
+#define WT_STAT_CONN_DH_SWEEP_CLOSE 1145
/*! data-handle: connection sweep dhandles removed from hash list */
-#define WT_STAT_CONN_DH_SWEEP_REMOVE 1147
+#define WT_STAT_CONN_DH_SWEEP_REMOVE 1146
/*! data-handle: connection sweep time-of-death sets */
-#define WT_STAT_CONN_DH_SWEEP_TOD 1148
+#define WT_STAT_CONN_DH_SWEEP_TOD 1147
/*! data-handle: connection sweeps */
-#define WT_STAT_CONN_DH_SWEEPS 1149
+#define WT_STAT_CONN_DH_SWEEPS 1148
/*! data-handle: session dhandles swept */
-#define WT_STAT_CONN_DH_SESSION_HANDLES 1150
+#define WT_STAT_CONN_DH_SESSION_HANDLES 1149
/*! data-handle: session sweep attempts */
-#define WT_STAT_CONN_DH_SESSION_SWEEPS 1151
+#define WT_STAT_CONN_DH_SESSION_SWEEPS 1150
/*! lock: checkpoint lock acquisitions */
-#define WT_STAT_CONN_LOCK_CHECKPOINT_COUNT 1152
+#define WT_STAT_CONN_LOCK_CHECKPOINT_COUNT 1151
/*! lock: checkpoint lock application thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_APPLICATION 1153
+#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_APPLICATION 1152
/*! lock: checkpoint lock internal thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_INTERNAL 1154
+#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_INTERNAL 1153
/*!
* lock: dhandle lock application thread time waiting for the dhandle
* lock (usecs)
*/
-#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_APPLICATION 1155
+#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_APPLICATION 1154
/*!
* lock: dhandle lock internal thread time waiting for the dhandle lock
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_INTERNAL 1156
+#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_INTERNAL 1155
/*! lock: dhandle read lock acquisitions */
-#define WT_STAT_CONN_LOCK_DHANDLE_READ_COUNT 1157
+#define WT_STAT_CONN_LOCK_DHANDLE_READ_COUNT 1156
/*! lock: dhandle write lock acquisitions */
-#define WT_STAT_CONN_LOCK_DHANDLE_WRITE_COUNT 1158
+#define WT_STAT_CONN_LOCK_DHANDLE_WRITE_COUNT 1157
/*! lock: metadata lock acquisitions */
-#define WT_STAT_CONN_LOCK_METADATA_COUNT 1159
+#define WT_STAT_CONN_LOCK_METADATA_COUNT 1158
/*! lock: metadata lock application thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_METADATA_WAIT_APPLICATION 1160
+#define WT_STAT_CONN_LOCK_METADATA_WAIT_APPLICATION 1159
/*! lock: metadata lock internal thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_METADATA_WAIT_INTERNAL 1161
+#define WT_STAT_CONN_LOCK_METADATA_WAIT_INTERNAL 1160
/*! lock: schema lock acquisitions */
-#define WT_STAT_CONN_LOCK_SCHEMA_COUNT 1162
+#define WT_STAT_CONN_LOCK_SCHEMA_COUNT 1161
/*! lock: schema lock application thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_APPLICATION 1163
+#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_APPLICATION 1162
/*! lock: schema lock internal thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_INTERNAL 1164
+#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_INTERNAL 1163
/*!
* lock: table lock application thread time waiting for the table lock
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_TABLE_WAIT_APPLICATION 1165
+#define WT_STAT_CONN_LOCK_TABLE_WAIT_APPLICATION 1164
/*!
* lock: table lock internal thread time waiting for the table lock
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_TABLE_WAIT_INTERNAL 1166
+#define WT_STAT_CONN_LOCK_TABLE_WAIT_INTERNAL 1165
/*! lock: table read lock acquisitions */
-#define WT_STAT_CONN_LOCK_TABLE_READ_COUNT 1167
+#define WT_STAT_CONN_LOCK_TABLE_READ_COUNT 1166
/*! lock: table write lock acquisitions */
-#define WT_STAT_CONN_LOCK_TABLE_WRITE_COUNT 1168
+#define WT_STAT_CONN_LOCK_TABLE_WRITE_COUNT 1167
/*! log: busy returns attempting to switch slots */
-#define WT_STAT_CONN_LOG_SLOT_SWITCH_BUSY 1169
+#define WT_STAT_CONN_LOG_SLOT_SWITCH_BUSY 1168
/*! log: force checkpoint calls slept */
-#define WT_STAT_CONN_LOG_FORCE_CKPT_SLEEP 1170
+#define WT_STAT_CONN_LOG_FORCE_CKPT_SLEEP 1169
/*! log: log bytes of payload data */
-#define WT_STAT_CONN_LOG_BYTES_PAYLOAD 1171
+#define WT_STAT_CONN_LOG_BYTES_PAYLOAD 1170
/*! log: log bytes written */
-#define WT_STAT_CONN_LOG_BYTES_WRITTEN 1172
+#define WT_STAT_CONN_LOG_BYTES_WRITTEN 1171
/*! log: log files manually zero-filled */
-#define WT_STAT_CONN_LOG_ZERO_FILLS 1173
+#define WT_STAT_CONN_LOG_ZERO_FILLS 1172
/*! log: log flush operations */
-#define WT_STAT_CONN_LOG_FLUSH 1174
+#define WT_STAT_CONN_LOG_FLUSH 1173
/*! log: log force write operations */
-#define WT_STAT_CONN_LOG_FORCE_WRITE 1175
+#define WT_STAT_CONN_LOG_FORCE_WRITE 1174
/*! log: log force write operations skipped */
-#define WT_STAT_CONN_LOG_FORCE_WRITE_SKIP 1176
+#define WT_STAT_CONN_LOG_FORCE_WRITE_SKIP 1175
/*! log: log records compressed */
-#define WT_STAT_CONN_LOG_COMPRESS_WRITES 1177
+#define WT_STAT_CONN_LOG_COMPRESS_WRITES 1176
/*! log: log records not compressed */
-#define WT_STAT_CONN_LOG_COMPRESS_WRITE_FAILS 1178
+#define WT_STAT_CONN_LOG_COMPRESS_WRITE_FAILS 1177
/*! log: log records too small to compress */
-#define WT_STAT_CONN_LOG_COMPRESS_SMALL 1179
+#define WT_STAT_CONN_LOG_COMPRESS_SMALL 1178
/*! log: log release advances write LSN */
-#define WT_STAT_CONN_LOG_RELEASE_WRITE_LSN 1180
+#define WT_STAT_CONN_LOG_RELEASE_WRITE_LSN 1179
/*! log: log scan operations */
-#define WT_STAT_CONN_LOG_SCANS 1181
+#define WT_STAT_CONN_LOG_SCANS 1180
/*! log: log scan records requiring two reads */
-#define WT_STAT_CONN_LOG_SCAN_REREADS 1182
+#define WT_STAT_CONN_LOG_SCAN_REREADS 1181
/*! log: log server thread advances write LSN */
-#define WT_STAT_CONN_LOG_WRITE_LSN 1183
+#define WT_STAT_CONN_LOG_WRITE_LSN 1182
/*! log: log server thread write LSN walk skipped */
-#define WT_STAT_CONN_LOG_WRITE_LSN_SKIP 1184
+#define WT_STAT_CONN_LOG_WRITE_LSN_SKIP 1183
/*! log: log sync operations */
-#define WT_STAT_CONN_LOG_SYNC 1185
+#define WT_STAT_CONN_LOG_SYNC 1184
/*! log: log sync time duration (usecs) */
-#define WT_STAT_CONN_LOG_SYNC_DURATION 1186
+#define WT_STAT_CONN_LOG_SYNC_DURATION 1185
/*! log: log sync_dir operations */
-#define WT_STAT_CONN_LOG_SYNC_DIR 1187
+#define WT_STAT_CONN_LOG_SYNC_DIR 1186
/*! log: log sync_dir time duration (usecs) */
-#define WT_STAT_CONN_LOG_SYNC_DIR_DURATION 1188
+#define WT_STAT_CONN_LOG_SYNC_DIR_DURATION 1187
/*! log: log write operations */
-#define WT_STAT_CONN_LOG_WRITES 1189
+#define WT_STAT_CONN_LOG_WRITES 1188
/*! log: logging bytes consolidated */
-#define WT_STAT_CONN_LOG_SLOT_CONSOLIDATED 1190
+#define WT_STAT_CONN_LOG_SLOT_CONSOLIDATED 1189
/*! log: maximum log file size */
-#define WT_STAT_CONN_LOG_MAX_FILESIZE 1191
+#define WT_STAT_CONN_LOG_MAX_FILESIZE 1190
/*! log: number of pre-allocated log files to create */
-#define WT_STAT_CONN_LOG_PREALLOC_MAX 1192
+#define WT_STAT_CONN_LOG_PREALLOC_MAX 1191
/*! log: pre-allocated log files not ready and missed */
-#define WT_STAT_CONN_LOG_PREALLOC_MISSED 1193
+#define WT_STAT_CONN_LOG_PREALLOC_MISSED 1192
/*! log: pre-allocated log files prepared */
-#define WT_STAT_CONN_LOG_PREALLOC_FILES 1194
+#define WT_STAT_CONN_LOG_PREALLOC_FILES 1193
/*! log: pre-allocated log files used */
-#define WT_STAT_CONN_LOG_PREALLOC_USED 1195
+#define WT_STAT_CONN_LOG_PREALLOC_USED 1194
/*! log: records processed by log scan */
-#define WT_STAT_CONN_LOG_SCAN_RECORDS 1196
+#define WT_STAT_CONN_LOG_SCAN_RECORDS 1195
/*! log: slot close lost race */
-#define WT_STAT_CONN_LOG_SLOT_CLOSE_RACE 1197
+#define WT_STAT_CONN_LOG_SLOT_CLOSE_RACE 1196
/*! log: slot close unbuffered waits */
-#define WT_STAT_CONN_LOG_SLOT_CLOSE_UNBUF 1198
+#define WT_STAT_CONN_LOG_SLOT_CLOSE_UNBUF 1197
/*! log: slot closures */
-#define WT_STAT_CONN_LOG_SLOT_CLOSES 1199
+#define WT_STAT_CONN_LOG_SLOT_CLOSES 1198
/*! log: slot join atomic update races */
-#define WT_STAT_CONN_LOG_SLOT_RACES 1200
+#define WT_STAT_CONN_LOG_SLOT_RACES 1199
/*! log: slot join calls atomic updates raced */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_RACE 1201
+#define WT_STAT_CONN_LOG_SLOT_YIELD_RACE 1200
/*! log: slot join calls did not yield */
-#define WT_STAT_CONN_LOG_SLOT_IMMEDIATE 1202
+#define WT_STAT_CONN_LOG_SLOT_IMMEDIATE 1201
/*! log: slot join calls found active slot closed */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_CLOSE 1203
+#define WT_STAT_CONN_LOG_SLOT_YIELD_CLOSE 1202
/*! log: slot join calls slept */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_SLEEP 1204
+#define WT_STAT_CONN_LOG_SLOT_YIELD_SLEEP 1203
/*! log: slot join calls yielded */
-#define WT_STAT_CONN_LOG_SLOT_YIELD 1205
+#define WT_STAT_CONN_LOG_SLOT_YIELD 1204
/*! log: slot join found active slot closed */
-#define WT_STAT_CONN_LOG_SLOT_ACTIVE_CLOSED 1206
+#define WT_STAT_CONN_LOG_SLOT_ACTIVE_CLOSED 1205
/*! log: slot joins yield time (usecs) */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_DURATION 1207
+#define WT_STAT_CONN_LOG_SLOT_YIELD_DURATION 1206
/*! log: slot transitions unable to find free slot */
-#define WT_STAT_CONN_LOG_SLOT_NO_FREE_SLOTS 1208
+#define WT_STAT_CONN_LOG_SLOT_NO_FREE_SLOTS 1207
/*! log: slot unbuffered writes */
-#define WT_STAT_CONN_LOG_SLOT_UNBUFFERED 1209
+#define WT_STAT_CONN_LOG_SLOT_UNBUFFERED 1208
/*! log: total in-memory size of compressed records */
-#define WT_STAT_CONN_LOG_COMPRESS_MEM 1210
+#define WT_STAT_CONN_LOG_COMPRESS_MEM 1209
/*! log: total log buffer size */
-#define WT_STAT_CONN_LOG_BUFFER_SIZE 1211
+#define WT_STAT_CONN_LOG_BUFFER_SIZE 1210
/*! log: total size of compressed records */
-#define WT_STAT_CONN_LOG_COMPRESS_LEN 1212
+#define WT_STAT_CONN_LOG_COMPRESS_LEN 1211
/*! log: written slots coalesced */
-#define WT_STAT_CONN_LOG_SLOT_COALESCED 1213
+#define WT_STAT_CONN_LOG_SLOT_COALESCED 1212
/*! log: yields waiting for previous log file close */
-#define WT_STAT_CONN_LOG_CLOSE_YIELDS 1214
+#define WT_STAT_CONN_LOG_CLOSE_YIELDS 1213
/*! reconciliation: fast-path pages deleted */
-#define WT_STAT_CONN_REC_PAGE_DELETE_FAST 1215
+#define WT_STAT_CONN_REC_PAGE_DELETE_FAST 1214
/*! reconciliation: page reconciliation calls */
-#define WT_STAT_CONN_REC_PAGES 1216
+#define WT_STAT_CONN_REC_PAGES 1215
/*! reconciliation: page reconciliation calls for eviction */
-#define WT_STAT_CONN_REC_PAGES_EVICTION 1217
+#define WT_STAT_CONN_REC_PAGES_EVICTION 1216
/*! reconciliation: pages deleted */
-#define WT_STAT_CONN_REC_PAGE_DELETE 1218
+#define WT_STAT_CONN_REC_PAGE_DELETE 1217
/*! reconciliation: split bytes currently awaiting free */
-#define WT_STAT_CONN_REC_SPLIT_STASHED_BYTES 1219
+#define WT_STAT_CONN_REC_SPLIT_STASHED_BYTES 1218
/*! reconciliation: split objects currently awaiting free */
-#define WT_STAT_CONN_REC_SPLIT_STASHED_OBJECTS 1220
+#define WT_STAT_CONN_REC_SPLIT_STASHED_OBJECTS 1219
/*! session: open cursor count */
-#define WT_STAT_CONN_SESSION_CURSOR_OPEN 1221
+#define WT_STAT_CONN_SESSION_CURSOR_OPEN 1220
/*! session: open session count */
-#define WT_STAT_CONN_SESSION_OPEN 1222
+#define WT_STAT_CONN_SESSION_OPEN 1221
/*! session: table alter failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_ALTER_FAIL 1223
+#define WT_STAT_CONN_SESSION_TABLE_ALTER_FAIL 1222
/*! session: table alter successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_ALTER_SUCCESS 1224
+#define WT_STAT_CONN_SESSION_TABLE_ALTER_SUCCESS 1223
/*! session: table alter unchanged and skipped */
-#define WT_STAT_CONN_SESSION_TABLE_ALTER_SKIP 1225
+#define WT_STAT_CONN_SESSION_TABLE_ALTER_SKIP 1224
/*! session: table compact failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_COMPACT_FAIL 1226
+#define WT_STAT_CONN_SESSION_TABLE_COMPACT_FAIL 1225
/*! session: table compact successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_COMPACT_SUCCESS 1227
+#define WT_STAT_CONN_SESSION_TABLE_COMPACT_SUCCESS 1226
/*! session: table create failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_CREATE_FAIL 1228
+#define WT_STAT_CONN_SESSION_TABLE_CREATE_FAIL 1227
/*! session: table create successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_CREATE_SUCCESS 1229
+#define WT_STAT_CONN_SESSION_TABLE_CREATE_SUCCESS 1228
/*! session: table drop failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_DROP_FAIL 1230
+#define WT_STAT_CONN_SESSION_TABLE_DROP_FAIL 1229
/*! session: table drop successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_DROP_SUCCESS 1231
+#define WT_STAT_CONN_SESSION_TABLE_DROP_SUCCESS 1230
/*! session: table rebalance failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_REBALANCE_FAIL 1232
+#define WT_STAT_CONN_SESSION_TABLE_REBALANCE_FAIL 1231
/*! session: table rebalance successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_REBALANCE_SUCCESS 1233
+#define WT_STAT_CONN_SESSION_TABLE_REBALANCE_SUCCESS 1232
/*! session: table rename failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_RENAME_FAIL 1234
+#define WT_STAT_CONN_SESSION_TABLE_RENAME_FAIL 1233
/*! session: table rename successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_RENAME_SUCCESS 1235
+#define WT_STAT_CONN_SESSION_TABLE_RENAME_SUCCESS 1234
/*! session: table salvage failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_FAIL 1236
+#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_FAIL 1235
/*! session: table salvage successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_SUCCESS 1237
+#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_SUCCESS 1236
/*! session: table truncate failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_FAIL 1238
+#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_FAIL 1237
/*! session: table truncate successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_SUCCESS 1239
+#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_SUCCESS 1238
/*! session: table verify failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_VERIFY_FAIL 1240
+#define WT_STAT_CONN_SESSION_TABLE_VERIFY_FAIL 1239
/*! session: table verify successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_VERIFY_SUCCESS 1241
+#define WT_STAT_CONN_SESSION_TABLE_VERIFY_SUCCESS 1240
/*! thread-state: active filesystem fsync calls */
-#define WT_STAT_CONN_THREAD_FSYNC_ACTIVE 1242
+#define WT_STAT_CONN_THREAD_FSYNC_ACTIVE 1241
/*! thread-state: active filesystem read calls */
-#define WT_STAT_CONN_THREAD_READ_ACTIVE 1243
+#define WT_STAT_CONN_THREAD_READ_ACTIVE 1242
/*! thread-state: active filesystem write calls */
-#define WT_STAT_CONN_THREAD_WRITE_ACTIVE 1244
+#define WT_STAT_CONN_THREAD_WRITE_ACTIVE 1243
/*! thread-yield: application thread time evicting (usecs) */
-#define WT_STAT_CONN_APPLICATION_EVICT_TIME 1245
+#define WT_STAT_CONN_APPLICATION_EVICT_TIME 1244
/*! thread-yield: application thread time waiting for cache (usecs) */
-#define WT_STAT_CONN_APPLICATION_CACHE_TIME 1246
+#define WT_STAT_CONN_APPLICATION_CACHE_TIME 1245
/*!
* thread-yield: connection close blocked waiting for transaction state
* stabilization
*/
-#define WT_STAT_CONN_TXN_RELEASE_BLOCKED 1247
+#define WT_STAT_CONN_TXN_RELEASE_BLOCKED 1246
/*! thread-yield: connection close yielded for lsm manager shutdown */
-#define WT_STAT_CONN_CONN_CLOSE_BLOCKED_LSM 1248
+#define WT_STAT_CONN_CONN_CLOSE_BLOCKED_LSM 1247
/*! thread-yield: data handle lock yielded */
-#define WT_STAT_CONN_DHANDLE_LOCK_BLOCKED 1249
+#define WT_STAT_CONN_DHANDLE_LOCK_BLOCKED 1248
/*!
* thread-yield: get reference for page index and slot time sleeping
* (usecs)
*/
-#define WT_STAT_CONN_PAGE_INDEX_SLOT_REF_BLOCKED 1250
+#define WT_STAT_CONN_PAGE_INDEX_SLOT_REF_BLOCKED 1249
/*! thread-yield: log server sync yielded for log write */
-#define WT_STAT_CONN_LOG_SERVER_SYNC_BLOCKED 1251
+#define WT_STAT_CONN_LOG_SERVER_SYNC_BLOCKED 1250
/*! thread-yield: page acquire busy blocked */
-#define WT_STAT_CONN_PAGE_BUSY_BLOCKED 1252
+#define WT_STAT_CONN_PAGE_BUSY_BLOCKED 1251
/*! thread-yield: page acquire eviction blocked */
-#define WT_STAT_CONN_PAGE_FORCIBLE_EVICT_BLOCKED 1253
+#define WT_STAT_CONN_PAGE_FORCIBLE_EVICT_BLOCKED 1252
/*! thread-yield: page acquire locked blocked */
-#define WT_STAT_CONN_PAGE_LOCKED_BLOCKED 1254
+#define WT_STAT_CONN_PAGE_LOCKED_BLOCKED 1253
/*! thread-yield: page acquire read blocked */
-#define WT_STAT_CONN_PAGE_READ_BLOCKED 1255
+#define WT_STAT_CONN_PAGE_READ_BLOCKED 1254
/*! thread-yield: page acquire time sleeping (usecs) */
-#define WT_STAT_CONN_PAGE_SLEEP 1256
+#define WT_STAT_CONN_PAGE_SLEEP 1255
/*!
* thread-yield: page delete rollback time sleeping for state change
* (usecs)
*/
-#define WT_STAT_CONN_PAGE_DEL_ROLLBACK_BLOCKED 1257
+#define WT_STAT_CONN_PAGE_DEL_ROLLBACK_BLOCKED 1256
/*! thread-yield: page reconciliation yielded due to child modification */
-#define WT_STAT_CONN_CHILD_MODIFY_BLOCKED_PAGE 1258
+#define WT_STAT_CONN_CHILD_MODIFY_BLOCKED_PAGE 1257
/*!
* thread-yield: tree descend one level yielded for split page index
* update
*/
-#define WT_STAT_CONN_TREE_DESCEND_BLOCKED 1259
+#define WT_STAT_CONN_TREE_DESCEND_BLOCKED 1258
/*! transaction: number of named snapshots created */
-#define WT_STAT_CONN_TXN_SNAPSHOTS_CREATED 1260
+#define WT_STAT_CONN_TXN_SNAPSHOTS_CREATED 1259
/*! transaction: number of named snapshots dropped */
-#define WT_STAT_CONN_TXN_SNAPSHOTS_DROPPED 1261
+#define WT_STAT_CONN_TXN_SNAPSHOTS_DROPPED 1260
/*! transaction: transaction begins */
-#define WT_STAT_CONN_TXN_BEGIN 1262
+#define WT_STAT_CONN_TXN_BEGIN 1261
/*! transaction: transaction checkpoint currently running */
-#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1263
+#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1262
/*! transaction: transaction checkpoint generation */
-#define WT_STAT_CONN_TXN_CHECKPOINT_GENERATION 1264
+#define WT_STAT_CONN_TXN_CHECKPOINT_GENERATION 1263
/*! transaction: transaction checkpoint max time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MAX 1265
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MAX 1264
/*! transaction: transaction checkpoint min time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MIN 1266
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MIN 1265
/*! transaction: transaction checkpoint most recent time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_RECENT 1267
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_RECENT 1266
/*! transaction: transaction checkpoint scrub dirty target */
-#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TARGET 1268
+#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TARGET 1267
/*! transaction: transaction checkpoint scrub time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TIME 1269
+#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TIME 1268
/*! transaction: transaction checkpoint total time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_TOTAL 1270
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_TOTAL 1269
/*! transaction: transaction checkpoints */
-#define WT_STAT_CONN_TXN_CHECKPOINT 1271
+#define WT_STAT_CONN_TXN_CHECKPOINT 1270
/*!
* transaction: transaction checkpoints skipped because database was
* clean
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_SKIPPED 1272
+#define WT_STAT_CONN_TXN_CHECKPOINT_SKIPPED 1271
/*! transaction: transaction failures due to cache overflow */
-#define WT_STAT_CONN_TXN_FAIL_CACHE 1273
+#define WT_STAT_CONN_TXN_FAIL_CACHE 1272
/*!
* transaction: transaction fsync calls for checkpoint after allocating
* the transaction ID
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST 1274
+#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST 1273
/*!
* transaction: transaction fsync duration for checkpoint after
* allocating the transaction ID (usecs)
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST_DURATION 1275
+#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST_DURATION 1274
/*! transaction: transaction range of IDs currently pinned */
-#define WT_STAT_CONN_TXN_PINNED_RANGE 1276
+#define WT_STAT_CONN_TXN_PINNED_RANGE 1275
/*! transaction: transaction range of IDs currently pinned by a checkpoint */
-#define WT_STAT_CONN_TXN_PINNED_CHECKPOINT_RANGE 1277
+#define WT_STAT_CONN_TXN_PINNED_CHECKPOINT_RANGE 1276
/*!
* transaction: transaction range of IDs currently pinned by named
* snapshots
*/
-#define WT_STAT_CONN_TXN_PINNED_SNAPSHOT_RANGE 1278
+#define WT_STAT_CONN_TXN_PINNED_SNAPSHOT_RANGE 1277
/*! transaction: transaction sync calls */
-#define WT_STAT_CONN_TXN_SYNC 1279
+#define WT_STAT_CONN_TXN_SYNC 1278
/*! transaction: transactions commit timestamp queue inserts to head */
-#define WT_STAT_CONN_TXN_COMMIT_QUEUE_HEAD 1280
+#define WT_STAT_CONN_TXN_COMMIT_QUEUE_HEAD 1279
/*! transaction: transactions commit timestamp queue inserts total */
-#define WT_STAT_CONN_TXN_COMMIT_QUEUE_INSERTS 1281
+#define WT_STAT_CONN_TXN_COMMIT_QUEUE_INSERTS 1280
/*! transaction: transactions commit timestamp queue length */
-#define WT_STAT_CONN_TXN_COMMIT_QUEUE_LEN 1282
+#define WT_STAT_CONN_TXN_COMMIT_QUEUE_LEN 1281
/*! transaction: transactions committed */
-#define WT_STAT_CONN_TXN_COMMIT 1283
+#define WT_STAT_CONN_TXN_COMMIT 1282
/*! transaction: transactions read timestamp queue inserts to head */
-#define WT_STAT_CONN_TXN_READ_QUEUE_HEAD 1284
+#define WT_STAT_CONN_TXN_READ_QUEUE_HEAD 1283
/*! transaction: transactions read timestamp queue inserts total */
-#define WT_STAT_CONN_TXN_READ_QUEUE_INSERTS 1285
+#define WT_STAT_CONN_TXN_READ_QUEUE_INSERTS 1284
/*! transaction: transactions read timestamp queue length */
-#define WT_STAT_CONN_TXN_READ_QUEUE_LEN 1286
+#define WT_STAT_CONN_TXN_READ_QUEUE_LEN 1285
/*! transaction: transactions rolled back */
-#define WT_STAT_CONN_TXN_ROLLBACK 1287
+#define WT_STAT_CONN_TXN_ROLLBACK 1286
/*! transaction: update conflicts */
-#define WT_STAT_CONN_TXN_UPDATE_CONFLICT 1288
+#define WT_STAT_CONN_TXN_UPDATE_CONFLICT 1287
/*!
* @}
diff --git a/src/reconcile/rec_write.c b/src/reconcile/rec_write.c
index c3e0cb20ec1..ae856649ede 100644
--- a/src/reconcile/rec_write.c
+++ b/src/reconcile/rec_write.c
@@ -50,9 +50,6 @@ typedef struct {
WT_DECL_TIMESTAMP(max_timestamp)
WT_DECL_TIMESTAMP(min_saved_timestamp)
- u_int updates_seen; /* Count of updates seen. */
- u_int updates_unstable; /* Count of updates not visible_all. */
-
bool update_uncommitted; /* An update was uncommitted */
bool update_used; /* An update could be used */
@@ -453,15 +450,6 @@ __wt_reconcile(WT_SESSION_IMPL *session, WT_REF *ref,
WT_ILLEGAL_VALUE_SET(session);
}
- /*
- * Update the global lookaside score. Only use observations during
- * eviction, not checkpoints and don't count eviction of the lookaside
- * table itself.
- */
- if (F_ISSET(r, WT_REC_EVICT) && !F_ISSET(btree, WT_BTREE_LOOKASIDE))
- __wt_cache_update_lookaside_score(
- session, r->updates_seen, r->updates_unstable);
-
/* Check for a successful reconciliation. */
WT_TRET(__rec_write_check_complete(session, r, ret, lookaside_retryp));
@@ -982,7 +970,6 @@ __rec_init(WT_SESSION_IMPL *session,
#endif
/* Track if updates were used and/or uncommitted. */
- r->updates_seen = r->updates_unstable = 0;
r->update_uncommitted = r->update_used = false;
/* Track if the page can be marked clean. */
@@ -1268,7 +1255,6 @@ __rec_txn_read(WT_SESSION_IMPL *session, WT_RECONCILE *r,
if ((txnid = upd->txnid) == WT_TXN_ABORTED)
continue;
- ++r->updates_seen;
upd_memsize += WT_UPDATE_MEMSIZE(upd);
/*
@@ -1311,28 +1297,10 @@ __rec_txn_read(WT_SESSION_IMPL *session, WT_RECONCILE *r,
* uncommitted updates). Lookaside eviction can save any
* committed update. Regular eviction checks that the maximum
* transaction ID and timestamp seen are stable.
- *
- * Lookaside eviction tries to choose the same version as a
- * subsequent checkpoint, so that checkpoint can skip over
- * pages with lookaside entries. If the application has
- * supplied a stable timestamp, we assume (a) that it is old,
- * and (b) that the next checkpoint will use it, so we wait to
- * see a stable update. If there is no stable timestamp, we
- * assume the next checkpoint will write the most recent
- * version (but we save enough information that checkpoint can
- * fix things up if we choose an update that is too new).
*/
- if (*updp == NULL && F_ISSET(r, WT_REC_LOOKASIDE) &&
- F_ISSET(r, WT_REC_VISIBLE_ALL) &&
- !S2C(session)->txn_global.has_stable_timestamp)
- *updp = upd;
-
if (F_ISSET(r, WT_REC_VISIBLE_ALL) ?
!__wt_txn_upd_visible_all(session, upd) :
!__wt_txn_upd_visible(session, upd)) {
- if (F_ISSET(r, WT_REC_EVICT))
- ++r->updates_unstable;
-
/*
* Rare case: when applications run at low isolation
* levels, update/restore eviction may see a stable
@@ -1473,14 +1441,12 @@ check_original_value:
/*
* Returning an update means the original on-page value might be lost,
* and that's a problem if there's a reader that needs it. There are
- * three cases: any update from a modify operation (because the modify
- * has to be applied to a stable update, not the new on-page update),
- * any lookaside table eviction (because the backing disk image is
- * rewritten), or any reconciliation of a backing overflow record that
- * will be physically removed once it's no longer needed.
- */
- if (*updp != NULL && ((*updp)->type == WT_UPDATE_MODIFIED ||
- F_ISSET(r, WT_REC_LOOKASIDE) || (vpack != NULL &&
+ * two cases: any lookaside table eviction (because the backing disk
+ * image is rewritten), or any reconciliation of a backing overflow
+ * record that will be physically removed once it's no longer needed.
+ */
+ if (*updp != NULL && (F_ISSET(r, WT_REC_LOOKASIDE) ||
+ (vpack != NULL &&
vpack->ovfl && vpack->raw != WT_CELL_VALUE_OVFL_RM)))
WT_RET(
__rec_append_orig_value(session, page, first_upd, vpack));
@@ -3335,12 +3301,6 @@ __rec_split_write_supd(WT_SESSION_IMPL *session,
r->supd_next = j;
}
- /* Track the oldest timestamp seen so far. */
-#ifdef HAVE_TIMESTAMPS
- multi->las_max_txn = r->max_txn;
- __wt_timestamp_set(&multi->las_min_timestamp, &r->min_saved_timestamp);
-#endif
-
err: __wt_scr_free(session, &key);
return (ret);
}
@@ -5910,7 +5870,6 @@ __rec_write_wrapup(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_PAGE *page)
mod->mod_disk_image = r->multi->disk_image;
r->multi->disk_image = NULL;
mod->mod_replace_las_pageid = r->multi->las_pageid;
- mod->mod_replace_las_max_txn = r->max_txn;
#ifdef HAVE_TIMESTAMPS
__wt_timestamp_set(&mod->mod_replace_las_min_timestamp,
&r->min_saved_timestamp);
diff --git a/src/support/stat.c b/src/support/stat.c
index 924afaa21d6..57dcd33c7f1 100644
--- a/src/support/stat.c
+++ b/src/support/stat.c
@@ -809,7 +809,6 @@ static const char * const __stats_connection_desc[] = {
"cache: internal pages evicted",
"cache: internal pages split during eviction",
"cache: leaf pages split during eviction",
- "cache: lookaside score",
"cache: lookaside table entries",
"cache: lookaside table insert calls",
"cache: lookaside table remove calls",
@@ -1140,7 +1139,6 @@ __wt_stat_connection_clear_single(WT_CONNECTION_STATS *stats)
stats->cache_eviction_internal = 0;
stats->cache_eviction_split_internal = 0;
stats->cache_eviction_split_leaf = 0;
- /* not clearing cache_lookaside_score */
/* not clearing cache_lookaside_entries */
stats->cache_lookaside_insert = 0;
stats->cache_lookaside_remove = 0;
@@ -1492,8 +1490,6 @@ __wt_stat_connection_aggregate(
WT_STAT_READ(from, cache_eviction_split_internal);
to->cache_eviction_split_leaf +=
WT_STAT_READ(from, cache_eviction_split_leaf);
- to->cache_lookaside_score +=
- WT_STAT_READ(from, cache_lookaside_score);
to->cache_lookaside_entries +=
WT_STAT_READ(from, cache_lookaside_entries);
to->cache_lookaside_insert +=