summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Chen <luke.chen@mongodb.com>2020-06-30 18:35:57 +1000
committerLuke Chen <luke.chen@mongodb.com>2020-06-30 18:35:57 +1000
commitee10647df9a99f3965350de6a0c0a6959b6d838f (patch)
tree1b27214736eb382e81fffd02e575534b6c580f5e
parentda34c52b41b69ce9c0a92531c51e66c4f847aab8 (diff)
downloadmongo-ee10647df9a99f3965350de6a0c0a6959b6d838f.tar.gz
Import wiredtiger: 46eb0217d46b98e7631fc463791f9e16c08ae198 from branch mongodb-4.4
ref: 48cbc0a231..46eb0217d4 for: 4.4.0-rc12 WT-6475 Create statistic to track number of cursor prev calls as a result of globally visible tombstones WT-6477 Fix silent failures about run directory never created in format.sh
-rw-r--r--src/third_party/wiredtiger/dist/stat_data.py2
-rw-r--r--src/third_party/wiredtiger/import.data2
-rw-r--r--src/third_party/wiredtiger/src/history/hs.c12
-rw-r--r--src/third_party/wiredtiger/src/include/stat.h2
-rw-r--r--src/third_party/wiredtiger/src/include/wiredtiger.in542
-rw-r--r--src/third_party/wiredtiger/src/support/stat.c7
-rw-r--r--src/third_party/wiredtiger/src/txn/txn.c2
-rw-r--r--src/third_party/wiredtiger/src/txn/txn_rollback_to_stable.c8
-rwxr-xr-xsrc/third_party/wiredtiger/test/format/format.sh82
-rw-r--r--src/third_party/wiredtiger/test/format/t.c6
-rw-r--r--src/third_party/wiredtiger/test/utility/misc.c2
11 files changed, 352 insertions, 315 deletions
diff --git a/src/third_party/wiredtiger/dist/stat_data.py b/src/third_party/wiredtiger/dist/stat_data.py
index 494e862c987..0a00d74797d 100644
--- a/src/third_party/wiredtiger/dist/stat_data.py
+++ b/src/third_party/wiredtiger/dist/stat_data.py
@@ -369,6 +369,8 @@ connection_stats = [
CursorStat('cursor_next_skip_lt_100', 'cursor next calls that skip less than 100 entries'),
CursorStat('cursor_next_skip_total', 'Total number of entries skipped by cursor next calls'),
CursorStat('cursor_prev', 'cursor prev calls'),
+ CursorStat('cursor_prev_hs_tombstone', 'cursor prev calls that skip due to a globally visible history store tombstone'),
+ CursorStat('cursor_prev_hs_tombstone_rts', 'cursor prev calls that skip due to a globally visible history store tombstone in rollback to stable'),
CursorStat('cursor_prev_skip_ge_100', 'cursor prev calls that skip greater than or equal to 100 entries'),
CursorStat('cursor_prev_skip_lt_100', 'cursor prev calls that skip less than 100 entries'),
CursorStat('cursor_prev_skip_total', 'Total number of entries skipped by cursor prev calls'),
diff --git a/src/third_party/wiredtiger/import.data b/src/third_party/wiredtiger/import.data
index 67ebc04ac39..3c6640654e9 100644
--- a/src/third_party/wiredtiger/import.data
+++ b/src/third_party/wiredtiger/import.data
@@ -2,5 +2,5 @@
"vendor": "wiredtiger",
"github": "wiredtiger/wiredtiger.git",
"branch": "mongodb-4.4",
- "commit": "48cbc0a231da8005719ff1a1628aa14372e6f327"
+ "commit": "46eb0217d46b98e7631fc463791f9e16c08ae198"
}
diff --git a/src/third_party/wiredtiger/src/history/hs.c b/src/third_party/wiredtiger/src/history/hs.c
index f133eacbeec..8c9c39e7f12 100644
--- a/src/third_party/wiredtiger/src/history/hs.c
+++ b/src/third_party/wiredtiger/src/history/hs.c
@@ -1216,8 +1216,10 @@ __wt_hs_find_upd(WT_SESSION_IMPL *session, WT_ITEM *key, const char *value_forma
* we can skip it.
*/
if (__wt_txn_visible_all(
- session, hs_cbt->upd_value->tw.stop_txn, hs_cbt->upd_value->tw.durable_stop_ts))
+ session, hs_cbt->upd_value->tw.stop_txn, hs_cbt->upd_value->tw.durable_stop_ts)) {
+ WT_STAT_CONN_INCR(session, cursor_prev_hs_tombstone);
continue;
+ }
/*
* If the stop time point of a record is visible to us, we won't be able to see anything for
* this entire key. Just jump straight to the end.
@@ -1548,8 +1550,10 @@ __hs_fixup_out_of_order_from_pos(WT_SESSION_IMPL *session, WT_CURSOR *hs_cursor,
* we can skip it.
*/
if (__wt_txn_visible_all(
- session, hs_cbt->upd_value->tw.stop_txn, hs_cbt->upd_value->tw.durable_stop_ts))
+ session, hs_cbt->upd_value->tw.stop_txn, hs_cbt->upd_value->tw.durable_stop_ts)) {
+ WT_STAT_CONN_INCR(session, cursor_prev_hs_tombstone);
continue;
+ }
/*
* If we got here, we've got out-of-order updates in the history store.
*
@@ -1666,8 +1670,10 @@ __hs_delete_key_from_pos(
* we can skip it.
*/
if (__wt_txn_visible_all(
- session, hs_cbt->upd_value->tw.stop_txn, hs_cbt->upd_value->tw.durable_stop_ts))
+ session, hs_cbt->upd_value->tw.stop_txn, hs_cbt->upd_value->tw.durable_stop_ts)) {
+ WT_STAT_CONN_INCR(session, cursor_prev_hs_tombstone);
continue;
+ }
/*
* Since we're using internal functions to modify the row structure, we need to manually set
* the comparison to an exact match.
diff --git a/src/third_party/wiredtiger/src/include/stat.h b/src/third_party/wiredtiger/src/include/stat.h
index ca249170b10..ee0e4778457 100644
--- a/src/third_party/wiredtiger/src/include/stat.h
+++ b/src/third_party/wiredtiger/src/include/stat.h
@@ -499,6 +499,8 @@ struct __wt_connection_stats {
int64_t cursor_next_skip_lt_100;
int64_t cursor_restart;
int64_t cursor_prev;
+ int64_t cursor_prev_hs_tombstone;
+ int64_t cursor_prev_hs_tombstone_rts;
int64_t cursor_prev_skip_ge_100;
int64_t cursor_prev_skip_lt_100;
int64_t cursor_remove;
diff --git a/src/third_party/wiredtiger/src/include/wiredtiger.in b/src/third_party/wiredtiger/src/include/wiredtiger.in
index 72d223e66b5..b740d1966be 100644
--- a/src/third_party/wiredtiger/src/include/wiredtiger.in
+++ b/src/third_party/wiredtiger/src/include/wiredtiger.in
@@ -5425,627 +5425,637 @@ extern int wiredtiger_extension_terminate(WT_CONNECTION *connection);
/*! cursor: cursor prev calls */
#define WT_STAT_CONN_CURSOR_PREV 1203
/*!
+ * cursor: cursor prev calls that skip due to a globally visible history
+ * store tombstone
+ */
+#define WT_STAT_CONN_CURSOR_PREV_HS_TOMBSTONE 1204
+/*!
+ * cursor: cursor prev calls that skip due to a globally visible history
+ * store tombstone in rollback to stable
+ */
+#define WT_STAT_CONN_CURSOR_PREV_HS_TOMBSTONE_RTS 1205
+/*!
* cursor: cursor prev calls that skip greater than or equal to 100
* entries
*/
-#define WT_STAT_CONN_CURSOR_PREV_SKIP_GE_100 1204
+#define WT_STAT_CONN_CURSOR_PREV_SKIP_GE_100 1206
/*! cursor: cursor prev calls that skip less than 100 entries */
-#define WT_STAT_CONN_CURSOR_PREV_SKIP_LT_100 1205
+#define WT_STAT_CONN_CURSOR_PREV_SKIP_LT_100 1207
/*! cursor: cursor remove calls */
-#define WT_STAT_CONN_CURSOR_REMOVE 1206
+#define WT_STAT_CONN_CURSOR_REMOVE 1208
/*! cursor: cursor remove key bytes removed */
-#define WT_STAT_CONN_CURSOR_REMOVE_BYTES 1207
+#define WT_STAT_CONN_CURSOR_REMOVE_BYTES 1209
/*! cursor: cursor reserve calls */
-#define WT_STAT_CONN_CURSOR_RESERVE 1208
+#define WT_STAT_CONN_CURSOR_RESERVE 1210
/*! cursor: cursor reset calls */
-#define WT_STAT_CONN_CURSOR_RESET 1209
+#define WT_STAT_CONN_CURSOR_RESET 1211
/*! cursor: cursor search calls */
-#define WT_STAT_CONN_CURSOR_SEARCH 1210
+#define WT_STAT_CONN_CURSOR_SEARCH 1212
/*! cursor: cursor search history store calls */
-#define WT_STAT_CONN_CURSOR_SEARCH_HS 1211
+#define WT_STAT_CONN_CURSOR_SEARCH_HS 1213
/*! cursor: cursor search near calls */
-#define WT_STAT_CONN_CURSOR_SEARCH_NEAR 1212
+#define WT_STAT_CONN_CURSOR_SEARCH_NEAR 1214
/*! cursor: cursor sweep buckets */
-#define WT_STAT_CONN_CURSOR_SWEEP_BUCKETS 1213
+#define WT_STAT_CONN_CURSOR_SWEEP_BUCKETS 1215
/*! cursor: cursor sweep cursors closed */
-#define WT_STAT_CONN_CURSOR_SWEEP_CLOSED 1214
+#define WT_STAT_CONN_CURSOR_SWEEP_CLOSED 1216
/*! cursor: cursor sweep cursors examined */
-#define WT_STAT_CONN_CURSOR_SWEEP_EXAMINED 1215
+#define WT_STAT_CONN_CURSOR_SWEEP_EXAMINED 1217
/*! cursor: cursor sweeps */
-#define WT_STAT_CONN_CURSOR_SWEEP 1216
+#define WT_STAT_CONN_CURSOR_SWEEP 1218
/*! cursor: cursor truncate calls */
-#define WT_STAT_CONN_CURSOR_TRUNCATE 1217
+#define WT_STAT_CONN_CURSOR_TRUNCATE 1219
/*! cursor: cursor update calls */
-#define WT_STAT_CONN_CURSOR_UPDATE 1218
+#define WT_STAT_CONN_CURSOR_UPDATE 1220
/*! cursor: cursor update key and value bytes */
-#define WT_STAT_CONN_CURSOR_UPDATE_BYTES 1219
+#define WT_STAT_CONN_CURSOR_UPDATE_BYTES 1221
/*! cursor: cursor update value size change */
-#define WT_STAT_CONN_CURSOR_UPDATE_BYTES_CHANGED 1220
+#define WT_STAT_CONN_CURSOR_UPDATE_BYTES_CHANGED 1222
/*! cursor: cursors reused from cache */
-#define WT_STAT_CONN_CURSOR_REOPEN 1221
+#define WT_STAT_CONN_CURSOR_REOPEN 1223
/*! cursor: open cursor count */
-#define WT_STAT_CONN_CURSOR_OPEN_COUNT 1222
+#define WT_STAT_CONN_CURSOR_OPEN_COUNT 1224
/*! data-handle: connection data handle size */
-#define WT_STAT_CONN_DH_CONN_HANDLE_SIZE 1223
+#define WT_STAT_CONN_DH_CONN_HANDLE_SIZE 1225
/*! data-handle: connection data handles currently active */
-#define WT_STAT_CONN_DH_CONN_HANDLE_COUNT 1224
+#define WT_STAT_CONN_DH_CONN_HANDLE_COUNT 1226
/*! data-handle: connection sweep candidate became referenced */
-#define WT_STAT_CONN_DH_SWEEP_REF 1225
+#define WT_STAT_CONN_DH_SWEEP_REF 1227
/*! data-handle: connection sweep dhandles closed */
-#define WT_STAT_CONN_DH_SWEEP_CLOSE 1226
+#define WT_STAT_CONN_DH_SWEEP_CLOSE 1228
/*! data-handle: connection sweep dhandles removed from hash list */
-#define WT_STAT_CONN_DH_SWEEP_REMOVE 1227
+#define WT_STAT_CONN_DH_SWEEP_REMOVE 1229
/*! data-handle: connection sweep time-of-death sets */
-#define WT_STAT_CONN_DH_SWEEP_TOD 1228
+#define WT_STAT_CONN_DH_SWEEP_TOD 1230
/*! data-handle: connection sweeps */
-#define WT_STAT_CONN_DH_SWEEPS 1229
+#define WT_STAT_CONN_DH_SWEEPS 1231
/*! data-handle: session dhandles swept */
-#define WT_STAT_CONN_DH_SESSION_HANDLES 1230
+#define WT_STAT_CONN_DH_SESSION_HANDLES 1232
/*! data-handle: session sweep attempts */
-#define WT_STAT_CONN_DH_SESSION_SWEEPS 1231
+#define WT_STAT_CONN_DH_SESSION_SWEEPS 1233
/*! history: history pages added for eviction during garbage collection */
-#define WT_STAT_CONN_HS_GC_PAGES_EVICT 1232
+#define WT_STAT_CONN_HS_GC_PAGES_EVICT 1234
/*! history: history pages removed for garbage collection */
-#define WT_STAT_CONN_HS_GC_PAGES_REMOVED 1233
+#define WT_STAT_CONN_HS_GC_PAGES_REMOVED 1235
/*! history: history pages visited for garbage collection */
-#define WT_STAT_CONN_HS_GC_PAGES_VISITED 1234
+#define WT_STAT_CONN_HS_GC_PAGES_VISITED 1236
/*! lock: checkpoint lock acquisitions */
-#define WT_STAT_CONN_LOCK_CHECKPOINT_COUNT 1235
+#define WT_STAT_CONN_LOCK_CHECKPOINT_COUNT 1237
/*! lock: checkpoint lock application thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_APPLICATION 1236
+#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_APPLICATION 1238
/*! lock: checkpoint lock internal thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_INTERNAL 1237
+#define WT_STAT_CONN_LOCK_CHECKPOINT_WAIT_INTERNAL 1239
/*! lock: dhandle lock application thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_APPLICATION 1238
+#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_APPLICATION 1240
/*! lock: dhandle lock internal thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_INTERNAL 1239
+#define WT_STAT_CONN_LOCK_DHANDLE_WAIT_INTERNAL 1241
/*! lock: dhandle read lock acquisitions */
-#define WT_STAT_CONN_LOCK_DHANDLE_READ_COUNT 1240
+#define WT_STAT_CONN_LOCK_DHANDLE_READ_COUNT 1242
/*! lock: dhandle write lock acquisitions */
-#define WT_STAT_CONN_LOCK_DHANDLE_WRITE_COUNT 1241
+#define WT_STAT_CONN_LOCK_DHANDLE_WRITE_COUNT 1243
/*!
* lock: durable timestamp queue lock application thread time waiting
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WAIT_APPLICATION 1242
+#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WAIT_APPLICATION 1244
/*!
* lock: durable timestamp queue lock internal thread time waiting
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WAIT_INTERNAL 1243
+#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WAIT_INTERNAL 1245
/*! lock: durable timestamp queue read lock acquisitions */
-#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_READ_COUNT 1244
+#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_READ_COUNT 1246
/*! lock: durable timestamp queue write lock acquisitions */
-#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WRITE_COUNT 1245
+#define WT_STAT_CONN_LOCK_DURABLE_TIMESTAMP_WRITE_COUNT 1247
/*! lock: metadata lock acquisitions */
-#define WT_STAT_CONN_LOCK_METADATA_COUNT 1246
+#define WT_STAT_CONN_LOCK_METADATA_COUNT 1248
/*! lock: metadata lock application thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_METADATA_WAIT_APPLICATION 1247
+#define WT_STAT_CONN_LOCK_METADATA_WAIT_APPLICATION 1249
/*! lock: metadata lock internal thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_METADATA_WAIT_INTERNAL 1248
+#define WT_STAT_CONN_LOCK_METADATA_WAIT_INTERNAL 1250
/*!
* lock: read timestamp queue lock application thread time waiting
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_APPLICATION 1249
+#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_APPLICATION 1251
/*! lock: read timestamp queue lock internal thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_INTERNAL 1250
+#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WAIT_INTERNAL 1252
/*! lock: read timestamp queue read lock acquisitions */
-#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_READ_COUNT 1251
+#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_READ_COUNT 1253
/*! lock: read timestamp queue write lock acquisitions */
-#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WRITE_COUNT 1252
+#define WT_STAT_CONN_LOCK_READ_TIMESTAMP_WRITE_COUNT 1254
/*! lock: schema lock acquisitions */
-#define WT_STAT_CONN_LOCK_SCHEMA_COUNT 1253
+#define WT_STAT_CONN_LOCK_SCHEMA_COUNT 1255
/*! lock: schema lock application thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_APPLICATION 1254
+#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_APPLICATION 1256
/*! lock: schema lock internal thread wait time (usecs) */
-#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_INTERNAL 1255
+#define WT_STAT_CONN_LOCK_SCHEMA_WAIT_INTERNAL 1257
/*!
* lock: table lock application thread time waiting for the table lock
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_TABLE_WAIT_APPLICATION 1256
+#define WT_STAT_CONN_LOCK_TABLE_WAIT_APPLICATION 1258
/*!
* lock: table lock internal thread time waiting for the table lock
* (usecs)
*/
-#define WT_STAT_CONN_LOCK_TABLE_WAIT_INTERNAL 1257
+#define WT_STAT_CONN_LOCK_TABLE_WAIT_INTERNAL 1259
/*! lock: table read lock acquisitions */
-#define WT_STAT_CONN_LOCK_TABLE_READ_COUNT 1258
+#define WT_STAT_CONN_LOCK_TABLE_READ_COUNT 1260
/*! lock: table write lock acquisitions */
-#define WT_STAT_CONN_LOCK_TABLE_WRITE_COUNT 1259
+#define WT_STAT_CONN_LOCK_TABLE_WRITE_COUNT 1261
/*! lock: txn global lock application thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_APPLICATION 1260
+#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_APPLICATION 1262
/*! lock: txn global lock internal thread time waiting (usecs) */
-#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_INTERNAL 1261
+#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WAIT_INTERNAL 1263
/*! lock: txn global read lock acquisitions */
-#define WT_STAT_CONN_LOCK_TXN_GLOBAL_READ_COUNT 1262
+#define WT_STAT_CONN_LOCK_TXN_GLOBAL_READ_COUNT 1264
/*! lock: txn global write lock acquisitions */
-#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WRITE_COUNT 1263
+#define WT_STAT_CONN_LOCK_TXN_GLOBAL_WRITE_COUNT 1265
/*! log: busy returns attempting to switch slots */
-#define WT_STAT_CONN_LOG_SLOT_SWITCH_BUSY 1264
+#define WT_STAT_CONN_LOG_SLOT_SWITCH_BUSY 1266
/*! log: force archive time sleeping (usecs) */
-#define WT_STAT_CONN_LOG_FORCE_ARCHIVE_SLEEP 1265
+#define WT_STAT_CONN_LOG_FORCE_ARCHIVE_SLEEP 1267
/*! log: log bytes of payload data */
-#define WT_STAT_CONN_LOG_BYTES_PAYLOAD 1266
+#define WT_STAT_CONN_LOG_BYTES_PAYLOAD 1268
/*! log: log bytes written */
-#define WT_STAT_CONN_LOG_BYTES_WRITTEN 1267
+#define WT_STAT_CONN_LOG_BYTES_WRITTEN 1269
/*! log: log files manually zero-filled */
-#define WT_STAT_CONN_LOG_ZERO_FILLS 1268
+#define WT_STAT_CONN_LOG_ZERO_FILLS 1270
/*! log: log flush operations */
-#define WT_STAT_CONN_LOG_FLUSH 1269
+#define WT_STAT_CONN_LOG_FLUSH 1271
/*! log: log force write operations */
-#define WT_STAT_CONN_LOG_FORCE_WRITE 1270
+#define WT_STAT_CONN_LOG_FORCE_WRITE 1272
/*! log: log force write operations skipped */
-#define WT_STAT_CONN_LOG_FORCE_WRITE_SKIP 1271
+#define WT_STAT_CONN_LOG_FORCE_WRITE_SKIP 1273
/*! log: log records compressed */
-#define WT_STAT_CONN_LOG_COMPRESS_WRITES 1272
+#define WT_STAT_CONN_LOG_COMPRESS_WRITES 1274
/*! log: log records not compressed */
-#define WT_STAT_CONN_LOG_COMPRESS_WRITE_FAILS 1273
+#define WT_STAT_CONN_LOG_COMPRESS_WRITE_FAILS 1275
/*! log: log records too small to compress */
-#define WT_STAT_CONN_LOG_COMPRESS_SMALL 1274
+#define WT_STAT_CONN_LOG_COMPRESS_SMALL 1276
/*! log: log release advances write LSN */
-#define WT_STAT_CONN_LOG_RELEASE_WRITE_LSN 1275
+#define WT_STAT_CONN_LOG_RELEASE_WRITE_LSN 1277
/*! log: log scan operations */
-#define WT_STAT_CONN_LOG_SCANS 1276
+#define WT_STAT_CONN_LOG_SCANS 1278
/*! log: log scan records requiring two reads */
-#define WT_STAT_CONN_LOG_SCAN_REREADS 1277
+#define WT_STAT_CONN_LOG_SCAN_REREADS 1279
/*! log: log server thread advances write LSN */
-#define WT_STAT_CONN_LOG_WRITE_LSN 1278
+#define WT_STAT_CONN_LOG_WRITE_LSN 1280
/*! log: log server thread write LSN walk skipped */
-#define WT_STAT_CONN_LOG_WRITE_LSN_SKIP 1279
+#define WT_STAT_CONN_LOG_WRITE_LSN_SKIP 1281
/*! log: log sync operations */
-#define WT_STAT_CONN_LOG_SYNC 1280
+#define WT_STAT_CONN_LOG_SYNC 1282
/*! log: log sync time duration (usecs) */
-#define WT_STAT_CONN_LOG_SYNC_DURATION 1281
+#define WT_STAT_CONN_LOG_SYNC_DURATION 1283
/*! log: log sync_dir operations */
-#define WT_STAT_CONN_LOG_SYNC_DIR 1282
+#define WT_STAT_CONN_LOG_SYNC_DIR 1284
/*! log: log sync_dir time duration (usecs) */
-#define WT_STAT_CONN_LOG_SYNC_DIR_DURATION 1283
+#define WT_STAT_CONN_LOG_SYNC_DIR_DURATION 1285
/*! log: log write operations */
-#define WT_STAT_CONN_LOG_WRITES 1284
+#define WT_STAT_CONN_LOG_WRITES 1286
/*! log: logging bytes consolidated */
-#define WT_STAT_CONN_LOG_SLOT_CONSOLIDATED 1285
+#define WT_STAT_CONN_LOG_SLOT_CONSOLIDATED 1287
/*! log: maximum log file size */
-#define WT_STAT_CONN_LOG_MAX_FILESIZE 1286
+#define WT_STAT_CONN_LOG_MAX_FILESIZE 1288
/*! log: number of pre-allocated log files to create */
-#define WT_STAT_CONN_LOG_PREALLOC_MAX 1287
+#define WT_STAT_CONN_LOG_PREALLOC_MAX 1289
/*! log: pre-allocated log files not ready and missed */
-#define WT_STAT_CONN_LOG_PREALLOC_MISSED 1288
+#define WT_STAT_CONN_LOG_PREALLOC_MISSED 1290
/*! log: pre-allocated log files prepared */
-#define WT_STAT_CONN_LOG_PREALLOC_FILES 1289
+#define WT_STAT_CONN_LOG_PREALLOC_FILES 1291
/*! log: pre-allocated log files used */
-#define WT_STAT_CONN_LOG_PREALLOC_USED 1290
+#define WT_STAT_CONN_LOG_PREALLOC_USED 1292
/*! log: records processed by log scan */
-#define WT_STAT_CONN_LOG_SCAN_RECORDS 1291
+#define WT_STAT_CONN_LOG_SCAN_RECORDS 1293
/*! log: slot close lost race */
-#define WT_STAT_CONN_LOG_SLOT_CLOSE_RACE 1292
+#define WT_STAT_CONN_LOG_SLOT_CLOSE_RACE 1294
/*! log: slot close unbuffered waits */
-#define WT_STAT_CONN_LOG_SLOT_CLOSE_UNBUF 1293
+#define WT_STAT_CONN_LOG_SLOT_CLOSE_UNBUF 1295
/*! log: slot closures */
-#define WT_STAT_CONN_LOG_SLOT_CLOSES 1294
+#define WT_STAT_CONN_LOG_SLOT_CLOSES 1296
/*! log: slot join atomic update races */
-#define WT_STAT_CONN_LOG_SLOT_RACES 1295
+#define WT_STAT_CONN_LOG_SLOT_RACES 1297
/*! log: slot join calls atomic updates raced */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_RACE 1296
+#define WT_STAT_CONN_LOG_SLOT_YIELD_RACE 1298
/*! log: slot join calls did not yield */
-#define WT_STAT_CONN_LOG_SLOT_IMMEDIATE 1297
+#define WT_STAT_CONN_LOG_SLOT_IMMEDIATE 1299
/*! log: slot join calls found active slot closed */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_CLOSE 1298
+#define WT_STAT_CONN_LOG_SLOT_YIELD_CLOSE 1300
/*! log: slot join calls slept */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_SLEEP 1299
+#define WT_STAT_CONN_LOG_SLOT_YIELD_SLEEP 1301
/*! log: slot join calls yielded */
-#define WT_STAT_CONN_LOG_SLOT_YIELD 1300
+#define WT_STAT_CONN_LOG_SLOT_YIELD 1302
/*! log: slot join found active slot closed */
-#define WT_STAT_CONN_LOG_SLOT_ACTIVE_CLOSED 1301
+#define WT_STAT_CONN_LOG_SLOT_ACTIVE_CLOSED 1303
/*! log: slot joins yield time (usecs) */
-#define WT_STAT_CONN_LOG_SLOT_YIELD_DURATION 1302
+#define WT_STAT_CONN_LOG_SLOT_YIELD_DURATION 1304
/*! log: slot transitions unable to find free slot */
-#define WT_STAT_CONN_LOG_SLOT_NO_FREE_SLOTS 1303
+#define WT_STAT_CONN_LOG_SLOT_NO_FREE_SLOTS 1305
/*! log: slot unbuffered writes */
-#define WT_STAT_CONN_LOG_SLOT_UNBUFFERED 1304
+#define WT_STAT_CONN_LOG_SLOT_UNBUFFERED 1306
/*! log: total in-memory size of compressed records */
-#define WT_STAT_CONN_LOG_COMPRESS_MEM 1305
+#define WT_STAT_CONN_LOG_COMPRESS_MEM 1307
/*! log: total log buffer size */
-#define WT_STAT_CONN_LOG_BUFFER_SIZE 1306
+#define WT_STAT_CONN_LOG_BUFFER_SIZE 1308
/*! log: total size of compressed records */
-#define WT_STAT_CONN_LOG_COMPRESS_LEN 1307
+#define WT_STAT_CONN_LOG_COMPRESS_LEN 1309
/*! log: written slots coalesced */
-#define WT_STAT_CONN_LOG_SLOT_COALESCED 1308
+#define WT_STAT_CONN_LOG_SLOT_COALESCED 1310
/*! log: yields waiting for previous log file close */
-#define WT_STAT_CONN_LOG_CLOSE_YIELDS 1309
+#define WT_STAT_CONN_LOG_CLOSE_YIELDS 1311
/*! perf: file system read latency histogram (bucket 1) - 10-49ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT50 1310
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT50 1312
/*! perf: file system read latency histogram (bucket 2) - 50-99ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT100 1311
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT100 1313
/*! perf: file system read latency histogram (bucket 3) - 100-249ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT250 1312
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT250 1314
/*! perf: file system read latency histogram (bucket 4) - 250-499ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT500 1313
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT500 1315
/*! perf: file system read latency histogram (bucket 5) - 500-999ms */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT1000 1314
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_LT1000 1316
/*! perf: file system read latency histogram (bucket 6) - 1000ms+ */
-#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_GT1000 1315
+#define WT_STAT_CONN_PERF_HIST_FSREAD_LATENCY_GT1000 1317
/*! perf: file system write latency histogram (bucket 1) - 10-49ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT50 1316
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT50 1318
/*! perf: file system write latency histogram (bucket 2) - 50-99ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT100 1317
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT100 1319
/*! perf: file system write latency histogram (bucket 3) - 100-249ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT250 1318
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT250 1320
/*! perf: file system write latency histogram (bucket 4) - 250-499ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT500 1319
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT500 1321
/*! perf: file system write latency histogram (bucket 5) - 500-999ms */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT1000 1320
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_LT1000 1322
/*! perf: file system write latency histogram (bucket 6) - 1000ms+ */
-#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_GT1000 1321
+#define WT_STAT_CONN_PERF_HIST_FSWRITE_LATENCY_GT1000 1323
/*! perf: operation read latency histogram (bucket 1) - 100-249us */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT250 1322
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT250 1324
/*! perf: operation read latency histogram (bucket 2) - 250-499us */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT500 1323
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT500 1325
/*! perf: operation read latency histogram (bucket 3) - 500-999us */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT1000 1324
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT1000 1326
/*! perf: operation read latency histogram (bucket 4) - 1000-9999us */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT10000 1325
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_LT10000 1327
/*! perf: operation read latency histogram (bucket 5) - 10000us+ */
-#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_GT10000 1326
+#define WT_STAT_CONN_PERF_HIST_OPREAD_LATENCY_GT10000 1328
/*! perf: operation write latency histogram (bucket 1) - 100-249us */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT250 1327
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT250 1329
/*! perf: operation write latency histogram (bucket 2) - 250-499us */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT500 1328
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT500 1330
/*! perf: operation write latency histogram (bucket 3) - 500-999us */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT1000 1329
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT1000 1331
/*! perf: operation write latency histogram (bucket 4) - 1000-9999us */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT10000 1330
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_LT10000 1332
/*! perf: operation write latency histogram (bucket 5) - 10000us+ */
-#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_GT10000 1331
+#define WT_STAT_CONN_PERF_HIST_OPWRITE_LATENCY_GT10000 1333
/*! reconciliation: approximate byte size of timestamps in pages written */
-#define WT_STAT_CONN_REC_TIME_WINDOW_BYTES_TS 1332
+#define WT_STAT_CONN_REC_TIME_WINDOW_BYTES_TS 1334
/*!
* reconciliation: approximate byte size of transaction IDs in pages
* written
*/
-#define WT_STAT_CONN_REC_TIME_WINDOW_BYTES_TXN 1333
+#define WT_STAT_CONN_REC_TIME_WINDOW_BYTES_TXN 1335
/*! reconciliation: fast-path pages deleted */
-#define WT_STAT_CONN_REC_PAGE_DELETE_FAST 1334
+#define WT_STAT_CONN_REC_PAGE_DELETE_FAST 1336
/*! reconciliation: maximum seconds spent in a reconciliation call */
-#define WT_STAT_CONN_REC_MAXIMUM_SECONDS 1335
+#define WT_STAT_CONN_REC_MAXIMUM_SECONDS 1337
/*! reconciliation: page reconciliation calls */
-#define WT_STAT_CONN_REC_PAGES 1336
+#define WT_STAT_CONN_REC_PAGES 1338
/*! reconciliation: page reconciliation calls for eviction */
-#define WT_STAT_CONN_REC_PAGES_EVICTION 1337
+#define WT_STAT_CONN_REC_PAGES_EVICTION 1339
/*!
* reconciliation: page reconciliation calls that resulted in values with
* prepared transaction metadata
*/
-#define WT_STAT_CONN_REC_PAGES_WITH_PREPARE 1338
+#define WT_STAT_CONN_REC_PAGES_WITH_PREPARE 1340
/*!
* reconciliation: page reconciliation calls that resulted in values with
* timestamps
*/
-#define WT_STAT_CONN_REC_PAGES_WITH_TS 1339
+#define WT_STAT_CONN_REC_PAGES_WITH_TS 1341
/*!
* reconciliation: page reconciliation calls that resulted in values with
* transaction ids
*/
-#define WT_STAT_CONN_REC_PAGES_WITH_TXN 1340
+#define WT_STAT_CONN_REC_PAGES_WITH_TXN 1342
/*! reconciliation: pages deleted */
-#define WT_STAT_CONN_REC_PAGE_DELETE 1341
+#define WT_STAT_CONN_REC_PAGE_DELETE 1343
/*!
* reconciliation: pages written including an aggregated newest start
* durable timestamp
*/
-#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_START_DURABLE_TS 1342
+#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_START_DURABLE_TS 1344
/*!
* reconciliation: pages written including an aggregated newest stop
* durable timestamp
*/
-#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_DURABLE_TS 1343
+#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_DURABLE_TS 1345
/*!
* reconciliation: pages written including an aggregated newest stop
* timestamp
*/
-#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_TS 1344
+#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_TS 1346
/*!
* reconciliation: pages written including an aggregated newest stop
* transaction ID
*/
-#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_TXN 1345
+#define WT_STAT_CONN_REC_TIME_AGGR_NEWEST_STOP_TXN 1347
/*!
* reconciliation: pages written including an aggregated oldest start
* timestamp
*/
-#define WT_STAT_CONN_REC_TIME_AGGR_OLDEST_START_TS 1346
+#define WT_STAT_CONN_REC_TIME_AGGR_OLDEST_START_TS 1348
/*!
* reconciliation: pages written including an aggregated oldest start
* transaction ID
*/
-#define WT_STAT_CONN_REC_TIME_AGGR_OLDEST_START_TXN 1347
+#define WT_STAT_CONN_REC_TIME_AGGR_OLDEST_START_TXN 1349
/*! reconciliation: pages written including an aggregated prepare */
-#define WT_STAT_CONN_REC_TIME_AGGR_PREPARED 1348
+#define WT_STAT_CONN_REC_TIME_AGGR_PREPARED 1350
/*! reconciliation: pages written including at least one prepare state */
-#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_PREPARED 1349
+#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_PREPARED 1351
/*!
* reconciliation: pages written including at least one start durable
* timestamp
*/
-#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_DURABLE_START_TS 1350
+#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_DURABLE_START_TS 1352
/*! reconciliation: pages written including at least one start timestamp */
-#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_START_TS 1351
+#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_START_TS 1353
/*!
* reconciliation: pages written including at least one start transaction
* ID
*/
-#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_START_TXN 1352
+#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_START_TXN 1354
/*!
* reconciliation: pages written including at least one stop durable
* timestamp
*/
-#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_DURABLE_STOP_TS 1353
+#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_DURABLE_STOP_TS 1355
/*! reconciliation: pages written including at least one stop timestamp */
-#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_STOP_TS 1354
+#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_STOP_TS 1356
/*!
* reconciliation: pages written including at least one stop transaction
* ID
*/
-#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_STOP_TXN 1355
+#define WT_STAT_CONN_REC_TIME_WINDOW_PAGES_STOP_TXN 1357
/*! reconciliation: records written including a prepare state */
-#define WT_STAT_CONN_REC_TIME_WINDOW_PREPARED 1356
+#define WT_STAT_CONN_REC_TIME_WINDOW_PREPARED 1358
/*! reconciliation: records written including a start durable timestamp */
-#define WT_STAT_CONN_REC_TIME_WINDOW_DURABLE_START_TS 1357
+#define WT_STAT_CONN_REC_TIME_WINDOW_DURABLE_START_TS 1359
/*! reconciliation: records written including a start timestamp */
-#define WT_STAT_CONN_REC_TIME_WINDOW_START_TS 1358
+#define WT_STAT_CONN_REC_TIME_WINDOW_START_TS 1360
/*! reconciliation: records written including a start transaction ID */
-#define WT_STAT_CONN_REC_TIME_WINDOW_START_TXN 1359
+#define WT_STAT_CONN_REC_TIME_WINDOW_START_TXN 1361
/*! reconciliation: records written including a stop durable timestamp */
-#define WT_STAT_CONN_REC_TIME_WINDOW_DURABLE_STOP_TS 1360
+#define WT_STAT_CONN_REC_TIME_WINDOW_DURABLE_STOP_TS 1362
/*! reconciliation: records written including a stop timestamp */
-#define WT_STAT_CONN_REC_TIME_WINDOW_STOP_TS 1361
+#define WT_STAT_CONN_REC_TIME_WINDOW_STOP_TS 1363
/*! reconciliation: records written including a stop transaction ID */
-#define WT_STAT_CONN_REC_TIME_WINDOW_STOP_TXN 1362
+#define WT_STAT_CONN_REC_TIME_WINDOW_STOP_TXN 1364
/*! reconciliation: split bytes currently awaiting free */
-#define WT_STAT_CONN_REC_SPLIT_STASHED_BYTES 1363
+#define WT_STAT_CONN_REC_SPLIT_STASHED_BYTES 1365
/*! reconciliation: split objects currently awaiting free */
-#define WT_STAT_CONN_REC_SPLIT_STASHED_OBJECTS 1364
+#define WT_STAT_CONN_REC_SPLIT_STASHED_OBJECTS 1366
/*! session: open session count */
-#define WT_STAT_CONN_SESSION_OPEN 1365
+#define WT_STAT_CONN_SESSION_OPEN 1367
/*! session: session query timestamp calls */
-#define WT_STAT_CONN_SESSION_QUERY_TS 1366
+#define WT_STAT_CONN_SESSION_QUERY_TS 1368
/*! session: table alter failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_ALTER_FAIL 1367
+#define WT_STAT_CONN_SESSION_TABLE_ALTER_FAIL 1369
/*! session: table alter successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_ALTER_SUCCESS 1368
+#define WT_STAT_CONN_SESSION_TABLE_ALTER_SUCCESS 1370
/*! session: table alter unchanged and skipped */
-#define WT_STAT_CONN_SESSION_TABLE_ALTER_SKIP 1369
+#define WT_STAT_CONN_SESSION_TABLE_ALTER_SKIP 1371
/*! session: table compact failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_COMPACT_FAIL 1370
+#define WT_STAT_CONN_SESSION_TABLE_COMPACT_FAIL 1372
/*! session: table compact successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_COMPACT_SUCCESS 1371
+#define WT_STAT_CONN_SESSION_TABLE_COMPACT_SUCCESS 1373
/*! session: table create failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_CREATE_FAIL 1372
+#define WT_STAT_CONN_SESSION_TABLE_CREATE_FAIL 1374
/*! session: table create successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_CREATE_SUCCESS 1373
+#define WT_STAT_CONN_SESSION_TABLE_CREATE_SUCCESS 1375
/*! session: table drop failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_DROP_FAIL 1374
+#define WT_STAT_CONN_SESSION_TABLE_DROP_FAIL 1376
/*! session: table drop successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_DROP_SUCCESS 1375
+#define WT_STAT_CONN_SESSION_TABLE_DROP_SUCCESS 1377
/*! session: table import failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_IMPORT_FAIL 1376
+#define WT_STAT_CONN_SESSION_TABLE_IMPORT_FAIL 1378
/*! session: table import successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_IMPORT_SUCCESS 1377
+#define WT_STAT_CONN_SESSION_TABLE_IMPORT_SUCCESS 1379
/*! session: table rebalance failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_REBALANCE_FAIL 1378
+#define WT_STAT_CONN_SESSION_TABLE_REBALANCE_FAIL 1380
/*! session: table rebalance successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_REBALANCE_SUCCESS 1379
+#define WT_STAT_CONN_SESSION_TABLE_REBALANCE_SUCCESS 1381
/*! session: table rename failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_RENAME_FAIL 1380
+#define WT_STAT_CONN_SESSION_TABLE_RENAME_FAIL 1382
/*! session: table rename successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_RENAME_SUCCESS 1381
+#define WT_STAT_CONN_SESSION_TABLE_RENAME_SUCCESS 1383
/*! session: table salvage failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_FAIL 1382
+#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_FAIL 1384
/*! session: table salvage successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_SUCCESS 1383
+#define WT_STAT_CONN_SESSION_TABLE_SALVAGE_SUCCESS 1385
/*! session: table truncate failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_FAIL 1384
+#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_FAIL 1386
/*! session: table truncate successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_SUCCESS 1385
+#define WT_STAT_CONN_SESSION_TABLE_TRUNCATE_SUCCESS 1387
/*! session: table verify failed calls */
-#define WT_STAT_CONN_SESSION_TABLE_VERIFY_FAIL 1386
+#define WT_STAT_CONN_SESSION_TABLE_VERIFY_FAIL 1388
/*! session: table verify successful calls */
-#define WT_STAT_CONN_SESSION_TABLE_VERIFY_SUCCESS 1387
+#define WT_STAT_CONN_SESSION_TABLE_VERIFY_SUCCESS 1389
/*! thread-state: active filesystem fsync calls */
-#define WT_STAT_CONN_THREAD_FSYNC_ACTIVE 1388
+#define WT_STAT_CONN_THREAD_FSYNC_ACTIVE 1390
/*! thread-state: active filesystem read calls */
-#define WT_STAT_CONN_THREAD_READ_ACTIVE 1389
+#define WT_STAT_CONN_THREAD_READ_ACTIVE 1391
/*! thread-state: active filesystem write calls */
-#define WT_STAT_CONN_THREAD_WRITE_ACTIVE 1390
+#define WT_STAT_CONN_THREAD_WRITE_ACTIVE 1392
/*! thread-yield: application thread time evicting (usecs) */
-#define WT_STAT_CONN_APPLICATION_EVICT_TIME 1391
+#define WT_STAT_CONN_APPLICATION_EVICT_TIME 1393
/*! thread-yield: application thread time waiting for cache (usecs) */
-#define WT_STAT_CONN_APPLICATION_CACHE_TIME 1392
+#define WT_STAT_CONN_APPLICATION_CACHE_TIME 1394
/*!
* thread-yield: connection close blocked waiting for transaction state
* stabilization
*/
-#define WT_STAT_CONN_TXN_RELEASE_BLOCKED 1393
+#define WT_STAT_CONN_TXN_RELEASE_BLOCKED 1395
/*! thread-yield: connection close yielded for lsm manager shutdown */
-#define WT_STAT_CONN_CONN_CLOSE_BLOCKED_LSM 1394
+#define WT_STAT_CONN_CONN_CLOSE_BLOCKED_LSM 1396
/*! thread-yield: data handle lock yielded */
-#define WT_STAT_CONN_DHANDLE_LOCK_BLOCKED 1395
+#define WT_STAT_CONN_DHANDLE_LOCK_BLOCKED 1397
/*!
* thread-yield: get reference for page index and slot time sleeping
* (usecs)
*/
-#define WT_STAT_CONN_PAGE_INDEX_SLOT_REF_BLOCKED 1396
+#define WT_STAT_CONN_PAGE_INDEX_SLOT_REF_BLOCKED 1398
/*! thread-yield: log server sync yielded for log write */
-#define WT_STAT_CONN_LOG_SERVER_SYNC_BLOCKED 1397
+#define WT_STAT_CONN_LOG_SERVER_SYNC_BLOCKED 1399
/*! thread-yield: page access yielded due to prepare state change */
-#define WT_STAT_CONN_PREPARED_TRANSITION_BLOCKED_PAGE 1398
+#define WT_STAT_CONN_PREPARED_TRANSITION_BLOCKED_PAGE 1400
/*! thread-yield: page acquire busy blocked */
-#define WT_STAT_CONN_PAGE_BUSY_BLOCKED 1399
+#define WT_STAT_CONN_PAGE_BUSY_BLOCKED 1401
/*! thread-yield: page acquire eviction blocked */
-#define WT_STAT_CONN_PAGE_FORCIBLE_EVICT_BLOCKED 1400
+#define WT_STAT_CONN_PAGE_FORCIBLE_EVICT_BLOCKED 1402
/*! thread-yield: page acquire locked blocked */
-#define WT_STAT_CONN_PAGE_LOCKED_BLOCKED 1401
+#define WT_STAT_CONN_PAGE_LOCKED_BLOCKED 1403
/*! thread-yield: page acquire read blocked */
-#define WT_STAT_CONN_PAGE_READ_BLOCKED 1402
+#define WT_STAT_CONN_PAGE_READ_BLOCKED 1404
/*! thread-yield: page acquire time sleeping (usecs) */
-#define WT_STAT_CONN_PAGE_SLEEP 1403
+#define WT_STAT_CONN_PAGE_SLEEP 1405
/*!
* thread-yield: page delete rollback time sleeping for state change
* (usecs)
*/
-#define WT_STAT_CONN_PAGE_DEL_ROLLBACK_BLOCKED 1404
+#define WT_STAT_CONN_PAGE_DEL_ROLLBACK_BLOCKED 1406
/*! thread-yield: page reconciliation yielded due to child modification */
-#define WT_STAT_CONN_CHILD_MODIFY_BLOCKED_PAGE 1405
+#define WT_STAT_CONN_CHILD_MODIFY_BLOCKED_PAGE 1407
/*! transaction: Number of prepared updates */
-#define WT_STAT_CONN_TXN_PREPARED_UPDATES_COUNT 1406
+#define WT_STAT_CONN_TXN_PREPARED_UPDATES_COUNT 1408
/*! transaction: durable timestamp queue entries walked */
-#define WT_STAT_CONN_TXN_DURABLE_QUEUE_WALKED 1407
+#define WT_STAT_CONN_TXN_DURABLE_QUEUE_WALKED 1409
/*! transaction: durable timestamp queue insert to empty */
-#define WT_STAT_CONN_TXN_DURABLE_QUEUE_EMPTY 1408
+#define WT_STAT_CONN_TXN_DURABLE_QUEUE_EMPTY 1410
/*! transaction: durable timestamp queue inserts to head */
-#define WT_STAT_CONN_TXN_DURABLE_QUEUE_HEAD 1409
+#define WT_STAT_CONN_TXN_DURABLE_QUEUE_HEAD 1411
/*! transaction: durable timestamp queue inserts total */
-#define WT_STAT_CONN_TXN_DURABLE_QUEUE_INSERTS 1410
+#define WT_STAT_CONN_TXN_DURABLE_QUEUE_INSERTS 1412
/*! transaction: durable timestamp queue length */
-#define WT_STAT_CONN_TXN_DURABLE_QUEUE_LEN 1411
+#define WT_STAT_CONN_TXN_DURABLE_QUEUE_LEN 1413
/*! transaction: prepared transactions */
-#define WT_STAT_CONN_TXN_PREPARE 1412
+#define WT_STAT_CONN_TXN_PREPARE 1414
/*! transaction: prepared transactions committed */
-#define WT_STAT_CONN_TXN_PREPARE_COMMIT 1413
+#define WT_STAT_CONN_TXN_PREPARE_COMMIT 1415
/*! transaction: prepared transactions currently active */
-#define WT_STAT_CONN_TXN_PREPARE_ACTIVE 1414
+#define WT_STAT_CONN_TXN_PREPARE_ACTIVE 1416
/*! transaction: prepared transactions rolled back */
-#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK 1415
+#define WT_STAT_CONN_TXN_PREPARE_ROLLBACK 1417
/*! transaction: query timestamp calls */
-#define WT_STAT_CONN_TXN_QUERY_TS 1416
+#define WT_STAT_CONN_TXN_QUERY_TS 1418
/*! transaction: read timestamp queue entries walked */
-#define WT_STAT_CONN_TXN_READ_QUEUE_WALKED 1417
+#define WT_STAT_CONN_TXN_READ_QUEUE_WALKED 1419
/*! transaction: read timestamp queue insert to empty */
-#define WT_STAT_CONN_TXN_READ_QUEUE_EMPTY 1418
+#define WT_STAT_CONN_TXN_READ_QUEUE_EMPTY 1420
/*! transaction: read timestamp queue inserts to head */
-#define WT_STAT_CONN_TXN_READ_QUEUE_HEAD 1419
+#define WT_STAT_CONN_TXN_READ_QUEUE_HEAD 1421
/*! transaction: read timestamp queue inserts total */
-#define WT_STAT_CONN_TXN_READ_QUEUE_INSERTS 1420
+#define WT_STAT_CONN_TXN_READ_QUEUE_INSERTS 1422
/*! transaction: read timestamp queue length */
-#define WT_STAT_CONN_TXN_READ_QUEUE_LEN 1421
+#define WT_STAT_CONN_TXN_READ_QUEUE_LEN 1423
/*! transaction: rollback to stable calls */
-#define WT_STAT_CONN_TXN_RTS 1422
+#define WT_STAT_CONN_TXN_RTS 1424
/*!
* transaction: rollback to stable hs records with stop timestamps older
* than newer records
*/
-#define WT_STAT_CONN_TXN_RTS_HS_STOP_OLDER_THAN_NEWER_START 1423
+#define WT_STAT_CONN_TXN_RTS_HS_STOP_OLDER_THAN_NEWER_START 1425
/*! transaction: rollback to stable keys removed */
-#define WT_STAT_CONN_TXN_RTS_KEYS_REMOVED 1424
+#define WT_STAT_CONN_TXN_RTS_KEYS_REMOVED 1426
/*! transaction: rollback to stable keys restored */
-#define WT_STAT_CONN_TXN_RTS_KEYS_RESTORED 1425
+#define WT_STAT_CONN_TXN_RTS_KEYS_RESTORED 1427
/*! transaction: rollback to stable pages visited */
-#define WT_STAT_CONN_TXN_RTS_PAGES_VISITED 1426
+#define WT_STAT_CONN_TXN_RTS_PAGES_VISITED 1428
/*! transaction: rollback to stable restored tombstones from history store */
-#define WT_STAT_CONN_TXN_RTS_HS_RESTORE_TOMBSTONES 1427
+#define WT_STAT_CONN_TXN_RTS_HS_RESTORE_TOMBSTONES 1429
/*! transaction: rollback to stable sweeping history store keys */
-#define WT_STAT_CONN_TXN_RTS_SWEEP_HS_KEYS 1428
+#define WT_STAT_CONN_TXN_RTS_SWEEP_HS_KEYS 1430
/*! transaction: rollback to stable tree walk skipping pages */
-#define WT_STAT_CONN_TXN_RTS_TREE_WALK_SKIP_PAGES 1429
+#define WT_STAT_CONN_TXN_RTS_TREE_WALK_SKIP_PAGES 1431
/*! transaction: rollback to stable updates aborted */
-#define WT_STAT_CONN_TXN_RTS_UPD_ABORTED 1430
+#define WT_STAT_CONN_TXN_RTS_UPD_ABORTED 1432
/*! transaction: rollback to stable updates removed from history store */
-#define WT_STAT_CONN_TXN_RTS_HS_REMOVED 1431
+#define WT_STAT_CONN_TXN_RTS_HS_REMOVED 1433
/*! transaction: set timestamp calls */
-#define WT_STAT_CONN_TXN_SET_TS 1432
+#define WT_STAT_CONN_TXN_SET_TS 1434
/*! transaction: set timestamp durable calls */
-#define WT_STAT_CONN_TXN_SET_TS_DURABLE 1433
+#define WT_STAT_CONN_TXN_SET_TS_DURABLE 1435
/*! transaction: set timestamp durable updates */
-#define WT_STAT_CONN_TXN_SET_TS_DURABLE_UPD 1434
+#define WT_STAT_CONN_TXN_SET_TS_DURABLE_UPD 1436
/*! transaction: set timestamp oldest calls */
-#define WT_STAT_CONN_TXN_SET_TS_OLDEST 1435
+#define WT_STAT_CONN_TXN_SET_TS_OLDEST 1437
/*! transaction: set timestamp oldest updates */
-#define WT_STAT_CONN_TXN_SET_TS_OLDEST_UPD 1436
+#define WT_STAT_CONN_TXN_SET_TS_OLDEST_UPD 1438
/*! transaction: set timestamp stable calls */
-#define WT_STAT_CONN_TXN_SET_TS_STABLE 1437
+#define WT_STAT_CONN_TXN_SET_TS_STABLE 1439
/*! transaction: set timestamp stable updates */
-#define WT_STAT_CONN_TXN_SET_TS_STABLE_UPD 1438
+#define WT_STAT_CONN_TXN_SET_TS_STABLE_UPD 1440
/*! transaction: transaction begins */
-#define WT_STAT_CONN_TXN_BEGIN 1439
+#define WT_STAT_CONN_TXN_BEGIN 1441
/*! transaction: transaction checkpoint currently running */
-#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1440
+#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1442
/*! transaction: transaction checkpoint generation */
-#define WT_STAT_CONN_TXN_CHECKPOINT_GENERATION 1441
+#define WT_STAT_CONN_TXN_CHECKPOINT_GENERATION 1443
/*!
* transaction: transaction checkpoint history store file duration
* (usecs)
*/
-#define WT_STAT_CONN_TXN_HS_CKPT_DURATION 1442
+#define WT_STAT_CONN_TXN_HS_CKPT_DURATION 1444
/*! transaction: transaction checkpoint max time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MAX 1443
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MAX 1445
/*! transaction: transaction checkpoint min time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MIN 1444
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MIN 1446
/*! transaction: transaction checkpoint most recent time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_RECENT 1445
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_RECENT 1447
/*! transaction: transaction checkpoint prepare currently running */
-#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RUNNING 1446
+#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RUNNING 1448
/*! transaction: transaction checkpoint prepare max time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MAX 1447
+#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MAX 1449
/*! transaction: transaction checkpoint prepare min time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MIN 1448
+#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_MIN 1450
/*! transaction: transaction checkpoint prepare most recent time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RECENT 1449
+#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_RECENT 1451
/*! transaction: transaction checkpoint prepare total time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_TOTAL 1450
+#define WT_STAT_CONN_TXN_CHECKPOINT_PREP_TOTAL 1452
/*! transaction: transaction checkpoint scrub dirty target */
-#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TARGET 1451
+#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TARGET 1453
/*! transaction: transaction checkpoint scrub time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TIME 1452
+#define WT_STAT_CONN_TXN_CHECKPOINT_SCRUB_TIME 1454
/*! transaction: transaction checkpoint total time (msecs) */
-#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_TOTAL 1453
+#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_TOTAL 1455
/*! transaction: transaction checkpoints */
-#define WT_STAT_CONN_TXN_CHECKPOINT 1454
+#define WT_STAT_CONN_TXN_CHECKPOINT 1456
/*!
* transaction: transaction checkpoints skipped because database was
* clean
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_SKIPPED 1455
+#define WT_STAT_CONN_TXN_CHECKPOINT_SKIPPED 1457
/*! transaction: transaction failures due to history store */
-#define WT_STAT_CONN_TXN_FAIL_CACHE 1456
+#define WT_STAT_CONN_TXN_FAIL_CACHE 1458
/*!
* transaction: transaction fsync calls for checkpoint after allocating
* the transaction ID
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST 1457
+#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST 1459
/*!
* transaction: transaction fsync duration for checkpoint after
* allocating the transaction ID (usecs)
*/
-#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST_DURATION 1458
+#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST_DURATION 1460
/*! transaction: transaction range of IDs currently pinned */
-#define WT_STAT_CONN_TXN_PINNED_RANGE 1459
+#define WT_STAT_CONN_TXN_PINNED_RANGE 1461
/*! transaction: transaction range of IDs currently pinned by a checkpoint */
-#define WT_STAT_CONN_TXN_PINNED_CHECKPOINT_RANGE 1460
+#define WT_STAT_CONN_TXN_PINNED_CHECKPOINT_RANGE 1462
/*! transaction: transaction range of timestamps currently pinned */
-#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP 1461
+#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP 1463
/*! transaction: transaction range of timestamps pinned by a checkpoint */
-#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_CHECKPOINT 1462
+#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_CHECKPOINT 1464
/*!
* transaction: transaction range of timestamps pinned by the oldest
* active read timestamp
*/
-#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_READER 1463
+#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_READER 1465
/*!
* transaction: transaction range of timestamps pinned by the oldest
* timestamp
*/
-#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_OLDEST 1464
+#define WT_STAT_CONN_TXN_PINNED_TIMESTAMP_OLDEST 1466
/*! transaction: transaction read timestamp of the oldest active reader */
-#define WT_STAT_CONN_TXN_TIMESTAMP_OLDEST_ACTIVE_READ 1465
+#define WT_STAT_CONN_TXN_TIMESTAMP_OLDEST_ACTIVE_READ 1467
/*! transaction: transaction sync calls */
-#define WT_STAT_CONN_TXN_SYNC 1466
+#define WT_STAT_CONN_TXN_SYNC 1468
/*! transaction: transactions committed */
-#define WT_STAT_CONN_TXN_COMMIT 1467
+#define WT_STAT_CONN_TXN_COMMIT 1469
/*! transaction: transactions rolled back */
-#define WT_STAT_CONN_TXN_ROLLBACK 1468
+#define WT_STAT_CONN_TXN_ROLLBACK 1470
/*! transaction: update conflicts */
-#define WT_STAT_CONN_TXN_UPDATE_CONFLICT 1469
+#define WT_STAT_CONN_TXN_UPDATE_CONFLICT 1471
/*!
* @}
diff --git a/src/third_party/wiredtiger/src/support/stat.c b/src/third_party/wiredtiger/src/support/stat.c
index 6ba51a94cab..dc0a07d1242 100644
--- a/src/third_party/wiredtiger/src/support/stat.c
+++ b/src/third_party/wiredtiger/src/support/stat.c
@@ -905,6 +905,9 @@ static const char *const __stats_connection_desc[] = {
"cursor: cursor next calls that skip greater than or equal to 100 entries",
"cursor: cursor next calls that skip less than 100 entries", "cursor: cursor operation restarted",
"cursor: cursor prev calls",
+ "cursor: cursor prev calls that skip due to a globally visible history store tombstone",
+ "cursor: cursor prev calls that skip due to a globally visible history store tombstone in "
+ "rollback to stable",
"cursor: cursor prev calls that skip greater than or equal to 100 entries",
"cursor: cursor prev calls that skip less than 100 entries", "cursor: cursor remove calls",
"cursor: cursor remove key bytes removed", "cursor: cursor reserve calls",
@@ -1349,6 +1352,8 @@ __wt_stat_connection_clear_single(WT_CONNECTION_STATS *stats)
stats->cursor_next_skip_lt_100 = 0;
stats->cursor_restart = 0;
stats->cursor_prev = 0;
+ stats->cursor_prev_hs_tombstone = 0;
+ stats->cursor_prev_hs_tombstone_rts = 0;
stats->cursor_prev_skip_ge_100 = 0;
stats->cursor_prev_skip_lt_100 = 0;
stats->cursor_remove = 0;
@@ -1855,6 +1860,8 @@ __wt_stat_connection_aggregate(WT_CONNECTION_STATS **from, WT_CONNECTION_STATS *
to->cursor_next_skip_lt_100 += WT_STAT_READ(from, cursor_next_skip_lt_100);
to->cursor_restart += WT_STAT_READ(from, cursor_restart);
to->cursor_prev += WT_STAT_READ(from, cursor_prev);
+ to->cursor_prev_hs_tombstone += WT_STAT_READ(from, cursor_prev_hs_tombstone);
+ to->cursor_prev_hs_tombstone_rts += WT_STAT_READ(from, cursor_prev_hs_tombstone_rts);
to->cursor_prev_skip_ge_100 += WT_STAT_READ(from, cursor_prev_skip_ge_100);
to->cursor_prev_skip_lt_100 += WT_STAT_READ(from, cursor_prev_skip_lt_100);
to->cursor_remove += WT_STAT_READ(from, cursor_remove);
diff --git a/src/third_party/wiredtiger/src/txn/txn.c b/src/third_party/wiredtiger/src/txn/txn.c
index 571ec8fd6bc..ac0fc58fab1 100644
--- a/src/third_party/wiredtiger/src/txn/txn.c
+++ b/src/third_party/wiredtiger/src/txn/txn.c
@@ -680,6 +680,8 @@ __txn_append_hs_record(WT_SESSION_IMPL *session, WT_CURSOR *hs_cursor, WT_ITEM *
if (!__wt_txn_visible_all(
session, hs_cbt->upd_value->tw.stop_txn, hs_cbt->upd_value->tw.durable_stop_ts))
break;
+ else
+ WT_STAT_CONN_INCR(session, cursor_prev_hs_tombstone);
}
/* We walked off the top of the history store. */
diff --git a/src/third_party/wiredtiger/src/txn/txn_rollback_to_stable.c b/src/third_party/wiredtiger/src/txn/txn_rollback_to_stable.c
index 55a455c96f7..852aaad1169 100644
--- a/src/third_party/wiredtiger/src/txn/txn_rollback_to_stable.c
+++ b/src/third_party/wiredtiger/src/txn/txn_rollback_to_stable.c
@@ -232,8 +232,10 @@ __rollback_row_ondisk_fixup_key(WT_SESSION_IMPL *session, WT_PAGE *page, WT_ROW
* we can skip it.
*/
if (__wt_txn_visible_all(
- session, cbt->upd_value->tw.stop_txn, cbt->upd_value->tw.durable_stop_ts))
+ session, cbt->upd_value->tw.stop_txn, cbt->upd_value->tw.durable_stop_ts)) {
+ WT_STAT_CONN_INCR(session, cursor_prev_hs_tombstone_rts);
continue;
+ }
/*
* As part of the history store search, we never get an exact match based on our search
@@ -1030,8 +1032,10 @@ __rollback_to_stable_btree_hs_truncate(WT_SESSION_IMPL *session, uint32_t btree_
* we can skip it.
*/
if (__wt_txn_visible_all(
- session, cbt->upd_value->tw.stop_txn, cbt->upd_value->tw.durable_stop_ts))
+ session, cbt->upd_value->tw.stop_txn, cbt->upd_value->tw.durable_stop_ts)) {
+ WT_STAT_CONN_INCR(session, cursor_prev_hs_tombstone_rts);
continue;
+ }
/* Set this comparison as exact match of the search for later use. */
cbt->compare = 0;
diff --git a/src/third_party/wiredtiger/test/format/format.sh b/src/third_party/wiredtiger/test/format/format.sh
index e607fd1e942..5cffe3a2274 100755
--- a/src/third_party/wiredtiger/test/format/format.sh
+++ b/src/third_party/wiredtiger/test/format/format.sh
@@ -17,7 +17,7 @@ onintr()
trap 'onintr' 2
usage() {
- echo "usage: $0 [-aEFSv] [-b format-binary] [-c config] [-e env-var]"
+ echo "usage: $0 [-aEFRSv] [-b format-binary] [-c config] [-e env-var]"
echo " [-h home] [-j parallel-jobs] [-n total-jobs] [-t minutes] [format-configuration]"
echo
echo " -a abort/recovery testing (defaults to off)"
@@ -225,7 +225,7 @@ skip_known_errors()
# skip_error_list is a list of errors to skip. Each array entry can have multiple signatures
# for finger-grained matching. For example:
#
- # err_1=("heap-buffer-overflow" "__split_parent")
+ # err_1=("heap-buffer-overflow" "__split_parent")
skip_error_list=( err_1[@] )
# Loop through the skip list and search in the log file.
@@ -250,6 +250,7 @@ skip_known_errors()
# $1 directory name
report_failure()
{
+ # Note the directory may not yet exist, only the log file.
dir=$1
log="$dir.log"
@@ -257,45 +258,54 @@ report_failure()
#skip_known_errors $log
#skip_ret=$?
- echo "$name: failure status reported" > $dir/$status
failure=$(($failure + 1))
# Forcibly quit if first-failure configured.
[[ $first_failure -ne 0 ]] && force_quit=1
echo "$name: job in $dir failed"
- echo "$name: $dir log:"
sed 's/^/ /' < $log
+
+ # Note the directory may not yet exist, only the log file. If the directory doesn't exist,
+ # quit, we don't have any way to track that we've already reported this failure and it's
+ # not worth the effort to try and figure one out, in all likelihood the configuration is
+ # invalid.
+ [[ -d "$dir" ]] || {
+ echo "$name: $dir does not exist, $name unable to continue"
+ force_quit=1
+ return
+ }
echo "$name: $dir/CONFIG:"
sed 's/^/ /' < $dir/CONFIG
+
+ echo "$name: failure status reported" > $dir/$status
}
# Resolve/cleanup completed jobs.
resolve()
{
running=0
- list=$(ls $home | grep '^RUNDIR.[0-9]*$')
+ list=$(ls $home | grep '^RUNDIR.[0-9]*.log')
for i in $list; do
- dir="$home/$i"
- log="$dir.log"
-
- # Skip directories that aren't ours.
- [[ -f "$log" ]] || continue
+ # Note the directory may not yet exist, only the log file.
+ dir="$home/${i%.*}"
+ log="$home/$i"
# Skip failures we've already reported.
[[ -f "$dir/$status" ]] && continue
- # Get the process ID, ignore any jobs that aren't yet running.
- pid=`grep -E 'process.*running' $log | awk '{print $3}'`
- [[ "$pid" =~ ^[1-9][0-9]*$ ]] || continue
-
# Leave any process waiting for a gdb attach running, but report it as a failure.
grep -E 'waiting for debugger' $log > /dev/null && {
report_failure $dir
continue
}
- # If the job is still running, ignore it unless we're forcibly quitting.
+ # Get the process ID. There is a window where the PID might not yet be written, in
+ # which case we ignore the log file. If the job is still running, ignore it unless
+ # we're forcibly quitting. If it's not still running, wait for it and get an exit
+ # status.
+ pid=`awk '/process.*running/{print $3}' $log`
+ [[ "$pid" =~ ^[1-9][0-9]*$ ]] || continue
kill -s 0 $pid > /dev/null 2>&1 && {
[[ $force_quit -eq 0 ]] && {
running=$((running + 1))
@@ -311,8 +321,6 @@ resolve()
verbose "$name: job in $dir killed"
continue
}
-
- # Wait for the job and get an exit status.
wait $pid
eret=$?
@@ -410,7 +418,6 @@ resolve()
# a problem in this script.
echo "$name: job in $dir exited with status $eret for an unknown reason"
echo "$name: reporting job in $dir as a failure"
- echo "$name: $name needs to be updated"
report_failure $dir
done
return 0
@@ -449,7 +456,7 @@ format()
# Disassociate the command from the shell script so we can exit and let the command
# continue to run.
- # Run format in its own session so child processes are in their own process gorups
+ # Run format in its own session so child processes are in their own process groups
# and we can individually terminate (and clean up) running jobs and their children.
nohup setsid $cmd > $log 2>&1 &
@@ -479,30 +486,23 @@ while :; do
}
}
- # Start more jobs.
- while :; do
- # Check if we're only running the smoke-tests and we're done.
- [[ $smoke_test -ne 0 ]] && [[ $smoke_next -ge ${#smoke_list[@]} ]] && quit=1
+ # Check if we're only running the smoke-tests and we're done.
+ [[ $smoke_test -ne 0 ]] && [[ $smoke_next -ge ${#smoke_list[@]} ]] && quit=1
- # Check if the total number of jobs has been reached.
- [[ $total_jobs -ne 0 ]] && [[ $count_jobs -ge $total_jobs ]] && quit=1
-
- # Check if less than 60 seconds left on any timer. The goal is to avoid killing
- # jobs that haven't yet configured signal handlers, because we rely on handler
- # output to determine their final status.
- [[ $seconds -ne 0 ]] && [[ $(($seconds - $elapsed)) -lt 60 ]] && quit=1
+ # Check if the total number of jobs has been reached.
+ [[ $total_jobs -ne 0 ]] && [[ $count_jobs -ge $total_jobs ]] && quit=1
- # Don't create more jobs if we're quitting for any reason.
- [[ $force_quit -ne 0 ]] || [[ $quit -ne 0 ]] && break;
+ # Check if less than 60 seconds left on any timer. The goal is to avoid killing jobs that
+ # haven't yet configured signal handlers, because we rely on handler output to determine
+ # their final status.
+ [[ $seconds -ne 0 ]] && [[ $(($seconds - $elapsed)) -lt 60 ]] && quit=1
- # Check if the maximum number of jobs in parallel has been reached.
- [[ $running -ge $parallel_jobs ]] && break
+ # Start another job if we're not quitting for any reason and the maximum number of jobs
+ # in parallel has not yet been reached.
+ [[ $force_quit -eq 0 ]] && [[ $quit -eq 0 ]] && [[ $running -lt $parallel_jobs ]] && {
running=$(($running + 1))
-
- # Start another job, but don't pound on the system.
format
- sleep 2
- done
+ }
# Clean up and update status.
success_save=$success
@@ -514,8 +514,10 @@ while :; do
# Quit if we're done and there aren't any jobs left to wait for.
[[ $quit -ne 0 ]] || [[ $force_quit -ne 0 ]] && [[ $running -eq 0 ]] && break
- # Wait for awhile, unless we're killing everything or there are jobs to start.
- [[ $force_quit -eq 0 ]] && [[ $running -ge $parallel_jobs ]] && sleep 10
+ # Wait for awhile, unless we're killing everything or there are jobs to start. Always wait
+ # for a short period so we don't pound the system creating new jobs.
+ [[ $force_quit -eq 0 ]] && [[ $running -ge $parallel_jobs ]] && sleep 8
+ sleep 2
done
echo "$name: $success successful jobs, $failure failed jobs"
diff --git a/src/third_party/wiredtiger/test/format/t.c b/src/third_party/wiredtiger/test/format/t.c
index 47748d3efd2..11d3d48db32 100644
--- a/src/third_party/wiredtiger/test/format/t.c
+++ b/src/third_party/wiredtiger/test/format/t.c
@@ -159,6 +159,10 @@ main(int argc, char *argv[])
(void)testutil_set_progname(argv);
+ /* The monitoring program looks for this line in the log file, push it out quickly. */
+ printf("%s: process %" PRIdMAX " running\n", progname, (intmax_t)getpid());
+ fflush(stdout);
+
format_process_env();
/* Set values from the command line. */
@@ -256,8 +260,6 @@ main(int argc, char *argv[])
testutil_check(__wt_thread_str(g.tidbuf, sizeof(g.tidbuf)));
- printf("%s: process %" PRIdMAX " running\n", progname, (intmax_t)getpid());
- fflush(stdout);
while (++g.run_cnt <= g.c_runs || g.c_runs == 0) {
__wt_seconds(NULL, &start);
track("starting up", 0ULL, NULL);
diff --git a/src/third_party/wiredtiger/test/utility/misc.c b/src/third_party/wiredtiger/test/utility/misc.c
index ed54bed74b3..299df0a5118 100644
--- a/src/third_party/wiredtiger/test/utility/misc.c
+++ b/src/third_party/wiredtiger/test/utility/misc.c
@@ -61,7 +61,7 @@ testutil_die(int e, const char *fmt, ...)
if (e != 0)
fprintf(stderr, ": %s", wiredtiger_strerror(e));
fprintf(stderr, "\n");
- fprintf(stderr, "process aborting\n");
+ fprintf(stderr, "%s: process aborting\n", progname);
abort();
}