summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLuke Chen <luke.chen@mongodb.com>2018-11-13 15:55:44 +1100
committerLuke Chen <luke.chen@mongodb.com>2018-11-13 16:10:13 +1100
commitfc13d160fed315b480222c15b32afa51de8b681a (patch)
tree769820090631e851add00e78123a60ce97d53c79 /src
parenta5ce10b0982c7a0378ba92f1c7d3e02d49d0b18a (diff)
downloadmongo-fc13d160fed315b480222c15b32afa51de8b681a.tar.gz
Import wiredtiger: 849c21c26c879bb1195f211b63bdea74868094ea from branch mongodb-4.2
ref: e8cf194d81..849c21c26c for: 4.1.6 WT-4043 Take locks while dumping the cache to avoid crashes WT-4399 Fix compression for workgen's wtperf emulation WT-4401 workgen: wtperf emulation: sample_interval broken with integer values WT-4402 Add rollback support and monitor JSON output in wtperf WT-4411 Added connection statistic for current total of cached cursors WT-4412 wtperf coverity fixes WT-4418 Don't keep key/value memory buffers allocated for cached cursors WT-4422 Don't queue clean pages for urgent eviction
Diffstat (limited to 'src')
-rwxr-xr-xsrc/third_party/wiredtiger/bench/workgen/wtperf.py10
-rw-r--r--src/third_party/wiredtiger/bench/wtperf/wtperf.c75
-rw-r--r--src/third_party/wiredtiger/dist/stat_data.py7
-rw-r--r--src/third_party/wiredtiger/import.data2
-rw-r--r--src/third_party/wiredtiger/src/cursor/cur_std.c10
-rw-r--r--src/third_party/wiredtiger/src/evict/evict_lru.c56
-rw-r--r--src/third_party/wiredtiger/src/include/stat.h7
-rw-r--r--src/third_party/wiredtiger/src/include/wiredtiger.in468
-rw-r--r--src/third_party/wiredtiger/src/support/stat.c25
-rwxr-xr-xsrc/third_party/wiredtiger/test/suite/test_cursor16.py95
10 files changed, 476 insertions, 279 deletions
diff --git a/src/third_party/wiredtiger/bench/workgen/wtperf.py b/src/third_party/wiredtiger/bench/workgen/wtperf.py
index c0c1882fc42..84ae126feac 100755
--- a/src/third_party/wiredtiger/bench/workgen/wtperf.py
+++ b/src/third_party/wiredtiger/bench/workgen/wtperf.py
@@ -129,7 +129,7 @@ class Translator:
# Convert a time value, by default a number of seconds, that can be
# modified to microseconds using 'ms' as a suffix.
def get_intms_opt(self, optname, wtperf_optname, dfault):
- s = self._get_opt(wtperf_optname, str(dfault))
+ s = str(self._get_opt(wtperf_optname, str(dfault)))
if s.endswith('ms'):
v = int(s[:-2])
else:
@@ -555,7 +555,6 @@ class Translator:
if self.options.sample_interval_ms != 0:
workloadopts += 'workload.options.sample_interval_ms = ' + \
str(self.options.sample_interval_ms) + '\n'
- print('X: ' + workloadopts)
s = '#/usr/bin/env python\n'
s += '# generated from ' + self.filename + '\n'
@@ -594,8 +593,11 @@ class Translator:
if conn_config != '':
s += 'conn_config += ",' + conn_config + '" # explicitly added\n'
if compression != '':
- s += 'conn_config += extensions_config(["compressors/' + \
- compression + '"])\n'
+ # We require WiredTiger to be configured with snappy built-in,
+ # so do not add snappy to the list of extensions to be loaded.
+ if compression != 'snappy':
+ s += 'conn_config += extensions_config(["compressors/' + \
+ compression + '"])\n'
compression = 'block_compressor=' + compression + ','
s += 'conn = wiredtiger_open("' + self.homedir + \
'", "create," + conn_config)\n'
diff --git a/src/third_party/wiredtiger/bench/wtperf/wtperf.c b/src/third_party/wiredtiger/bench/wtperf/wtperf.c
index 047ce549746..5390c2b3f73 100644
--- a/src/third_party/wiredtiger/bench/wtperf/wtperf.c
+++ b/src/third_party/wiredtiger/bench/wtperf/wtperf.c
@@ -809,8 +809,26 @@ op_err: if (ret == WT_ROLLBACK && ops_per_txn != 0) {
log_table_cursor, value_buf);
if ((ret =
log_table_cursor->insert(log_table_cursor)) != 0) {
- lprintf(wtperf, ret, 0, "Cursor insert failed");
- goto err;
+ lprintf(wtperf, ret, 1, "Cursor insert failed");
+ if (ret == WT_ROLLBACK && ops_per_txn == 0) {
+ lprintf(wtperf, ret, 1,
+ "log-table: ROLLBACK");
+ if ((ret =
+ session->rollback_transaction(
+ session, NULL)) != 0) {
+ lprintf(wtperf, ret, 0, "Failed"
+ " rollback_transaction");
+ goto err;
+ }
+ if ((ret = session->begin_transaction(
+ session, NULL)) != 0) {
+ lprintf(wtperf, ret, 0,
+ "Worker begin "
+ "transaction failed");
+ goto err;
+ }
+ } else
+ goto err;
}
}
@@ -1256,7 +1274,7 @@ monitor(void *arg)
struct timespec t;
struct tm localt;
CONFIG_OPTS *opts;
- FILE *fp;
+ FILE *fp, *jfp;
WTPERF *wtperf;
size_t len;
uint64_t min_thr, reads, inserts, updates;
@@ -1267,15 +1285,18 @@ monitor(void *arg)
uint32_t update_avg, update_min, update_max;
uint32_t latency_max, level;
u_int i;
+ size_t buf_size;
int msg_err;
const char *str;
char buf[64], *path;
+ bool first;
wtperf = (WTPERF *)arg;
opts = wtperf->opts;
assert(opts->sample_interval != 0);
- fp = NULL;
+ fp = jfp = NULL;
+ first = true;
path = NULL;
min_thr = (uint64_t)opts->min_throughput;
@@ -1290,8 +1311,15 @@ monitor(void *arg)
lprintf(wtperf, errno, 0, "%s", path);
goto err;
}
+ testutil_check(__wt_snprintf(
+ path, len, "%s/monitor.json", wtperf->monitor_dir));
+ if ((jfp = fopen(path, "w")) == NULL) {
+ lprintf(wtperf, errno, 0, "%s", path);
+ goto err;
+ }
/* Set line buffering for monitor file. */
__wt_stream_set_line_buffer(fp);
+ __wt_stream_set_line_buffer(jfp);
fprintf(fp,
"#time,"
"totalsec,"
@@ -1361,6 +1389,43 @@ monitor(void *arg)
read_avg, read_min, read_max,
insert_avg, insert_min, insert_max,
update_avg, update_min, update_max);
+ if (jfp != NULL) {
+ buf_size = strftime(buf,
+ sizeof(buf), "%Y-%m-%dT%H:%M:%S", &localt);
+ testutil_assert(buf_size != 0);
+ testutil_check(__wt_snprintf(&buf[buf_size],
+ sizeof(buf) - buf_size,
+ ".%3.3" PRIu64 "Z",
+ ns_to_ms((uint64_t)t.tv_nsec)));
+ (void)fprintf(jfp, "{");
+ if (first) {
+ (void)fprintf(jfp, "\"version\":\"%s\",",
+ WIREDTIGER_VERSION_STRING);
+ first = false;
+ }
+ (void)fprintf(jfp,
+ "\"localTime\":\"%s\",\"wtperf\":{", buf);
+ /* Note does not have initial comma before "read" */
+ (void)fprintf(jfp,
+ "\"read\":{\"ops per sec\":%" PRIu64
+ ",\"average latency\":%" PRIu32
+ ",\"min latency\":%" PRIu32
+ ",\"max latency\":%" PRIu32 "}",
+ cur_reads, read_avg, read_min, read_max);
+ (void)fprintf(jfp,
+ ",\"insert\":{\"ops per sec\":%" PRIu64
+ ",\"average latency\":%" PRIu32
+ ",\"min latency\":%" PRIu32
+ ",\"max latency\":%" PRIu32 "}",
+ cur_inserts, insert_avg, insert_min, insert_max);
+ (void)fprintf(jfp,
+ ",\"update\":{\"ops per sec\":%" PRIu64
+ ",\"average latency\":%" PRIu32
+ ",\"min latency\":%" PRIu32
+ ",\"max latency\":%" PRIu32 "}",
+ cur_updates, update_avg, update_min, update_max);
+ fprintf(jfp, "}}\n");
+ }
if (latency_max != 0 &&
(read_max > latency_max || insert_max > latency_max ||
@@ -1411,6 +1476,8 @@ err: wtperf->error = wtperf->stop = true;
if (fp != NULL)
(void)fclose(fp);
+ if (jfp != NULL)
+ (void)fclose(jfp);
free(path);
return (WT_THREAD_RET_VALUE);
diff --git a/src/third_party/wiredtiger/dist/stat_data.py b/src/third_party/wiredtiger/dist/stat_data.py
index 13b1675550e..d6c89c1af70 100644
--- a/src/third_party/wiredtiger/dist/stat_data.py
+++ b/src/third_party/wiredtiger/dist/stat_data.py
@@ -291,7 +291,8 @@ connection_stats = [
##########################################
# Cursor operations
##########################################
- CursorStat('cursor_cache', 'cursors cached on close'),
+ CursorStat('cursors_cached', 'cursors currently cached', 'no_clear,no_scale'),
+ CursorStat('cursor_cache', 'cursor close calls that result in cache'),
CursorStat('cursor_create', 'cursor create calls'),
CursorStat('cursor_insert', 'cursor insert calls'),
CursorStat('cursor_modify', 'cursor modify calls'),
@@ -694,7 +695,7 @@ dsrc_stats = [
##########################################
# Cursor operations
##########################################
- CursorStat('cursor_cache', 'cursors cached on close'),
+ CursorStat('cursor_cache', 'close calls that result in cache'),
CursorStat('cursor_create', 'create calls'),
CursorStat('cursor_insert', 'insert calls'),
CursorStat('cursor_insert_bulk', 'bulk-loaded cursor-insert calls'),
@@ -752,7 +753,7 @@ dsrc_stats = [
# Session operations
##########################################
SessionStat('session_compact', 'object compaction'),
- SessionStat('session_cursor_cached', 'cached cursor count', 'no_clear,no_scale'),
+ SessionStat('session_cursors_cached', 'cached cursor count', 'no_clear,no_scale'),
SessionStat('session_cursor_open', 'open cursor count', 'no_clear,no_scale'),
##########################################
diff --git a/src/third_party/wiredtiger/import.data b/src/third_party/wiredtiger/import.data
index c45a35282e1..7bbe4b86955 100644
--- a/src/third_party/wiredtiger/import.data
+++ b/src/third_party/wiredtiger/import.data
@@ -1,5 +1,5 @@
{
- "commit": "e8cf194d813096cc2b30c0dd2d9d9c93ade79756",
+ "commit": "849c21c26c879bb1195f211b63bdea74868094ea",
"github": "wiredtiger/wiredtiger.git",
"vendor": "wiredtiger",
"branch": "mongodb-4.2"
diff --git a/src/third_party/wiredtiger/src/cursor/cur_std.c b/src/third_party/wiredtiger/src/cursor/cur_std.c
index 597323cb4fa..3217b55cfa4 100644
--- a/src/third_party/wiredtiger/src/cursor/cur_std.c
+++ b/src/third_party/wiredtiger/src/cursor/cur_std.c
@@ -598,6 +598,10 @@ __wt_cursor_cache(WT_CURSOR *cursor, WT_DATA_HANDLE *dhandle)
WT_TRET(cursor->reset(cursor));
+ /* Don't keep buffers allocated for cached cursors. */
+ __wt_buf_free(session, &cursor->key);
+ __wt_buf_free(session, &cursor->value);
+
/*
* Acquire a reference while decrementing the in-use counter.
* After this point, the dhandle may be marked dead, but the
@@ -617,7 +621,8 @@ __wt_cursor_cache(WT_CURSOR *cursor, WT_DATA_HANDLE *dhandle)
(void)__wt_atomic_sub32(&S2C(session)->open_cursor_count, 1);
WT_STAT_DATA_DECR(session, session_cursor_open);
- WT_STAT_DATA_INCR(session, session_cursor_cached);
+ WT_STAT_DATA_INCR(session, session_cursors_cached);
+ WT_STAT_CONN_INCR(session, cursors_cached);
F_SET(cursor, WT_CURSTD_CACHED);
return (ret);
}
@@ -642,7 +647,8 @@ __wt_cursor_reopen(WT_CURSOR *cursor, WT_DATA_HANDLE *dhandle)
}
(void)__wt_atomic_add32(&S2C(session)->open_cursor_count, 1);
WT_STAT_DATA_INCR(session, session_cursor_open);
- WT_STAT_DATA_DECR(session, session_cursor_cached);
+ WT_STAT_DATA_DECR(session, session_cursors_cached);
+ WT_STAT_CONN_DECR(session, cursors_cached);
bucket = cursor->uri_hash % WT_HASH_ARRAY_SIZE;
TAILQ_REMOVE(&session->cursor_cache[bucket], cursor, q);
diff --git a/src/third_party/wiredtiger/src/evict/evict_lru.c b/src/third_party/wiredtiger/src/evict/evict_lru.c
index ff3772533ae..59b568aab5c 100644
--- a/src/third_party/wiredtiger/src/evict/evict_lru.c
+++ b/src/third_party/wiredtiger/src/evict/evict_lru.c
@@ -1923,8 +1923,8 @@ __evict_walk_tree(WT_SESSION_IMPL *session,
__wt_cache_read_gen_new(session, page);
/* Pages being forcibly evicted go on the urgent queue. */
- if (page->read_gen == WT_READGEN_OLDEST ||
- page->memory_footprint >= btree->splitmempage) {
+ if (modified && (page->read_gen == WT_READGEN_OLDEST ||
+ page->memory_footprint >= btree->splitmempage)) {
WT_STAT_CONN_INCR(
session, cache_eviction_pages_queued_oldest);
if (__wt_page_evict_urgent(session, ref))
@@ -2639,6 +2639,39 @@ __verbose_dump_cache_single(WT_SESSION_IMPL *session,
}
/*
+ * __verbose_dump_cache_apply --
+ * Apply dumping cache for all the dhandles.
+ */
+static int
+__verbose_dump_cache_apply(WT_SESSION_IMPL *session,
+ uint64_t *total_bytesp, uint64_t *total_dirty_bytesp)
+{
+ WT_CONNECTION_IMPL *conn;
+ WT_DATA_HANDLE *dhandle;
+ WT_DECL_RET;
+
+ conn = S2C(session);
+ for (dhandle = NULL;;) {
+ WT_DHANDLE_NEXT(session, dhandle, &conn->dhqh, q);
+ if (dhandle == NULL)
+ break;
+
+ /* Skip if the tree is marked discarded by another thread. */
+ if (dhandle->type != WT_DHANDLE_TYPE_BTREE ||
+ !F_ISSET(dhandle, WT_DHANDLE_OPEN) ||
+ F_ISSET(dhandle, WT_DHANDLE_DISCARD))
+ continue;
+
+ WT_WITH_DHANDLE(session, dhandle,
+ ret = __verbose_dump_cache_single(
+ session, total_bytesp, total_dirty_bytesp));
+ if (ret != 0)
+ WT_RET(ret);
+ }
+ return (0);
+}
+
+/*
* __wt_verbose_dump_cache --
* Output diagnostic information about the cache.
*/
@@ -2646,7 +2679,6 @@ int
__wt_verbose_dump_cache(WT_SESSION_IMPL *session)
{
WT_CONNECTION_IMPL *conn;
- WT_DATA_HANDLE *dhandle;
WT_DECL_RET;
double pct;
uint64_t total_bytes, total_dirty_bytes;
@@ -2668,21 +2700,9 @@ __wt_verbose_dump_cache(WT_SESSION_IMPL *session)
WT_RET(__wt_msg(session,
"cache dirty check: %s (%2.3f%%)", needed ? "yes" : "no", pct));
- for (dhandle = NULL;;) {
- WT_WITH_HANDLE_LIST_READ_LOCK(session,
- WT_DHANDLE_NEXT(session, dhandle, &conn->dhqh, q));
- if (dhandle == NULL)
- break;
- if (dhandle->type != WT_DHANDLE_TYPE_BTREE ||
- !F_ISSET(dhandle, WT_DHANDLE_OPEN))
- continue;
-
- WT_WITH_DHANDLE(session, dhandle,
- ret = __verbose_dump_cache_single(
- session, &total_bytes, &total_dirty_bytes));
- if (ret != 0)
- break;
- }
+ WT_WITH_HANDLE_LIST_READ_LOCK(session,
+ ret = __verbose_dump_cache_apply(
+ session, &total_bytes, &total_dirty_bytes));
WT_RET(ret);
/*
diff --git a/src/third_party/wiredtiger/src/include/stat.h b/src/third_party/wiredtiger/src/include/stat.h
index 6407b5fabfe..3dca894a68c 100644
--- a/src/third_party/wiredtiger/src/include/stat.h
+++ b/src/third_party/wiredtiger/src/include/stat.h
@@ -454,6 +454,7 @@ struct __wt_connection_stats {
int64_t fsync_io;
int64_t read_io;
int64_t write_io;
+ int64_t cursor_cache;
int64_t cursor_create;
int64_t cursor_insert;
int64_t cursor_modify;
@@ -470,7 +471,7 @@ struct __wt_connection_stats {
int64_t cursor_sweep_examined;
int64_t cursor_sweep;
int64_t cursor_update;
- int64_t cursor_cache;
+ int64_t cursors_cached;
int64_t cursor_reopen;
int64_t cursor_truncate;
int64_t dh_conn_handle_count;
@@ -792,12 +793,12 @@ struct __wt_dsrc_stats {
int64_t compress_raw_fail;
int64_t compress_raw_ok;
int64_t cursor_insert_bulk;
+ int64_t cursor_cache;
int64_t cursor_create;
int64_t cursor_restart;
int64_t cursor_insert_bytes;
int64_t cursor_remove_bytes;
int64_t cursor_update_bytes;
- int64_t cursor_cache;
int64_t cursor_reopen;
int64_t cursor_insert;
int64_t cursor_modify;
@@ -824,7 +825,7 @@ struct __wt_dsrc_stats {
int64_t rec_pages;
int64_t rec_pages_eviction;
int64_t rec_page_delete;
- int64_t session_cursor_cached;
+ int64_t session_cursors_cached;
int64_t session_compact;
int64_t session_cursor_open;
int64_t txn_update_conflict;
diff --git a/src/third_party/wiredtiger/src/include/wiredtiger.in b/src/third_party/wiredtiger/src/include/wiredtiger.in
index 2fb4af02900..76151082135 100644
--- a/src/third_party/wiredtiger/src/include/wiredtiger.in
+++ b/src/third_party/wiredtiger/src/include/wiredtiger.in
@@ -5291,490 +5291,492 @@ extern int wiredtiger_extension_terminate(WT_CONNECTION *connection);
#define WT_STAT_CONN_READ_IO 1139
/*! connection: total write I/Os */
#define WT_STAT_CONN_WRITE_IO 1140
+/*! cursor: cursor close calls that result in cache */
+#define WT_STAT_CONN_CURSOR_CACHE 1141
/*! cursor: cursor create calls */
-#define WT_STAT_CONN_CURSOR_CREATE 1141
+#define WT_STAT_CONN_CURSOR_CREATE 1142
/*! cursor: cursor insert calls */
-#define WT_STAT_CONN_CURSOR_INSERT 1142
+#define WT_STAT_CONN_CURSOR_INSERT 1143
/*! cursor: cursor modify calls */
-#define WT_STAT_CONN_CURSOR_MODIFY 1143
+#define WT_STAT_CONN_CURSOR_MODIFY 1144
/*! cursor: cursor next calls */
-#define WT_STAT_CONN_CURSOR_NEXT 1144
+#define WT_STAT_CONN_CURSOR_NEXT 1145
/*! cursor: cursor operation restarted */
-#define WT_STAT_CONN_CURSOR_RESTART 1145
+#define WT_STAT_CONN_CURSOR_RESTART 1146
/*! cursor: cursor prev calls */
-#define WT_STAT_CONN_CURSOR_PREV 1146
+#define WT_STAT_CONN_CURSOR_PREV 1147
/*! cursor: cursor remove calls */
-#define WT_STAT_CONN_CURSOR_REMOVE 1147
+#define WT_STAT_CONN_CURSOR_REMOVE 1148
/*! cursor: cursor reserve calls */
-#define WT_STAT_CONN_CURSOR_RESERVE 1148
+#define WT_STAT_CONN_CURSOR_RESERVE 1149
/*! cursor: cursor reset calls */
-#define WT_STAT_CONN_CURSOR_RESET 1149
+#define WT_STAT_CONN_CURSOR_RESET 1150
/*! cursor: cursor search calls */
-#define WT_STAT_CONN_CURSOR_SEARCH 1150
+#define WT_STAT_CONN_CURSOR_SEARCH 1151
/*! cursor: cursor search near calls */
-#define WT_STAT_CONN_CURSOR_SEARCH_NEAR 1151
+#define WT_STAT_CONN_CURSOR_SEARCH_NEAR 1152
/*! cursor: cursor sweep buckets */
-#define WT_STAT_CONN_CURSOR_SWEEP_BUCKETS 1152
+#define WT_STAT_CONN_CURSOR_SWEEP_BUCKETS 1153
/*! cursor: cursor sweep cursors closed */
-#define WT_STAT_CONN_CURSOR_SWEEP_CLOSED 1153
+#define WT_STAT_CONN_CURSOR_SWEEP_CLOSED 1154
/*! cursor: cursor sweep cursors examined */
-#define WT_STAT_CONN_CURSOR_SWEEP_EXAMINED 1154
+#define WT_STAT_CONN_CURSOR_SWEEP_EXAMINED 1155
/*! cursor: cursor sweeps */
-#define WT_STAT_CONN_CURSOR_SWEEP 1155
+#define WT_STAT_CONN_CURSOR_SWEEP 1156
/*! cursor: cursor update calls */
-#define WT_STAT_CONN_CURSOR_UPDATE 1156
-/*! cursor: cursors cached on close */
-#define WT_STAT_CONN_CURSOR_CACHE 1157
+#define WT_STAT_CONN_CURSOR_UPDATE 1157
+/*! cursor: cursors currently cached */
+#define WT_STAT_CONN_CURSORS_CACHED 1158
/*! cursor: cursors reused from cache */
-#define WT_STAT_CONN_CURSOR_REOPEN 1158
+#define WT_STAT_CONN_CURSOR_REOPEN 1159
/*! cursor: truncate calls */
-#define WT_STAT_CONN_CURSOR_TRUNCATE 1159
+#define WT_STAT_CONN_CURSOR_TRUNCATE 1160
/*! data-handle: connection data handles currently active */
-#define WT_STAT_CONN_DH_CONN_HANDLE_COUNT 1160
+#define WT_STAT_CONN_DH_CONN_HANDLE_COUNT 1161
/*! data-handle: connection sweep candidate became referenced */
-#define WT_STAT_CONN_DH_SWEEP_REF 1161
+#define WT_STAT_CONN_DH_SWEEP_REF 1162
/*! data-handle: connection sweep dhandles closed */
-#define WT_STAT_CONN_DH_SWEEP_CLOSE 1162
+#define WT_STAT_CONN_DH_SWEEP_CLOSE 1163
/*! data-handle: connection sweep dhandles removed from hash list */
-#define WT_STAT_CONN_DH_SWEEP_REMOVE 1163
+#define WT_STAT_CONN_DH_SWEEP_REMOVE 1164
/*! data-handle: connection sweep time-of-death sets */
-#define WT_STAT_CONN_DH_SWEEP_TOD 1164
+#define WT_STAT_CONN_DH_SWEEP_TOD 1165
/*! data-handle: connection sweeps */
-#define WT_STAT_CONN_DH_SWEEPS 1165
+#define WT_STAT_CONN_DH_SWEEPS 1166
/*! data-handle: session dhandles swept */
-#define WT_STAT_CONN_DH_SESSION_HANDLES 1166
+#define WT_STAT_CONN_DH_SESSION_HANDLES 1167
/*! data-handle: session sweep attempts */
-#define WT_STAT_CONN_DH_SESSION_SWEEPS 1167
+#define WT_STAT_CONN_DH_SESSION_SWEEPS 1168
/*! lock: checkpoint lock acquisitions */
-#define WT_STAT_CONN_LOCK_CHECKPOINT_COUNT 1168
+#define WT_STAT_CONN_LOCK_CHECKPOINT_COUNT 1169
/*! lock: checkpoint lock application thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_APPLICATION 1169
+#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_APPLICATION 1170
/*! lock: checkpoint lock internal thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_INTERNAL 1170
+#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_INTERNAL 1171
/*!
* lock: commit timestamp queue lock application thread time waiting
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_WAIT_APPLICATION 1171
+#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_WAIT_APPLICATION 1172
/*! lock: commit timestamp queue lock internal thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_WAIT_INTERNAL 1172
+#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_WAIT_INTERNAL 1173
/*! lock: commit timestamp queue read lock acquisitions */
-#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_READ_COUNT 1173
+#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_READ_COUNT 1174
/*! lock: commit timestamp queue write lock acquisitions */
-#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_WRITE_COUNT 1174
+#define WT_STAT_CONN_LOCK_COMMIT_TIMESTAMP_WRITE_COUNT 1175
/*! lock: dhandle lock application thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_APPLICATION 1175
+#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_APPLICATION 1176
/*! lock: dhandle lock internal thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_INTERNAL 1176
+#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_INTERNAL 1177
/*! lock: dhandle read lock acquisitions */
-#define WT_STAT_CONN_LOCK_DHANDLE_READ_COUNT 1177
+#define WT_STAT_CONN_LOCK_DHANDLE_READ_COUNT 1178
/*! lock: dhandle write lock acquisitions */
-#define WT_STAT_CONN_LOCK_DHANDLE_WRITE_COUNT 1178
+#define WT_STAT_CONN_LOCK_DHANDLE_WRITE_COUNT 1179
/*! lock: metadata lock acquisitions */
-#define WT_STAT_CONN_LOCK_METADATA_COUNT 1179
+#define WT_STAT_CONN_LOCK_METADATA_COUNT 1180
/*! lock: metadata lock application thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_METADATA_WAIT_APPLICATION 1180
+#define WT_STAT_CONN_LOCK_METADATA_WAIT_APPLICATION 1181
/*! lock: metadata lock internal thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_METADATA_WAIT_INTERNAL 1181
+#define WT_STAT_CONN_LOCK_METADATA_WAIT_INTERNAL 1182
/*!
* lock: read timestamp queue lock application thread time waiting
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_APPLICATION 1182
+#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_APPLICATION 1183
/*! lock: read timestamp queue lock internal thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_INTERNAL 1183
+#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_INTERNAL 1184
/*! lock: read timestamp queue read lock acquisitions */
-#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_READ_COUNT 1184
+#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_READ_COUNT 1185
/*! lock: read timestamp queue write lock acquisitions */
-#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WRITE_COUNT 1185
+#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WRITE_COUNT 1186
/*! lock: schema lock acquisitions */
-#define WT_STAT_CONN_LOCK_SCHEMA_COUNT 1186
+#define WT_STAT_CONN_LOCK_SCHEMA_COUNT 1187
/*! lock: schema lock application thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_APPLICATION 1187
+#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_APPLICATION 1188
/*! lock: schema lock internal thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_INTERNAL 1188
+#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_INTERNAL 1189
/*!
* lock: table lock application thread time waiting for the table lock
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_TABLE_WAIT_APPLICATION 1189
+#define WT_STAT_CONN_LOCK_TABLE_WAIT_APPLICATION 1190
/*!
* lock: table lock internal thread time waiting for the table lock
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_TABLE_WAIT_INTERNAL 1190
+#define WT_STAT_CONN_LOCK_TABLE_WAIT_INTERNAL 1191
/*! lock: table read lock acquisitions */
-#define WT_STAT_CONN_LOCK_TABLE_READ_COUNT 1191
+#define WT_STAT_CONN_LOCK_TABLE_READ_COUNT 1192
/*! lock: table write lock acquisitions */
-#define WT_STAT_CONN_LOCK_TABLE_WRITE_COUNT 1192
+#define WT_STAT_CONN_LOCK_TABLE_WRITE_COUNT 1193
/*! lock: txn global lock application thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_APPLICATION 1193
+#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_APPLICATION 1194
/*! lock: txn global lock internal thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_INTERNAL 1194
+#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_INTERNAL 1195
/*! lock: txn global read lock acquisitions */
-#define WT_STAT_CONN_LOCK_TXN_GLOBAL_READ_COUNT 1195
+#define WT_STAT_CONN_LOCK_TXN_GLOBAL_READ_COUNT 1196
/*! lock: txn global write lock acquisitions */
-#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WRITE_COUNT 1196
+#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WRITE_COUNT 1197
/*! log: busy returns attempting to switch slots */
-#define WT_STAT_CONN_LOG_SLOT_SWITCH_BUSY 1197
+#define WT_STAT_CONN_LOG_SLOT_SWITCH_BUSY 1198
/*! log: force archive time sleeping (usecs) */
-#define WT_STAT_CONN_LOG_FORCE_ARCHIVE_SLEEP 1198
+#define WT_STAT_CONN_LOG_FORCE_ARCHIVE_SLEEP 1199
/*! log: log bytes of payload data */
-#define WT_STAT_CONN_LOG_BYTES_PAYLOAD 1199
+#define WT_STAT_CONN_LOG_BYTES_PAYLOAD 1200
/*! log: log bytes written */
-#define WT_STAT_CONN_LOG_BYTES_WRITTEN 1200
+#define WT_STAT_CONN_LOG_BYTES_WRITTEN 1201
/*! log: log files manually zero-filled */
-#define WT_STAT_CONN_LOG_ZERO_FILLS 1201
+#define WT_STAT_CONN_LOG_ZERO_FILLS 1202
/*! log: log flush operations */
-#define WT_STAT_CONN_LOG_FLUSH 1202
+#define WT_STAT_CONN_LOG_FLUSH 1203
/*! log: log force write operations */
-#define WT_STAT_CONN_LOG_FORCE_WRITE 1203
+#define WT_STAT_CONN_LOG_FORCE_WRITE 1204
/*! log: log force write operations skipped */
-#define WT_STAT_CONN_LOG_FORCE_WRITE_SKIP 1204
+#define WT_STAT_CONN_LOG_FORCE_WRITE_SKIP 1205
/*! log: log records compressed */
-#define WT_STAT_CONN_LOG_COMPRESS_WRITES 1205
+#define WT_STAT_CONN_LOG_COMPRESS_WRITES 1206
/*! log: log records not compressed */
-#define WT_STAT_CONN_LOG_COMPRESS_WRITE_FAILS 1206
+#define WT_STAT_CONN_LOG_COMPRESS_WRITE_FAILS 1207
/*! log: log records too small to compress */
-#define WT_STAT_CONN_LOG_COMPRESS_SMALL 1207
+#define WT_STAT_CONN_LOG_COMPRESS_SMALL 1208
/*! log: log release advances write LSN */
-#define WT_STAT_CONN_LOG_RELEASE_WRITE_LSN 1208
+#define WT_STAT_CONN_LOG_RELEASE_WRITE_LSN 1209
/*! log: log scan operations */
-#define WT_STAT_CONN_LOG_SCANS 1209
+#define WT_STAT_CONN_LOG_SCANS 1210
/*! log: log scan records requiring two reads */
-#define WT_STAT_CONN_LOG_SCAN_REREADS 1210
+#define WT_STAT_CONN_LOG_SCAN_REREADS 1211
/*! log: log server thread advances write LSN */
-#define WT_STAT_CONN_LOG_WRITE_LSN 1211
+#define WT_STAT_CONN_LOG_WRITE_LSN 1212
/*! log: log server thread write LSN walk skipped */
-#define WT_STAT_CONN_LOG_WRITE_LSN_SKIP 1212
+#define WT_STAT_CONN_LOG_WRITE_LSN_SKIP 1213
/*! log: log sync operations */
-#define WT_STAT_CONN_LOG_SYNC 1213
+#define WT_STAT_CONN_LOG_SYNC 1214
/*! log: log sync time duration (usecs) */
-#define WT_STAT_CONN_LOG_SYNC_DURATION 1214
+#define WT_STAT_CONN_LOG_SYNC_DURATION 1215
/*! log: log sync_dir operations */
-#define WT_STAT_CONN_LOG_SYNC_DIR 1215
+#define WT_STAT_CONN_LOG_SYNC_DIR 1216
/*! log: log sync_dir time duration (usecs) */
-#define WT_STAT_CONN_LOG_SYNC_DIR_DURATION 1216
+#define WT_STAT_CONN_LOG_SYNC_DIR_DURATION 1217
/*! log: log write operations */
-#define WT_STAT_CONN_LOG_WRITES 1217
+#define WT_STAT_CONN_LOG_WRITES 1218
/*! log: logging bytes consolidated */
-#define WT_STAT_CONN_LOG_SLOT_CONSOLIDATED 1218
+#define WT_STAT_CONN_LOG_SLOT_CONSOLIDATED 1219
/*! log: maximum log file size */
-#define WT_STAT_CONN_LOG_MAX_FILESIZE 1219
+#define WT_STAT_CONN_LOG_MAX_FILESIZE 1220
/*! log: number of pre-allocated log files to create */
-#define WT_STAT_CONN_LOG_PREALLOC_MAX 1220
+#define WT_STAT_CONN_LOG_PREALLOC_MAX 1221
/*! log: pre-allocated log files not ready and missed */
-#define WT_STAT_CONN_LOG_PREALLOC_MISSED 1221
+#define WT_STAT_CONN_LOG_PREALLOC_MISSED 1222
/*! log: pre-allocated log files prepared */
-#define WT_STAT_CONN_LOG_PREALLOC_FILES 1222
+#define WT_STAT_CONN_LOG_PREALLOC_FILES 1223
/*! log: pre-allocated log files used */
-#define WT_STAT_CONN_LOG_PREALLOC_USED 1223
+#define WT_STAT_CONN_LOG_PREALLOC_USED 1224
/*! log: records processed by log scan */
-#define WT_STAT_CONN_LOG_SCAN_RECORDS 1224
+#define WT_STAT_CONN_LOG_SCAN_RECORDS 1225
/*! log: slot close lost race */
-#define WT_STAT_CONN_LOG_SLOT_CLOSE_RACE 1225
+#define WT_STAT_CONN_LOG_SLOT_CLOSE_RACE 1226
/*! log: slot close unbuffered waits */
-#define WT_STAT_CONN_LOG_SLOT_CLOSE_UNBUF 1226
+#define WT_STAT_CONN_LOG_SLOT_CLOSE_UNBUF 1227
/*! log: slot closures */
-#define WT_STAT_CONN_LOG_SLOT_CLOSES 1227
+#define WT_STAT_CONN_LOG_SLOT_CLOSES 1228
/*! log: slot join atomic update races */
-#define WT_STAT_CONN_LOG_SLOT_RACES 1228
+#define WT_STAT_CONN_LOG_SLOT_RACES 1229
/*! log: slot join calls atomic updates raced */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_RACE 1229
+#define WT_STAT_CONN_LOG_SLOT_YIELD_RACE 1230
/*! log: slot join calls did not yield */
-#define WT_STAT_CONN_LOG_SLOT_IMMEDIATE 1230
+#define WT_STAT_CONN_LOG_SLOT_IMMEDIATE 1231
/*! log: slot join calls found active slot closed */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_CLOSE 1231
+#define WT_STAT_CONN_LOG_SLOT_YIELD_CLOSE 1232
/*! log: slot join calls slept */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_SLEEP 1232
+#define WT_STAT_CONN_LOG_SLOT_YIELD_SLEEP 1233
/*! log: slot join calls yielded */
-#define WT_STAT_CONN_LOG_SLOT_YIELD 1233
+#define WT_STAT_CONN_LOG_SLOT_YIELD 1234
/*! log: slot join found active slot closed */
-#define WT_STAT_CONN_LOG_SLOT_ACTIVE_CLOSED 1234
+#define WT_STAT_CONN_LOG_SLOT_ACTIVE_CLOSED 1235
/*! log: slot joins yield time (usecs) */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_DURATION 1235
+#define WT_STAT_CONN_LOG_SLOT_YIELD_DURATION 1236
/*! log: slot transitions unable to find free slot */
-#define WT_STAT_CONN_LOG_SLOT_NO_FREE_SLOTS 1236
+#define WT_STAT_CONN_LOG_SLOT_NO_FREE_SLOTS 1237
/*! log: slot unbuffered writes */
-#define WT_STAT_CONN_LOG_SLOT_UNBUFFERED 1237
+#define WT_STAT_CONN_LOG_SLOT_UNBUFFERED 1238
/*! log: total in-memory size of compressed records */
-#define WT_STAT_CONN_LOG_COMPRESS_MEM 1238
+#define WT_STAT_CONN_LOG_COMPRESS_MEM 1239
/*! log: total log buffer size */
-#define WT_STAT_CONN_LOG_BUFFER_SIZE 1239
+#define WT_STAT_CONN_LOG_BUFFER_SIZE 1240
/*! log: total size of compressed records */
-#define WT_STAT_CONN_LOG_COMPRESS_LEN 1240
+#define WT_STAT_CONN_LOG_COMPRESS_LEN 1241
/*! log: written slots coalesced */
-#define WT_STAT_CONN_LOG_SLOT_COALESCED 1241
+#define WT_STAT_CONN_LOG_SLOT_COALESCED 1242
/*! log: yields waiting for previous log file close */
-#define WT_STAT_CONN_LOG_CLOSE_YIELDS 1242
+#define WT_STAT_CONN_LOG_CLOSE_YIELDS 1243
/*! perf: file system read latency histogram (bucket 1) - 10-49ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT50 1243
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT50 1244
/*! perf: file system read latency histogram (bucket 2) - 50-99ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT100 1244
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT100 1245
/*! perf: file system read latency histogram (bucket 3) - 100-249ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT250 1245
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT250 1246
/*! perf: file system read latency histogram (bucket 4) - 250-499ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT500 1246
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT500 1247
/*! perf: file system read latency histogram (bucket 5) - 500-999ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT1000 1247
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT1000 1248
/*! perf: file system read latency histogram (bucket 6) - 1000ms+ */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_GT1000 1248
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_GT1000 1249
/*! perf: file system write latency histogram (bucket 1) - 10-49ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT50 1249
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT50 1250
/*! perf: file system write latency histogram (bucket 2) - 50-99ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT100 1250
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT100 1251
/*! perf: file system write latency histogram (bucket 3) - 100-249ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT250 1251
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT250 1252
/*! perf: file system write latency histogram (bucket 4) - 250-499ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT500 1252
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT500 1253
/*! perf: file system write latency histogram (bucket 5) - 500-999ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT1000 1253
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT1000 1254
/*! perf: file system write latency histogram (bucket 6) - 1000ms+ */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_GT1000 1254
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_GT1000 1255
/*! perf: operation read latency histogram (bucket 1) - 100-249us */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT250 1255
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT250 1256
/*! perf: operation read latency histogram (bucket 2) - 250-499us */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT500 1256
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT500 1257
/*! perf: operation read latency histogram (bucket 3) - 500-999us */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT1000 1257
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT1000 1258
/*! perf: operation read latency histogram (bucket 4) - 1000-9999us */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT10000 1258
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT10000 1259
/*! perf: operation read latency histogram (bucket 5) - 10000us+ */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_GT10000 1259
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_GT10000 1260
/*! perf: operation write latency histogram (bucket 1) - 100-249us */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT250 1260
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT250 1261
/*! perf: operation write latency histogram (bucket 2) - 250-499us */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT500 1261
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT500 1262
/*! perf: operation write latency histogram (bucket 3) - 500-999us */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT1000 1262
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT1000 1263
/*! perf: operation write latency histogram (bucket 4) - 1000-9999us */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT10000 1263
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT10000 1264
/*! perf: operation write latency histogram (bucket 5) - 10000us+ */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_GT10000 1264
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_GT10000 1265
/*! reconciliation: fast-path pages deleted */
-#define WT_STAT_CONN_REC_PAGE_DELETE_FAST 1265
+#define WT_STAT_CONN_REC_PAGE_DELETE_FAST 1266
/*! reconciliation: page reconciliation calls */
-#define WT_STAT_CONN_REC_PAGES 1266
+#define WT_STAT_CONN_REC_PAGES 1267
/*! reconciliation: page reconciliation calls for eviction */
-#define WT_STAT_CONN_REC_PAGES_EVICTION 1267
+#define WT_STAT_CONN_REC_PAGES_EVICTION 1268
/*! reconciliation: pages deleted */
-#define WT_STAT_CONN_REC_PAGE_DELETE 1268
+#define WT_STAT_CONN_REC_PAGE_DELETE 1269
/*! reconciliation: split bytes currently awaiting free */
-#define WT_STAT_CONN_REC_SPLIT_STASHED_BYTES 1269
+#define WT_STAT_CONN_REC_SPLIT_STASHED_BYTES 1270
/*! reconciliation: split objects currently awaiting free */
-#define WT_STAT_CONN_REC_SPLIT_STASHED_OBJECTS 1270
+#define WT_STAT_CONN_REC_SPLIT_STASHED_OBJECTS 1271
/*! session: open cursor count */
-#define WT_STAT_CONN_SESSION_CURSOR_OPEN 1271
+#define WT_STAT_CONN_SESSION_CURSOR_OPEN 1272
/*! session: open session count */
-#define WT_STAT_CONN_SESSION_OPEN 1272
+#define WT_STAT_CONN_SESSION_OPEN 1273
/*! session: session query timestamp calls */
-#define WT_STAT_CONN_SESSION_QUERY_TS 1273
+#define WT_STAT_CONN_SESSION_QUERY_TS 1274
/*! session: table alter failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_ALTER_FAIL 1274
+#define WT_STAT_CONN_SESSION_TABLE_ALTER_FAIL 1275
/*! session: table alter successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_ALTER_SUCCESS 1275
+#define WT_STAT_CONN_SESSION_TABLE_ALTER_SUCCESS 1276
/*! session: table alter unchanged and skipped */
-#define WT_STAT_CONN_SESSION_TABLE_ALTER_SKIP 1276
+#define WT_STAT_CONN_SESSION_TABLE_ALTER_SKIP 1277
/*! session: table compact failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_COMPACT_FAIL 1277
+#define WT_STAT_CONN_SESSION_TABLE_COMPACT_FAIL 1278
/*! session: table compact successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_COMPACT_SUCCESS 1278
+#define WT_STAT_CONN_SESSION_TABLE_COMPACT_SUCCESS 1279
/*! session: table create failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_CREATE_FAIL 1279
+#define WT_STAT_CONN_SESSION_TABLE_CREATE_FAIL 1280
/*! session: table create successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_CREATE_SUCCESS 1280
+#define WT_STAT_CONN_SESSION_TABLE_CREATE_SUCCESS 1281
/*! session: table drop failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_DROP_FAIL 1281
+#define WT_STAT_CONN_SESSION_TABLE_DROP_FAIL 1282
/*! session: table drop successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_DROP_SUCCESS 1282
+#define WT_STAT_CONN_SESSION_TABLE_DROP_SUCCESS 1283
/*! session: table rebalance failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_REBALANCE_FAIL 1283
+#define WT_STAT_CONN_SESSION_TABLE_REBALANCE_FAIL 1284
/*! session: table rebalance successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_REBALANCE_SUCCESS 1284
+#define WT_STAT_CONN_SESSION_TABLE_REBALANCE_SUCCESS 1285
/*! session: table rename failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_RENAME_FAIL 1285
+#define WT_STAT_CONN_SESSION_TABLE_RENAME_FAIL 1286
/*! session: table rename successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_RENAME_SUCCESS 1286
+#define WT_STAT_CONN_SESSION_TABLE_RENAME_SUCCESS 1287
/*! session: table salvage failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_FAIL 1287
+#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_FAIL 1288
/*! session: table salvage successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_SUCCESS 1288
+#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_SUCCESS 1289
/*! session: table truncate failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_FAIL 1289
+#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_FAIL 1290
/*! session: table truncate successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_SUCCESS 1290
+#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_SUCCESS 1291
/*! session: table verify failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_VERIFY_FAIL 1291
+#define WT_STAT_CONN_SESSION_TABLE_VERIFY_FAIL 1292
/*! session: table verify successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_VERIFY_SUCCESS 1292
+#define WT_STAT_CONN_SESSION_TABLE_VERIFY_SUCCESS 1293
/*! thread-state: active filesystem fsync calls */
-#define WT_STAT_CONN_THREAD_FSYNC_ACTIVE 1293
+#define WT_STAT_CONN_THREAD_FSYNC_ACTIVE 1294
/*! thread-state: active filesystem read calls */
-#define WT_STAT_CONN_THREAD_READ_ACTIVE 1294
+#define WT_STAT_CONN_THREAD_READ_ACTIVE 1295
/*! thread-state: active filesystem write calls */
-#define WT_STAT_CONN_THREAD_WRITE_ACTIVE 1295
+#define WT_STAT_CONN_THREAD_WRITE_ACTIVE 1296
/*! thread-yield: application thread time evicting (usecs) */
-#define WT_STAT_CONN_APPLICATION_EVICT_TIME 1296
+#define WT_STAT_CONN_APPLICATION_EVICT_TIME 1297
/*! thread-yield: application thread time waiting for cache (usecs) */
-#define WT_STAT_CONN_APPLICATION_CACHE_TIME 1297
+#define WT_STAT_CONN_APPLICATION_CACHE_TIME 1298
/*!
* thread-yield: connection close blocked waiting for transaction state
* stabilization
*/
-#define WT_STAT_CONN_TXN_RELEASE_BLOCKED 1298
+#define WT_STAT_CONN_TXN_RELEASE_BLOCKED 1299
/*! thread-yield: connection close yielded for lsm manager shutdown */
-#define WT_STAT_CONN_CONN_CLOSE_BLOCKED_LSM 1299
+#define WT_STAT_CONN_CONN_CLOSE_BLOCKED_LSM 1300
/*! thread-yield: data handle lock yielded */
-#define WT_STAT_CONN_DHANDLE_LOCK_BLOCKED 1300
+#define WT_STAT_CONN_DHANDLE_LOCK_BLOCKED 1301
/*!
* thread-yield: get reference for page index and slot time sleeping
* (usecs)
*/
-#define WT_STAT_CONN_PAGE_INDEX_SLOT_REF_BLOCKED 1301
+#define WT_STAT_CONN_PAGE_INDEX_SLOT_REF_BLOCKED 1302
/*! thread-yield: log server sync yielded for log write */
-#define WT_STAT_CONN_LOG_SERVER_SYNC_BLOCKED 1302
+#define WT_STAT_CONN_LOG_SERVER_SYNC_BLOCKED 1303
/*! thread-yield: page access yielded due to prepare state change */
-#define WT_STAT_CONN_PREPARED_TRANSITION_BLOCKED_PAGE 1303
+#define WT_STAT_CONN_PREPARED_TRANSITION_BLOCKED_PAGE 1304
/*! thread-yield: page acquire busy blocked */
-#define WT_STAT_CONN_PAGE_BUSY_BLOCKED 1304
+#define WT_STAT_CONN_PAGE_BUSY_BLOCKED 1305
/*! thread-yield: page acquire eviction blocked */
-#define WT_STAT_CONN_PAGE_FORCIBLE_EVICT_BLOCKED 1305
+#define WT_STAT_CONN_PAGE_FORCIBLE_EVICT_BLOCKED 1306
/*! thread-yield: page acquire locked blocked */
-#define WT_STAT_CONN_PAGE_LOCKED_BLOCKED 1306
+#define WT_STAT_CONN_PAGE_LOCKED_BLOCKED 1307
/*! thread-yield: page acquire read blocked */
-#define WT_STAT_CONN_PAGE_READ_BLOCKED 1307
+#define WT_STAT_CONN_PAGE_READ_BLOCKED 1308
/*! thread-yield: page acquire time sleeping (usecs) */
-#define WT_STAT_CONN_PAGE_SLEEP 1308
+#define WT_STAT_CONN_PAGE_SLEEP 1309
/*!
* thread-yield: page delete rollback time sleeping for state change
* (usecs)
*/
-#define WT_STAT_CONN_PAGE_DEL_ROLLBACK_BLOCKED 1309
+#define WT_STAT_CONN_PAGE_DEL_ROLLBACK_BLOCKED 1310
/*! thread-yield: page reconciliation yielded due to child modification */
-#define WT_STAT_CONN_CHILD_MODIFY_BLOCKED_PAGE 1310
+#define WT_STAT_CONN_CHILD_MODIFY_BLOCKED_PAGE 1311
/*! transaction: Number of prepared updates */
-#define WT_STAT_CONN_TXN_PREPARED_UPDATES_COUNT 1311
+#define WT_STAT_CONN_TXN_PREPARED_UPDATES_COUNT 1312
/*! transaction: Number of prepared updates added to cache overflow */
-#define WT_STAT_CONN_TXN_PREPARED_UPDATES_LOOKASIDE_INSERTS 1312
+#define WT_STAT_CONN_TXN_PREPARED_UPDATES_LOOKASIDE_INSERTS 1313
/*! transaction: Number of prepared updates resolved */
-#define WT_STAT_CONN_TXN_PREPARED_UPDATES_RESOLVED 1313
+#define WT_STAT_CONN_TXN_PREPARED_UPDATES_RESOLVED 1314
/*! transaction: commit timestamp queue entries walked */
-#define WT_STAT_CONN_TXN_COMMIT_QUEUE_WALKED 1314
+#define WT_STAT_CONN_TXN_COMMIT_QUEUE_WALKED 1315
/*! transaction: commit timestamp queue insert to empty */
-#define WT_STAT_CONN_TXN_COMMIT_QUEUE_EMPTY 1315
+#define WT_STAT_CONN_TXN_COMMIT_QUEUE_EMPTY 1316
/*! transaction: commit timestamp queue inserts to head */
-#define WT_STAT_CONN_TXN_COMMIT_QUEUE_HEAD 1316
+#define WT_STAT_CONN_TXN_COMMIT_QUEUE_HEAD 1317
/*! transaction: commit timestamp queue inserts total */
-#define WT_STAT_CONN_TXN_COMMIT_QUEUE_INSERTS 1317
+#define WT_STAT_CONN_TXN_COMMIT_QUEUE_INSERTS 1318
/*! transaction: commit timestamp queue length */
-#define WT_STAT_CONN_TXN_COMMIT_QUEUE_LEN 1318
+#define WT_STAT_CONN_TXN_COMMIT_QUEUE_LEN 1319
/*! transaction: number of named snapshots created */
-#define WT_STAT_CONN_TXN_SNAPSHOTS_CREATED 1319
+#define WT_STAT_CONN_TXN_SNAPSHOTS_CREATED 1320
/*! transaction: number of named snapshots dropped */
-#define WT_STAT_CONN_TXN_SNAPSHOTS_DROPPED 1320
+#define WT_STAT_CONN_TXN_SNAPSHOTS_DROPPED 1321
/*! transaction: prepared transactions */
-#define WT_STAT_CONN_TXN_PREPARE 1321
+#define WT_STAT_CONN_TXN_PREPARE 1322
/*! transaction: prepared transactions committed */
-#define WT_STAT_CONN_TXN_PREPARE_COMMIT 1322
+#define WT_STAT_CONN_TXN_PREPARE_COMMIT 1323
/*! transaction: prepared transactions currently active */
-#define WT_STAT_CONN_TXN_PREPARE_ACTIVE 1323
+#define WT_STAT_CONN_TXN_PREPARE_ACTIVE 1324
/*! transaction: prepared transactions rolled back */
-#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK 1324
+#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK 1325
/*! transaction: query timestamp calls */
-#define WT_STAT_CONN_TXN_QUERY_TS 1325
+#define WT_STAT_CONN_TXN_QUERY_TS 1326
/*! transaction: read timestamp queue entries walked */
-#define WT_STAT_CONN_TXN_READ_QUEUE_WALKED 1326
+#define WT_STAT_CONN_TXN_READ_QUEUE_WALKED 1327
/*! transaction: read timestamp queue insert to empty */
-#define WT_STAT_CONN_TXN_READ_QUEUE_EMPTY 1327
+#define WT_STAT_CONN_TXN_READ_QUEUE_EMPTY 1328
/*! transaction: read timestamp queue inserts to head */
-#define WT_STAT_CONN_TXN_READ_QUEUE_HEAD 1328
+#define WT_STAT_CONN_TXN_READ_QUEUE_HEAD 1329
/*! transaction: read timestamp queue inserts total */
-#define WT_STAT_CONN_TXN_READ_QUEUE_INSERTS 1329
+#define WT_STAT_CONN_TXN_READ_QUEUE_INSERTS 1330
/*! transaction: read timestamp queue length */
-#define WT_STAT_CONN_TXN_READ_QUEUE_LEN 1330
+#define WT_STAT_CONN_TXN_READ_QUEUE_LEN 1331
/*! transaction: rollback to stable calls */
-#define WT_STAT_CONN_TXN_ROLLBACK_TO_STABLE 1331
+#define WT_STAT_CONN_TXN_ROLLBACK_TO_STABLE 1332
/*! transaction: rollback to stable updates aborted */
-#define WT_STAT_CONN_TXN_ROLLBACK_UPD_ABORTED 1332
+#define WT_STAT_CONN_TXN_ROLLBACK_UPD_ABORTED 1333
/*! transaction: rollback to stable updates removed from cache overflow */
-#define WT_STAT_CONN_TXN_ROLLBACK_LAS_REMOVED 1333
+#define WT_STAT_CONN_TXN_ROLLBACK_LAS_REMOVED 1334
/*! transaction: set timestamp calls */
-#define WT_STAT_CONN_TXN_SET_TS 1334
+#define WT_STAT_CONN_TXN_SET_TS 1335
/*! transaction: set timestamp commit calls */
-#define WT_STAT_CONN_TXN_SET_TS_COMMIT 1335
+#define WT_STAT_CONN_TXN_SET_TS_COMMIT 1336
/*! transaction: set timestamp commit updates */
-#define WT_STAT_CONN_TXN_SET_TS_COMMIT_UPD 1336
+#define WT_STAT_CONN_TXN_SET_TS_COMMIT_UPD 1337
/*! transaction: set timestamp oldest calls */
-#define WT_STAT_CONN_TXN_SET_TS_OLDEST 1337
+#define WT_STAT_CONN_TXN_SET_TS_OLDEST 1338
/*! transaction: set timestamp oldest updates */
-#define WT_STAT_CONN_TXN_SET_TS_OLDEST_UPD 1338
+#define WT_STAT_CONN_TXN_SET_TS_OLDEST_UPD 1339
/*! transaction: set timestamp stable calls */
-#define WT_STAT_CONN_TXN_SET_TS_STABLE 1339
+#define WT_STAT_CONN_TXN_SET_TS_STABLE 1340
/*! transaction: set timestamp stable updates */
-#define WT_STAT_CONN_TXN_SET_TS_STABLE_UPD 1340
+#define WT_STAT_CONN_TXN_SET_TS_STABLE_UPD 1341
/*! transaction: transaction begins */
-#define WT_STAT_CONN_TXN_BEGIN 1341
+#define WT_STAT_CONN_TXN_BEGIN 1342
/*! transaction: transaction checkpoint currently running */
-#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1342
+#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1343
/*! transaction: transaction checkpoint generation */
-#define WT_STAT_CONN_TXN_CHECKPOINT_GENERATION 1343
+#define WT_STAT_CONN_TXN_CHECKPOINT_GENERATION 1344
/*! transaction: transaction checkpoint max time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MAX 1344
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MAX 1345
/*! transaction: transaction checkpoint min time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MIN 1345
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MIN 1346
/*! transaction: transaction checkpoint most recent time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_RECENT 1346
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_RECENT 1347
/*! transaction: transaction checkpoint scrub dirty target */
-#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TARGET 1347
+#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TARGET 1348
/*! transaction: transaction checkpoint scrub time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TIME 1348
+#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TIME 1349
/*! transaction: transaction checkpoint total time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_TOTAL 1349
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_TOTAL 1350
/*! transaction: transaction checkpoints */
-#define WT_STAT_CONN_TXN_CHECKPOINT 1350
+#define WT_STAT_CONN_TXN_CHECKPOINT 1351
/*!
* transaction: transaction checkpoints skipped because database was
* clean
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_SKIPPED 1351
+#define WT_STAT_CONN_TXN_CHECKPOINT_SKIPPED 1352
/*! transaction: transaction failures due to cache overflow */
-#define WT_STAT_CONN_TXN_FAIL_CACHE 1352
+#define WT_STAT_CONN_TXN_FAIL_CACHE 1353
/*!
* transaction: transaction fsync calls for checkpoint after allocating
* the transaction ID
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST 1353
+#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST 1354
/*!
* transaction: transaction fsync duration for checkpoint after
* allocating the transaction ID (usecs)
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST_DURATION 1354
+#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST_DURATION 1355
/*! transaction: transaction range of IDs currently pinned */
-#define WT_STAT_CONN_TXN_PINNED_RANGE 1355
+#define WT_STAT_CONN_TXN_PINNED_RANGE 1356
/*! transaction: transaction range of IDs currently pinned by a checkpoint */
-#define WT_STAT_CONN_TXN_PINNED_CHECKPOINT_RANGE 1356
+#define WT_STAT_CONN_TXN_PINNED_CHECKPOINT_RANGE 1357
/*!
* transaction: transaction range of IDs currently pinned by named
* snapshots
*/
-#define WT_STAT_CONN_TXN_PINNED_SNAPSHOT_RANGE 1357
+#define WT_STAT_CONN_TXN_PINNED_SNAPSHOT_RANGE 1358
/*! transaction: transaction range of timestamps currently pinned */
-#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP 1358
+#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP 1359
/*! transaction: transaction range of timestamps pinned by a checkpoint */
-#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_CHECKPOINT 1359
+#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_CHECKPOINT 1360
/*!
* transaction: transaction range of timestamps pinned by the oldest
* timestamp
*/
-#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_OLDEST 1360
+#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_OLDEST 1361
/*! transaction: transaction sync calls */
-#define WT_STAT_CONN_TXN_SYNC 1361
+#define WT_STAT_CONN_TXN_SYNC 1362
/*! transaction: transactions committed */
-#define WT_STAT_CONN_TXN_COMMIT 1362
+#define WT_STAT_CONN_TXN_COMMIT 1363
/*! transaction: transactions rolled back */
-#define WT_STAT_CONN_TXN_ROLLBACK 1363
+#define WT_STAT_CONN_TXN_ROLLBACK 1364
/*! transaction: update conflicts */
-#define WT_STAT_CONN_TXN_UPDATE_CONFLICT 1364
+#define WT_STAT_CONN_TXN_UPDATE_CONFLICT 1365
/*!
* @}
@@ -6099,18 +6101,18 @@ extern int wiredtiger_extension_terminate(WT_CONNECTION *connection);
#define WT_STAT_DSRC_COMPRESS_RAW_OK 2105
/*! cursor: bulk-loaded cursor-insert calls */
#define WT_STAT_DSRC_CURSOR_INSERT_BULK 2106
+/*! cursor: close calls that result in cache */
+#define WT_STAT_DSRC_CURSOR_CACHE 2107
/*! cursor: create calls */
-#define WT_STAT_DSRC_CURSOR_CREATE 2107
+#define WT_STAT_DSRC_CURSOR_CREATE 2108
/*! cursor: cursor operation restarted */
-#define WT_STAT_DSRC_CURSOR_RESTART 2108
+#define WT_STAT_DSRC_CURSOR_RESTART 2109
/*! cursor: cursor-insert key and value bytes inserted */
-#define WT_STAT_DSRC_CURSOR_INSERT_BYTES 2109
+#define WT_STAT_DSRC_CURSOR_INSERT_BYTES 2110
/*! cursor: cursor-remove key bytes removed */
-#define WT_STAT_DSRC_CURSOR_REMOVE_BYTES 2110
+#define WT_STAT_DSRC_CURSOR_REMOVE_BYTES 2111
/*! cursor: cursor-update value bytes updated */
-#define WT_STAT_DSRC_CURSOR_UPDATE_BYTES 2111
-/*! cursor: cursors cached on close */
-#define WT_STAT_DSRC_CURSOR_CACHE 2112
+#define WT_STAT_DSRC_CURSOR_UPDATE_BYTES 2112
/*! cursor: cursors reused from cache */
#define WT_STAT_DSRC_CURSOR_REOPEN 2113
/*! cursor: insert calls */
@@ -6167,7 +6169,7 @@ extern int wiredtiger_extension_terminate(WT_CONNECTION *connection);
/*! reconciliation: pages deleted */
#define WT_STAT_DSRC_REC_PAGE_DELETE 2138
/*! session: cached cursor count */
-#define WT_STAT_DSRC_SESSION_CURSOR_CACHED 2139
+#define WT_STAT_DSRC_SESSION_CURSORS_CACHED 2139
/*! session: object compaction */
#define WT_STAT_DSRC_SESSION_COMPACT 2140
/*! session: open cursor count */
diff --git a/src/third_party/wiredtiger/src/support/stat.c b/src/third_party/wiredtiger/src/support/stat.c
index a0417b3952c..90891c2b28f 100644
--- a/src/third_party/wiredtiger/src/support/stat.c
+++ b/src/third_party/wiredtiger/src/support/stat.c
@@ -110,12 +110,12 @@ static const char * const __stats_dsrc_desc[] = {
"compression: raw compression call failed, no additional data available",
"compression: raw compression call succeeded",
"cursor: bulk-loaded cursor-insert calls",
+ "cursor: close calls that result in cache",
"cursor: create calls",
"cursor: cursor operation restarted",
"cursor: cursor-insert key and value bytes inserted",
"cursor: cursor-remove key bytes removed",
"cursor: cursor-update value bytes updated",
- "cursor: cursors cached on close",
"cursor: cursors reused from cache",
"cursor: insert calls",
"cursor: modify calls",
@@ -295,12 +295,12 @@ __wt_stat_dsrc_clear_single(WT_DSRC_STATS *stats)
stats->compress_raw_fail = 0;
stats->compress_raw_ok = 0;
stats->cursor_insert_bulk = 0;
+ stats->cursor_cache = 0;
stats->cursor_create = 0;
stats->cursor_restart = 0;
stats->cursor_insert_bytes = 0;
stats->cursor_remove_bytes = 0;
stats->cursor_update_bytes = 0;
- stats->cursor_cache = 0;
stats->cursor_reopen = 0;
stats->cursor_insert = 0;
stats->cursor_modify = 0;
@@ -327,7 +327,7 @@ __wt_stat_dsrc_clear_single(WT_DSRC_STATS *stats)
stats->rec_pages = 0;
stats->rec_pages_eviction = 0;
stats->rec_page_delete = 0;
- /* not clearing session_cursor_cached */
+ /* not clearing session_cursors_cached */
stats->session_compact = 0;
/* not clearing session_cursor_open */
stats->txn_update_conflict = 0;
@@ -481,12 +481,12 @@ __wt_stat_dsrc_aggregate_single(
to->compress_raw_fail += from->compress_raw_fail;
to->compress_raw_ok += from->compress_raw_ok;
to->cursor_insert_bulk += from->cursor_insert_bulk;
+ to->cursor_cache += from->cursor_cache;
to->cursor_create += from->cursor_create;
to->cursor_restart += from->cursor_restart;
to->cursor_insert_bytes += from->cursor_insert_bytes;
to->cursor_remove_bytes += from->cursor_remove_bytes;
to->cursor_update_bytes += from->cursor_update_bytes;
- to->cursor_cache += from->cursor_cache;
to->cursor_reopen += from->cursor_reopen;
to->cursor_insert += from->cursor_insert;
to->cursor_modify += from->cursor_modify;
@@ -514,7 +514,7 @@ __wt_stat_dsrc_aggregate_single(
to->rec_pages += from->rec_pages;
to->rec_pages_eviction += from->rec_pages_eviction;
to->rec_page_delete += from->rec_page_delete;
- to->session_cursor_cached += from->session_cursor_cached;
+ to->session_cursors_cached += from->session_cursors_cached;
to->session_compact += from->session_compact;
to->session_cursor_open += from->session_cursor_open;
to->txn_update_conflict += from->txn_update_conflict;
@@ -700,12 +700,12 @@ __wt_stat_dsrc_aggregate(
to->compress_raw_fail += WT_STAT_READ(from, compress_raw_fail);
to->compress_raw_ok += WT_STAT_READ(from, compress_raw_ok);
to->cursor_insert_bulk += WT_STAT_READ(from, cursor_insert_bulk);
+ to->cursor_cache += WT_STAT_READ(from, cursor_cache);
to->cursor_create += WT_STAT_READ(from, cursor_create);
to->cursor_restart += WT_STAT_READ(from, cursor_restart);
to->cursor_insert_bytes += WT_STAT_READ(from, cursor_insert_bytes);
to->cursor_remove_bytes += WT_STAT_READ(from, cursor_remove_bytes);
to->cursor_update_bytes += WT_STAT_READ(from, cursor_update_bytes);
- to->cursor_cache += WT_STAT_READ(from, cursor_cache);
to->cursor_reopen += WT_STAT_READ(from, cursor_reopen);
to->cursor_insert += WT_STAT_READ(from, cursor_insert);
to->cursor_modify += WT_STAT_READ(from, cursor_modify);
@@ -739,8 +739,8 @@ __wt_stat_dsrc_aggregate(
to->rec_pages += WT_STAT_READ(from, rec_pages);
to->rec_pages_eviction += WT_STAT_READ(from, rec_pages_eviction);
to->rec_page_delete += WT_STAT_READ(from, rec_page_delete);
- to->session_cursor_cached +=
- WT_STAT_READ(from, session_cursor_cached);
+ to->session_cursors_cached +=
+ WT_STAT_READ(from, session_cursors_cached);
to->session_compact += WT_STAT_READ(from, session_compact);
to->session_cursor_open += WT_STAT_READ(from, session_cursor_open);
to->txn_update_conflict += WT_STAT_READ(from, txn_update_conflict);
@@ -888,6 +888,7 @@ static const char * const __stats_connection_desc[] = {
"connection: total fsync I/Os",
"connection: total read I/Os",
"connection: total write I/Os",
+ "cursor: cursor close calls that result in cache",
"cursor: cursor create calls",
"cursor: cursor insert calls",
"cursor: cursor modify calls",
@@ -904,7 +905,7 @@ static const char * const __stats_connection_desc[] = {
"cursor: cursor sweep cursors examined",
"cursor: cursor sweeps",
"cursor: cursor update calls",
- "cursor: cursors cached on close",
+ "cursor: cursors currently cached",
"cursor: cursors reused from cache",
"cursor: truncate calls",
"data-handle: connection data handles currently active",
@@ -1295,6 +1296,7 @@ __wt_stat_connection_clear_single(WT_CONNECTION_STATS *stats)
stats->fsync_io = 0;
stats->read_io = 0;
stats->write_io = 0;
+ stats->cursor_cache = 0;
stats->cursor_create = 0;
stats->cursor_insert = 0;
stats->cursor_modify = 0;
@@ -1311,7 +1313,7 @@ __wt_stat_connection_clear_single(WT_CONNECTION_STATS *stats)
stats->cursor_sweep_examined = 0;
stats->cursor_sweep = 0;
stats->cursor_update = 0;
- stats->cursor_cache = 0;
+ /* not clearing cursors_cached */
stats->cursor_reopen = 0;
stats->cursor_truncate = 0;
/* not clearing dh_conn_handle_count */
@@ -1747,6 +1749,7 @@ __wt_stat_connection_aggregate(
to->fsync_io += WT_STAT_READ(from, fsync_io);
to->read_io += WT_STAT_READ(from, read_io);
to->write_io += WT_STAT_READ(from, write_io);
+ to->cursor_cache += WT_STAT_READ(from, cursor_cache);
to->cursor_create += WT_STAT_READ(from, cursor_create);
to->cursor_insert += WT_STAT_READ(from, cursor_insert);
to->cursor_modify += WT_STAT_READ(from, cursor_modify);
@@ -1764,7 +1767,7 @@ __wt_stat_connection_aggregate(
WT_STAT_READ(from, cursor_sweep_examined);
to->cursor_sweep += WT_STAT_READ(from, cursor_sweep);
to->cursor_update += WT_STAT_READ(from, cursor_update);
- to->cursor_cache += WT_STAT_READ(from, cursor_cache);
+ to->cursors_cached += WT_STAT_READ(from, cursors_cached);
to->cursor_reopen += WT_STAT_READ(from, cursor_reopen);
to->cursor_truncate += WT_STAT_READ(from, cursor_truncate);
to->dh_conn_handle_count += WT_STAT_READ(from, dh_conn_handle_count);
diff --git a/src/third_party/wiredtiger/test/suite/test_cursor16.py b/src/third_party/wiredtiger/test/suite/test_cursor16.py
new file mode 100755
index 00000000000..8eeb46b8de1
--- /dev/null
+++ b/src/third_party/wiredtiger/test/suite/test_cursor16.py
@@ -0,0 +1,95 @@
+#!/usr/bin/env python
+#
+# Public Domain 2014-2018 MongoDB, Inc.
+# Public Domain 2008-2014 WiredTiger, Inc.
+#
+# This is free and unencumbered software released into the public domain.
+#
+# Anyone is free to copy, modify, publish, use, compile, sell, or
+# distribute this software, either in source code form or as a compiled
+# binary, for any purpose, commercial or non-commercial, and by any
+# means.
+#
+# In jurisdictions that recognize copyright laws, the author or authors
+# of this software dedicate any and all copyright interest in the
+# software to the public domain. We make this dedication for the benefit
+# of the public at large and to the detriment of our heirs and
+# successors. We intend this dedication to be an overt act of
+# relinquishment in perpetuity of all present and future rights to this
+# software under copyright law.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+# OTHER DEALINGS IN THE SOFTWARE.
+#
+# test_cursor16.py
+# Cursors: final close of cached cursors
+#
+
+import wttest
+from wiredtiger import stat
+
+class test_cursor16(wttest.WiredTigerTestCase):
+ tablename = 'test_cursor16'
+ uri_prefix = 'table:' + tablename
+ uri_count = 100
+ session_count = 100
+
+ conn_config = 'cache_cursors=true,statistics=(fast)'
+
+ # Returns the number of cursors cached
+ def cached_stats(self):
+ stat_cursor = self.session.open_cursor('statistics:', None, None)
+ cache = stat_cursor[stat.conn.cursors_cached][2]
+ stat_cursor.close()
+ return cache
+
+ def test_cursor16(self):
+ uris = []
+ cursors = []
+ #self.tty('begin cursors cached=' + str(self.cached_stats()))
+ for i in range(0, self.uri_count):
+ uri = self.uri_prefix + '-' + str(i)
+ uris.append(uri)
+ self.session.create(uri, 'key_format=S,value_format=S')
+ cursor = self.session.open_cursor(uri)
+ # We keep the cursors open in the main session, so there
+ # will always be a reference to their dhandle, and cached
+ # cursors won't get swept.
+ cursors.append(cursor)
+ for j in range(0, 10):
+ cursor[str(j)] = str(j)
+
+ self.assertEqual(0, self.cached_stats())
+
+ sessions = []
+ for i in range(0, self.session_count):
+ #if i % 10 == 0:
+ # self.tty('session count=%d cursors cached=%d' %
+ # (i, self.cached_stats()))
+ session = self.conn.open_session(self.session_config)
+ sessions.append(session)
+ for uri in uris:
+ cursor = session.open_cursor(uri)
+ # spot check, and leaves the cursor positioned
+ self.assertEqual(cursor['3'],'3')
+ cursor.close()
+
+ #self.tty('max cursors cached=' + str(self.cached_stats()))
+ i = 0
+ for session in sessions:
+ #if i % 10 == 0:
+ # self.tty('session count=%d cursors cached=%d' %
+ # (self.session_count - i, self.cached_stats()))
+ i += 1
+ session.close()
+
+ #self.tty('end cursors cached=' + str(self.cached_stats()))
+ self.assertEqual(0, self.cached_stats())
+
+if __name__ == '__main__':
+ wttest.run()