summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/test/format
diff options
context:
space:
mode:
Diffstat (limited to 'src/third_party/wiredtiger/test/format')
-rw-r--r--src/third_party/wiredtiger/test/format/config.c21
-rw-r--r--src/third_party/wiredtiger/test/format/config.h35
-rw-r--r--src/third_party/wiredtiger/test/format/config.sh2
-rw-r--r--src/third_party/wiredtiger/test/format/config_def.c354
-rw-r--r--src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-10384163
-rw-r--r--src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-11064229
-rw-r--r--src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-9751138
-rw-r--r--src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-9792160
-rwxr-xr-xsrc/third_party/wiredtiger/test/format/format.sh41
-rw-r--r--src/third_party/wiredtiger/test/format/wts.c2
10 files changed, 965 insertions, 180 deletions
diff --git a/src/third_party/wiredtiger/test/format/config.c b/src/third_party/wiredtiger/test/format/config.c
index bbff4a1ab17..40f8053afb8 100644
--- a/src/third_party/wiredtiger/test/format/config.c
+++ b/src/third_party/wiredtiger/test/format/config.c
@@ -256,8 +256,18 @@ config_table(TABLE *table, void *arg)
* direct I/O can be so slow the additional I/O for overflow items causes eviction to stall).
*/
if (GV(RUNS_IN_MEMORY) || GV(DISK_DIRECT_IO)) {
- if (!config_explicit(table, "runs.rows") && TV(RUNS_ROWS) > 1000000)
+ /*
+ * Always limit the row count if its greater that 1,000,000 and in memory wasn't explicitly
+ * set. Direct IO is always explicitly set, never limit the row count because the user has
+ * taken control.
+ */
+ if (GV(RUNS_IN_MEMORY) && TV(RUNS_ROWS) > WT_MILLION &&
+ config_explicit(NULL, "runs.in_memory")) {
+ WARN("limiting table%" PRIu32
+ ".runs.rows to 1,000,000 as runs.in_memory has been automatically enabled",
+ table->id)
config_single(table, "runs.rows=1000000", false);
+ }
if (!config_explicit(table, "btree.key_max"))
config_single(table, "btree.key_max=32", false);
if (!config_explicit(table, "btree.key_min"))
@@ -846,8 +856,15 @@ config_in_memory(void)
if (config_explicit(NULL, "ops.verify"))
return;
- if (!config_explicit(NULL, "runs.in_memory") && mmrand(NULL, 1, 20) == 1)
+ if (!config_explicit(NULL, "runs.in_memory") && mmrand(NULL, 1, 20) == 1) {
config_single(NULL, "runs.in_memory=1", false);
+ /* Use table[0] to access the global value (RUNS_ROWS is a table value). */
+ if ((tables[0]->v[V_TABLE_RUNS_ROWS].v) > WT_MILLION) {
+ WARN("%s",
+ "limiting runs.rows to 1,000,000 as runs.in_memory has been automatically enabled");
+ config_single(NULL, "runs.rows=1000000", true);
+ }
+ }
}
/*
diff --git a/src/third_party/wiredtiger/test/format/config.h b/src/third_party/wiredtiger/test/format/config.h
index 14fb612d31d..fc803cb4790 100644
--- a/src/third_party/wiredtiger/test/format/config.h
+++ b/src/third_party/wiredtiger/test/format/config.h
@@ -115,21 +115,22 @@ typedef struct {
#define V_GLOBAL_STRESS_CHECKPOINT 83
#define V_GLOBAL_STRESS_CHECKPOINT_RESERVED_TXNID_DELAY 84
#define V_GLOBAL_STRESS_CHECKPOINT_PREPARE 85
-#define V_GLOBAL_STRESS_FAILPOINT_HS_DELETE_KEY_FROM_TS 86
-#define V_GLOBAL_STRESS_HS_CHECKPOINT_DELAY 87
-#define V_GLOBAL_STRESS_HS_SEARCH 88
-#define V_GLOBAL_STRESS_HS_SWEEP 89
-#define V_GLOBAL_STRESS_SPLIT_1 90
-#define V_GLOBAL_STRESS_SPLIT_2 91
-#define V_GLOBAL_STRESS_SPLIT_3 92
-#define V_GLOBAL_STRESS_SPLIT_4 93
-#define V_GLOBAL_STRESS_SPLIT_5 94
-#define V_GLOBAL_STRESS_SPLIT_6 95
-#define V_GLOBAL_STRESS_SPLIT_7 96
-#define V_GLOBAL_TRANSACTION_IMPLICIT 97
-#define V_GLOBAL_TRANSACTION_TIMESTAMPS 98
-#define V_GLOBAL_WIREDTIGER_CONFIG 99
-#define V_GLOBAL_WIREDTIGER_RWLOCK 100
-#define V_GLOBAL_WIREDTIGER_LEAK_MEMORY 101
+#define V_GLOBAL_STRESS_FAILPOINT_EVICTION_FAIL_AFTER_RECONCILIATION 86
+#define V_GLOBAL_STRESS_FAILPOINT_HS_DELETE_KEY_FROM_TS 87
+#define V_GLOBAL_STRESS_HS_CHECKPOINT_DELAY 88
+#define V_GLOBAL_STRESS_HS_SEARCH 89
+#define V_GLOBAL_STRESS_HS_SWEEP 90
+#define V_GLOBAL_STRESS_SPLIT_1 91
+#define V_GLOBAL_STRESS_SPLIT_2 92
+#define V_GLOBAL_STRESS_SPLIT_3 93
+#define V_GLOBAL_STRESS_SPLIT_4 94
+#define V_GLOBAL_STRESS_SPLIT_5 95
+#define V_GLOBAL_STRESS_SPLIT_6 96
+#define V_GLOBAL_STRESS_SPLIT_7 97
+#define V_GLOBAL_TRANSACTION_IMPLICIT 98
+#define V_GLOBAL_TRANSACTION_TIMESTAMPS 99
+#define V_GLOBAL_WIREDTIGER_CONFIG 100
+#define V_GLOBAL_WIREDTIGER_RWLOCK 101
+#define V_GLOBAL_WIREDTIGER_LEAK_MEMORY 102
-#define V_ELEMENT_COUNT 102
+#define V_ELEMENT_COUNT 103
diff --git a/src/third_party/wiredtiger/test/format/config.sh b/src/third_party/wiredtiger/test/format/config.sh
index 23af56e2724..97aaacbe88d 100644
--- a/src/third_party/wiredtiger/test/format/config.sh
+++ b/src/third_party/wiredtiger/test/format/config.sh
@@ -248,6 +248,8 @@ CONFIG configuration_list[] = {
{"stress.checkpoint_prepare", "stress checkpoint prepare", C_BOOL, 2, 0, 0}
+{"stress.failpoint_eviction_fail_after_reconciliation", "stress failpoint eviction fail after reconciliation", C_BOOL, 30, 0, 0}
+
{"stress.failpoint_hs_delete_key_from_ts", "stress failpoint history store delete key from ts", C_BOOL, 30, 0, 0}
{"stress.hs_checkpoint_delay", "stress history store checkpoint delay", C_BOOL, 2, 0, 0}
diff --git a/src/third_party/wiredtiger/test/format/config_def.c b/src/third_party/wiredtiger/test/format/config_def.c
index 78613c1c1ab..628cddff6a8 100644
--- a/src/third_party/wiredtiger/test/format/config_def.c
+++ b/src/third_party/wiredtiger/test/format/config_def.c
@@ -2,32 +2,36 @@
#include "format.h"
-CONFIG configuration_list[] = {{"assert.read_timestamp", "assert read_timestamp", C_BOOL, 2, 0, 0,
- V_GLOBAL_ASSERT_READ_TIMESTAMP},
+CONFIG configuration_list[] = {
+ {"assert.read_timestamp", "assert read_timestamp",
+ C_BOOL, 2, 0, 0, V_GLOBAL_ASSERT_READ_TIMESTAMP},
- {"assert.write_timestamp", "set write_timestamp_usage and assert write_timestamp", C_BOOL, 2, 0,
- 0, V_GLOBAL_ASSERT_WRITE_TIMESTAMP},
+ {"assert.write_timestamp", "set write_timestamp_usage and assert write_timestamp",
+ C_BOOL, 2, 0, 0, V_GLOBAL_ASSERT_WRITE_TIMESTAMP},
- {"backup", "configure backups", C_BOOL, 20, 0, 0, V_GLOBAL_BACKUP},
+ {"backup", "configure backups",
+ C_BOOL, 20, 0, 0, V_GLOBAL_BACKUP},
- {"backup.incremental", "backup type (off | block | log)", C_IGNORE | C_STRING, 0, 0, 0,
- V_GLOBAL_BACKUP_INCREMENTAL},
+ {"backup.incremental", "backup type (off | block | log)",
+ C_IGNORE | C_STRING, 0, 0, 0, V_GLOBAL_BACKUP_INCREMENTAL},
- {"backup.incr_granularity", "incremental backup block granularity (KB)", 0x0, 4, 16384, 16384,
- V_GLOBAL_BACKUP_INCR_GRANULARITY},
+ {"backup.incr_granularity", "incremental backup block granularity (KB)",
+ 0x0, 4, 16384, 16384, V_GLOBAL_BACKUP_INCR_GRANULARITY},
- {"block_cache", "enable the block cache", C_BOOL, 10, 0, 0, V_GLOBAL_BLOCK_CACHE},
+ {"block_cache", "enable the block cache",
+ C_BOOL, 10, 0, 0, V_GLOBAL_BLOCK_CACHE},
- {"block_cache.cache_on_checkpoint", "block cache: cache checkpoint writes", C_BOOL, 30, 0, 0,
- V_GLOBAL_BLOCK_CACHE_CACHE_ON_CHECKPOINT},
+ {"block_cache.cache_on_checkpoint", "block cache: cache checkpoint writes",
+ C_BOOL, 30, 0, 0, V_GLOBAL_BLOCK_CACHE_CACHE_ON_CHECKPOINT},
- {"block_cache.cache_on_writes", "block cache: populate the cache on writes", C_BOOL, 60, 0, 0,
- V_GLOBAL_BLOCK_CACHE_CACHE_ON_WRITES},
+ {"block_cache.cache_on_writes", "block cache: populate the cache on writes",
+ C_BOOL, 60, 0, 0, V_GLOBAL_BLOCK_CACHE_CACHE_ON_WRITES},
- {"block_cache.size", "block cache size (MB)", 0x0, 1, 100, 100 * 1024, V_GLOBAL_BLOCK_CACHE_SIZE},
+ {"block_cache.size", "block cache size (MB)",
+ 0x0, 1, 100, 100 * 1024, V_GLOBAL_BLOCK_CACHE_SIZE},
- {"btree.bitcnt", "fixed-length column-store object size (number of bits)", C_TABLE | C_TYPE_FIX,
- 1, 8, 8, V_TABLE_BTREE_BITCNT},
+ {"btree.bitcnt", "fixed-length column-store object size (number of bits)",
+ C_TABLE | C_TYPE_FIX, 1, 8, 8, V_TABLE_BTREE_BITCNT},
{"btree.compression", "data compression (off | lz4 | snappy | zlib | zstd)",
C_IGNORE | C_STRING | C_TABLE, 0, 0, 0, V_TABLE_BTREE_COMPRESSION},
@@ -38,244 +42,280 @@ CONFIG configuration_list[] = {{"assert.read_timestamp", "assert read_timestamp"
{"btree.huffman_value", "configure huffman encoded values",
C_BOOL | C_TABLE | C_TYPE_ROW | C_TYPE_VAR, 20, 0, 0, V_TABLE_BTREE_HUFFMAN_VALUE},
- {"btree.internal_key_truncation", "truncate internal keys", C_BOOL | C_TABLE, 95, 0, 0,
- V_TABLE_BTREE_INTERNAL_KEY_TRUNCATION},
+ {"btree.internal_key_truncation", "truncate internal keys",
+ C_BOOL | C_TABLE, 95, 0, 0, V_TABLE_BTREE_INTERNAL_KEY_TRUNCATION},
- {"btree.internal_page_max", "btree internal node maximum size", C_TABLE, 9, 17, 27,
- V_TABLE_BTREE_INTERNAL_PAGE_MAX},
+ {"btree.internal_page_max", "btree internal node maximum size",
+ C_TABLE, 9, 17, 27, V_TABLE_BTREE_INTERNAL_PAGE_MAX},
- {"btree.key_max", "maximum key size", C_TABLE | C_TYPE_ROW, 20, 128, MEGABYTE(10),
- V_TABLE_BTREE_KEY_MAX},
+ {"btree.key_max", "maximum key size",
+ C_TABLE | C_TYPE_ROW, 20, 128, MEGABYTE(10), V_TABLE_BTREE_KEY_MAX},
- {"btree.key_min", "minimum key size", C_TABLE | C_TYPE_ROW, KEY_LEN_CONFIG_MIN, 32, 256,
- V_TABLE_BTREE_KEY_MIN},
+ {"btree.key_min", "minimum key size",
+ C_TABLE | C_TYPE_ROW, KEY_LEN_CONFIG_MIN, 32, 256, V_TABLE_BTREE_KEY_MIN},
- {"btree.leaf_page_max", "btree leaf node maximum size", C_TABLE, 9, 17, 27,
- V_TABLE_BTREE_LEAF_PAGE_MAX},
+ {"btree.leaf_page_max", "btree leaf node maximum size",
+ C_TABLE, 9, 17, 27, V_TABLE_BTREE_LEAF_PAGE_MAX},
- {"btree.memory_page_max", "maximum cache page size", C_TABLE, 1, 10, 128,
- V_TABLE_BTREE_MEMORY_PAGE_MAX},
+ {"btree.memory_page_max", "maximum cache page size",
+ C_TABLE, 1, 10, 128, V_TABLE_BTREE_MEMORY_PAGE_MAX},
- {"btree.prefix_len", "common key prefix", C_TABLE | C_TYPE_ROW | C_ZERO_NOTSET,
- PREFIX_LEN_CONFIG_MIN, PREFIX_LEN_CONFIG_MAX, PREFIX_LEN_CONFIG_MAX, V_TABLE_BTREE_PREFIX_LEN},
+ {"btree.prefix_len", "common key prefix",
+ C_TABLE | C_TYPE_ROW | C_ZERO_NOTSET, PREFIX_LEN_CONFIG_MIN, PREFIX_LEN_CONFIG_MAX, PREFIX_LEN_CONFIG_MAX, V_TABLE_BTREE_PREFIX_LEN},
- {"btree.prefix_compression", "configure prefix compressed keys", C_BOOL | C_TABLE | C_TYPE_ROW,
- 80, 0, 0, V_TABLE_BTREE_PREFIX_COMPRESSION},
+ {"btree.prefix_compression", "configure prefix compressed keys",
+ C_BOOL | C_TABLE | C_TYPE_ROW, 80, 0, 0, V_TABLE_BTREE_PREFIX_COMPRESSION},
{"btree.prefix_compression_min", "minimum gain before prefix compression is used (bytes)",
C_TABLE | C_TYPE_ROW, 0, 8, 256, V_TABLE_BTREE_PREFIX_COMPRESSION_MIN},
- {"btree.repeat_data_pct", "duplicate values (percentage)", C_TABLE | C_TYPE_VAR, 0, 90, 90,
- V_TABLE_BTREE_REPEAT_DATA_PCT},
+ {"btree.repeat_data_pct", "duplicate values (percentage)",
+ C_TABLE | C_TYPE_VAR, 0, 90, 90, V_TABLE_BTREE_REPEAT_DATA_PCT},
- {"btree.reverse", "reverse order collation", C_BOOL | C_TABLE | C_TYPE_ROW, 10, 0, 0,
- V_TABLE_BTREE_REVERSE},
+ {"btree.reverse", "reverse order collation",
+ C_BOOL | C_TABLE | C_TYPE_ROW, 10, 0, 0, V_TABLE_BTREE_REVERSE},
- {"btree.split_pct", "page split size as a percentage of the maximum page size", C_TABLE, 50, 100,
- 100, V_TABLE_BTREE_SPLIT_PCT},
+ {"btree.split_pct", "page split size as a percentage of the maximum page size",
+ C_TABLE, 50, 100, 100, V_TABLE_BTREE_SPLIT_PCT},
- {"btree.value_max", "maximum value size", C_TABLE | C_TYPE_ROW | C_TYPE_VAR, 32, 4096,
- MEGABYTE(10), V_TABLE_BTREE_VALUE_MAX},
+ {"btree.value_max", "maximum value size",
+ C_TABLE | C_TYPE_ROW | C_TYPE_VAR, 32, 4096, MEGABYTE(10), V_TABLE_BTREE_VALUE_MAX},
- {"btree.value_min", "minimum value size", C_TABLE | C_TYPE_ROW | C_TYPE_VAR, 0, 20, 4096,
- V_TABLE_BTREE_VALUE_MIN},
+ {"btree.value_min", "minimum value size",
+ C_TABLE | C_TYPE_ROW | C_TYPE_VAR, 0, 20, 4096, V_TABLE_BTREE_VALUE_MIN},
- {"cache", "cache size (MB)", 0x0, 1, 100, 100 * 1024, V_GLOBAL_CACHE},
+ {"cache", "cache size (MB)",
+ 0x0, 1, 100, 100 * 1024, V_GLOBAL_CACHE},
- {"cache.evict_max", "maximum number of eviction workers", 0x0, 0, 5, 100,
- V_GLOBAL_CACHE_EVICT_MAX},
+ {"cache.evict_max", "maximum number of eviction workers",
+ 0x0, 0, 5, 100, V_GLOBAL_CACHE_EVICT_MAX},
- {"cache.minimum", "minimum cache size (MB)", C_IGNORE, 0, 0, 100 * 1024, V_GLOBAL_CACHE_MINIMUM},
+ {"cache.minimum", "minimum cache size (MB)",
+ C_IGNORE, 0, 0, 100 * 1024, V_GLOBAL_CACHE_MINIMUM},
- {"checkpoint", "checkpoint type (on | off | wiredtiger)", C_IGNORE | C_STRING, 0, 0, 0,
- V_GLOBAL_CHECKPOINT},
+ {"checkpoint", "checkpoint type (on | off | wiredtiger)",
+ C_IGNORE | C_STRING, 0, 0, 0, V_GLOBAL_CHECKPOINT},
- {"checkpoint.log_size", "MB of log to wait if wiredtiger checkpoints configured", 0x0, 20, 200,
- 1024, V_GLOBAL_CHECKPOINT_LOG_SIZE},
+ {"checkpoint.log_size", "MB of log to wait if wiredtiger checkpoints configured",
+ 0x0, 20, 200, 1024, V_GLOBAL_CHECKPOINT_LOG_SIZE},
- {"checkpoint.wait", "seconds to wait if wiredtiger checkpoints configured", 0x0, 5, 100, 3600,
- V_GLOBAL_CHECKPOINT_WAIT},
+ {"checkpoint.wait", "seconds to wait if wiredtiger checkpoints configured",
+ 0x0, 5, 100, 3600, V_GLOBAL_CHECKPOINT_WAIT},
{"disk.checksum", "checksum type (on | off | uncompressed | unencrypted)",
C_IGNORE | C_STRING | C_TABLE, 0, 0, 0, V_TABLE_DISK_CHECKSUM},
- {"disk.data_extend", "configure data file extension", C_BOOL, 5, 0, 0, V_GLOBAL_DISK_DATA_EXTEND},
+ {"disk.data_extend", "configure data file extension",
+ C_BOOL, 5, 0, 0, V_GLOBAL_DISK_DATA_EXTEND},
- {"disk.direct_io", "configure direct I/O for data objects", C_BOOL | C_IGNORE, 0, 0, 1,
- V_GLOBAL_DISK_DIRECT_IO},
+ {"disk.direct_io", "configure direct I/O for data objects",
+ C_BOOL | C_IGNORE, 0, 0, 1, V_GLOBAL_DISK_DIRECT_IO},
- {"disk.encryption", "encryption type (off | rotn-7)", C_IGNORE | C_STRING, 0, 0, 0,
- V_GLOBAL_DISK_ENCRYPTION},
+ {"disk.encryption", "encryption type (off | rotn-7)",
+ C_IGNORE | C_STRING, 0, 0, 0, V_GLOBAL_DISK_ENCRYPTION},
- {"disk.firstfit", "configure first-fit allocation", C_BOOL | C_TABLE, 10, 0, 0,
- V_TABLE_DISK_FIRSTFIT},
+ {"disk.firstfit", "configure first-fit allocation",
+ C_BOOL | C_TABLE, 10, 0, 0, V_TABLE_DISK_FIRSTFIT},
- {"disk.mmap", "configure mmap operations (reads only)", C_BOOL, 90, 0, 0, V_GLOBAL_DISK_MMAP},
+ {"disk.mmap", "configure mmap operations (reads only)",
+ C_BOOL, 90, 0, 0, V_GLOBAL_DISK_MMAP},
- {"disk.mmap_all", "configure mmap operations (read and write)", C_BOOL, 5, 0, 0,
- V_GLOBAL_DISK_MMAP_ALL},
+ {"disk.mmap_all", "configure mmap operations (read and write)",
+ C_BOOL, 5, 0, 0, V_GLOBAL_DISK_MMAP_ALL},
- {"format.abort", "drop core during timed run", C_BOOL, 0, 0, 0, V_GLOBAL_FORMAT_ABORT},
+ {"format.abort", "drop core during timed run",
+ C_BOOL, 0, 0, 0, V_GLOBAL_FORMAT_ABORT},
- {"format.independent_thread_rng", "configure independent thread RNG space", C_BOOL, 75, 0, 0,
- V_GLOBAL_FORMAT_INDEPENDENT_THREAD_RNG},
+ {"format.independent_thread_rng", "configure independent thread RNG space",
+ C_BOOL, 75, 0, 0, V_GLOBAL_FORMAT_INDEPENDENT_THREAD_RNG},
- {"format.major_timeout", "long-running operations timeout (minutes)", C_IGNORE, 0, 0, 1000,
- V_GLOBAL_FORMAT_MAJOR_TIMEOUT},
+ {"format.major_timeout", "long-running operations timeout (minutes)",
+ C_IGNORE, 0, 0, 1000, V_GLOBAL_FORMAT_MAJOR_TIMEOUT},
- /*
- * 0%
- * FIXME-WT-7418: Temporarily disable import until WT_ROLLBACK error and wt_copy_and_sync error is
- * fixed. It should be (C_BOOL, 20, 0, 0).
- */
- {"import", "import table from newly created database", C_BOOL, 0, 0, 0, V_GLOBAL_IMPORT},
+/*
+ * 0%
+ * FIXME-WT-7418: Temporarily disable import until WT_ROLLBACK error and wt_copy_and_sync error is
+ * fixed. It should be (C_BOOL, 20, 0, 0).
+ */
+ {"import", "import table from newly created database",
+ C_BOOL, 0, 0, 0, V_GLOBAL_IMPORT},
- {"logging", "configure logging", C_BOOL, 50, 0, 0, V_GLOBAL_LOGGING},
+ {"logging", "configure logging",
+ C_BOOL, 50, 0, 0, V_GLOBAL_LOGGING},
{"logging.compression", "logging compression (off | lz4 | snappy | zlib | zstd)",
C_IGNORE | C_STRING, 0, 0, 0, V_GLOBAL_LOGGING_COMPRESSION},
- {"logging.file_max", "maximum log file size (KB)", 0x0, 100, 512000, 2097152,
- V_GLOBAL_LOGGING_FILE_MAX},
+ {"logging.file_max", "maximum log file size (KB)",
+ 0x0, 100, 512000, 2097152, V_GLOBAL_LOGGING_FILE_MAX},
- {"logging.prealloc", "configure log file pre-allocation", C_BOOL, 50, 0, 0,
- V_GLOBAL_LOGGING_PREALLOC},
+ {"logging.prealloc", "configure log file pre-allocation",
+ C_BOOL, 50, 0, 0, V_GLOBAL_LOGGING_PREALLOC},
- {"logging.remove", "configure log file removal", C_BOOL, 50, 0, 0, V_GLOBAL_LOGGING_REMOVE},
+ {"logging.remove", "configure log file removal",
+ C_BOOL, 50, 0, 0, V_GLOBAL_LOGGING_REMOVE},
- {"lsm.auto_throttle", "throttle LSM inserts", C_BOOL | C_TABLE | C_TYPE_LSM, 90, 0, 0,
- V_TABLE_LSM_AUTO_THROTTLE},
+ {"lsm.auto_throttle", "throttle LSM inserts",
+ C_BOOL | C_TABLE | C_TYPE_LSM, 90, 0, 0, V_TABLE_LSM_AUTO_THROTTLE},
- {"lsm.bloom", "configure bloom filters", C_BOOL | C_TABLE | C_TYPE_LSM, 95, 0, 0,
- V_TABLE_LSM_BLOOM},
+ {"lsm.bloom", "configure bloom filters",
+ C_BOOL | C_TABLE | C_TYPE_LSM, 95, 0, 0, V_TABLE_LSM_BLOOM},
- {"lsm.bloom_bit_count", "number of bits per item for bloom filters", C_TABLE | C_TYPE_LSM, 4, 64,
- 1000, V_TABLE_LSM_BLOOM_BIT_COUNT},
+ {"lsm.bloom_bit_count", "number of bits per item for bloom filters",
+ C_TABLE | C_TYPE_LSM, 4, 64, 1000, V_TABLE_LSM_BLOOM_BIT_COUNT},
- {"lsm.bloom_hash_count", "number of hash values per item for bloom filters", C_TABLE | C_TYPE_LSM,
- 4, 32, 100, V_TABLE_LSM_BLOOM_HASH_COUNT},
+ {"lsm.bloom_hash_count", "number of hash values per item for bloom filters",
+ C_TABLE | C_TYPE_LSM, 4, 32, 100, V_TABLE_LSM_BLOOM_HASH_COUNT},
- {"lsm.bloom_oldest", "configure bloom_oldest=true", C_BOOL | C_TABLE | C_TYPE_LSM, 10, 0, 0,
- V_TABLE_LSM_BLOOM_OLDEST},
+ {"lsm.bloom_oldest", "configure bloom_oldest=true",
+ C_BOOL | C_TABLE | C_TYPE_LSM, 10, 0, 0, V_TABLE_LSM_BLOOM_OLDEST},
- {"lsm.chunk_size", "LSM chunk size (MB)", C_TABLE | C_TYPE_LSM, 1, 10, 100,
- V_TABLE_LSM_CHUNK_SIZE},
+ {"lsm.chunk_size", "LSM chunk size (MB)",
+ C_TABLE | C_TYPE_LSM, 1, 10, 100, V_TABLE_LSM_CHUNK_SIZE},
{"lsm.merge_max", "maximum number of chunks to include in an LSM merge operation",
C_TABLE | C_TYPE_LSM, 4, 20, 100, V_TABLE_LSM_MERGE_MAX},
- {"lsm.worker_threads", "number of LSM worker threads", C_TYPE_LSM, 3, 4, 20,
- V_GLOBAL_LSM_WORKER_THREADS},
+ {"lsm.worker_threads", "number of LSM worker threads",
+ C_TYPE_LSM, 3, 4, 20, V_GLOBAL_LSM_WORKER_THREADS},
- {"ops.alter", "configure table alterations", C_BOOL, 10, 0, 0, V_GLOBAL_OPS_ALTER},
+ {"ops.alter", "configure table alterations",
+ C_BOOL, 10, 0, 0, V_GLOBAL_OPS_ALTER},
- {"ops.compaction", "configure compaction", C_BOOL, 10, 0, 0, V_GLOBAL_OPS_COMPACTION},
+ {"ops.compaction", "configure compaction",
+ C_BOOL, 10, 0, 0, V_GLOBAL_OPS_COMPACTION},
- {"ops.hs_cursor", "configure history store cursor reads", C_BOOL, 50, 0, 0,
- V_GLOBAL_OPS_HS_CURSOR},
+ {"ops.hs_cursor", "configure history store cursor reads",
+ C_BOOL, 50, 0, 0, V_GLOBAL_OPS_HS_CURSOR},
- {"ops.pct.delete", "delete operations (percentage)", C_IGNORE | C_TABLE, 0, 0, 100,
- V_TABLE_OPS_PCT_DELETE},
+ {"ops.pct.delete", "delete operations (percentage)",
+ C_IGNORE | C_TABLE, 0, 0, 100, V_TABLE_OPS_PCT_DELETE},
- {"ops.pct.insert", "insert operations (percentage)", C_IGNORE | C_TABLE, 0, 0, 100,
- V_TABLE_OPS_PCT_INSERT},
+ {"ops.pct.insert", "insert operations (percentage)",
+ C_IGNORE | C_TABLE, 0, 0, 100, V_TABLE_OPS_PCT_INSERT},
- {"ops.pct.modify", "modify operations (percentage)", C_IGNORE | C_TABLE, 0, 0, 100,
- V_TABLE_OPS_PCT_MODIFY},
+ {"ops.pct.modify", "modify operations (percentage)",
+ C_IGNORE | C_TABLE, 0, 0, 100, V_TABLE_OPS_PCT_MODIFY},
- {"ops.pct.read", "read operations (percentage)", C_IGNORE | C_TABLE, 0, 0, 100,
- V_TABLE_OPS_PCT_READ},
+ {"ops.pct.read", "read operations (percentage)",
+ C_IGNORE | C_TABLE, 0, 0, 100, V_TABLE_OPS_PCT_READ},
- {"ops.pct.write", "update operations (percentage)", C_IGNORE | C_TABLE, 0, 0, 100,
- V_TABLE_OPS_PCT_WRITE},
+ {"ops.pct.write", "update operations (percentage)",
+ C_IGNORE | C_TABLE, 0, 0, 100, V_TABLE_OPS_PCT_WRITE},
- {"ops.prepare", "configure transaction prepare", C_BOOL, 5, 0, 0, V_GLOBAL_OPS_PREPARE},
+ {"ops.prepare", "configure transaction prepare",
+ C_BOOL, 5, 0, 0, V_GLOBAL_OPS_PREPARE},
- {"ops.random_cursor", "configure random cursor reads", C_BOOL, 10, 0, 0,
- V_GLOBAL_OPS_RANDOM_CURSOR},
+ {"ops.random_cursor", "configure random cursor reads",
+ C_BOOL, 10, 0, 0, V_GLOBAL_OPS_RANDOM_CURSOR},
- {"ops.salvage", "configure salvage", C_BOOL, 100, 1, 0, V_GLOBAL_OPS_SALVAGE},
+ {"ops.salvage", "configure salvage",
+ C_BOOL, 100, 1, 0, V_GLOBAL_OPS_SALVAGE},
- {"ops.truncate", "configure truncation", C_BOOL | C_TABLE, 100, 0, 0, V_TABLE_OPS_TRUNCATE},
+ {"ops.truncate", "configure truncation",
+ C_BOOL | C_TABLE, 100, 0, 0, V_TABLE_OPS_TRUNCATE},
- {"ops.verify", "configure verify", C_BOOL, 100, 1, 0, V_GLOBAL_OPS_VERIFY},
+ {"ops.verify", "configure verify",
+ C_BOOL, 100, 1, 0, V_GLOBAL_OPS_VERIFY},
- {"quiet", "quiet run (same as -q)", C_BOOL | C_IGNORE, 0, 0, 1, V_GLOBAL_QUIET},
+ {"quiet", "quiet run (same as -q)",
+ C_BOOL | C_IGNORE, 0, 0, 1, V_GLOBAL_QUIET},
- {"runs.in_memory", "configure in-memory", C_BOOL | C_IGNORE, 0, 0, 1, V_GLOBAL_RUNS_IN_MEMORY},
+ {"runs.in_memory", "configure in-memory",
+ C_BOOL | C_IGNORE, 0, 0, 1, V_GLOBAL_RUNS_IN_MEMORY},
- {"runs.ops", "operations per run", 0x0, 0, M(2), M(100), V_GLOBAL_RUNS_OPS},
+ {"runs.ops", "operations per run",
+ 0x0, 0, M(2), M(100), V_GLOBAL_RUNS_OPS},
- {"runs.rows", "number of rows", C_TABLE, 10, M(1), M(100), V_TABLE_RUNS_ROWS},
+ {"runs.rows", "number of rows",
+ C_TABLE, 10, M(1), M(100), V_TABLE_RUNS_ROWS},
- {"runs.source", "data source type (file | lsm | table)", C_IGNORE | C_STRING | C_TABLE, 0, 0, 0,
- V_TABLE_RUNS_SOURCE},
+ {"runs.source", "data source type (file | lsm | table)",
+ C_IGNORE | C_STRING | C_TABLE, 0, 0, 0, V_TABLE_RUNS_SOURCE},
- {"runs.tables", "number of tables", 0x0, 1, 32, V_MAX_TABLES_CONFIG, V_GLOBAL_RUNS_TABLES},
+ {"runs.tables", "number of tables",
+ 0x0, 1, 32, V_MAX_TABLES_CONFIG, V_GLOBAL_RUNS_TABLES},
- {"runs.threads", "number of worker threads", 0x0, 1, 32, 128, V_GLOBAL_RUNS_THREADS},
+ {"runs.threads", "number of worker threads",
+ 0x0, 1, 32, 128, V_GLOBAL_RUNS_THREADS},
- {"runs.timer", "run time (minutes)", C_IGNORE, 0, 0, UINT_MAX, V_GLOBAL_RUNS_TIMER},
+ {"runs.timer", "run time (minutes)",
+ C_IGNORE, 0, 0, UINT_MAX, V_GLOBAL_RUNS_TIMER},
- {"runs.type", "object type (fix | row | var)", C_IGNORE | C_STRING | C_TABLE, 0, 0, 0,
- V_TABLE_RUNS_TYPE},
+ {"runs.type", "object type (fix | row | var)",
+ C_IGNORE | C_STRING | C_TABLE, 0, 0, 0, V_TABLE_RUNS_TYPE},
- {"runs.verify_failure_dump", "configure page dump on repeatable read error", C_BOOL | C_IGNORE, 0,
- 0, 1, V_GLOBAL_RUNS_VERIFY_FAILURE_DUMP},
+ {"runs.verify_failure_dump", "configure page dump on repeatable read error",
+ C_BOOL | C_IGNORE, 0, 0, 1, V_GLOBAL_RUNS_VERIFY_FAILURE_DUMP},
- {"statistics", "configure statistics", C_BOOL, 20, 0, 0, V_GLOBAL_STATISTICS},
+ {"statistics", "configure statistics",
+ C_BOOL, 20, 0, 0, V_GLOBAL_STATISTICS},
- {"statistics.server", "configure statistics server thread", C_BOOL, 5, 0, 0,
- V_GLOBAL_STATISTICS_SERVER},
+ {"statistics.server", "configure statistics server thread",
+ C_BOOL, 5, 0, 0, V_GLOBAL_STATISTICS_SERVER},
- {"stress.aggressive_sweep", "stress aggressive sweep", C_BOOL, 2, 0, 0,
- V_GLOBAL_STRESS_AGGRESSIVE_SWEEP},
+ {"stress.aggressive_sweep", "stress aggressive sweep",
+ C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_AGGRESSIVE_SWEEP},
- {"stress.checkpoint", "stress checkpoints", C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_CHECKPOINT},
+ {"stress.checkpoint", "stress checkpoints",
+ C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_CHECKPOINT},
{"stress.checkpoint_reserved_txnid_delay", "stress checkpoint invisible transaction id delay",
C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_CHECKPOINT_RESERVED_TXNID_DELAY},
- {"stress.checkpoint_prepare", "stress checkpoint prepare", C_BOOL, 2, 0, 0,
- V_GLOBAL_STRESS_CHECKPOINT_PREPARE},
+ {"stress.checkpoint_prepare", "stress checkpoint prepare",
+ C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_CHECKPOINT_PREPARE},
+
+ {"stress.failpoint_eviction_fail_after_reconciliation", "stress failpoint eviction fail after reconciliation",
+ C_BOOL, 30, 0, 0, V_GLOBAL_STRESS_FAILPOINT_EVICTION_FAIL_AFTER_RECONCILIATION},
{"stress.failpoint_hs_delete_key_from_ts", "stress failpoint history store delete key from ts",
C_BOOL, 30, 0, 0, V_GLOBAL_STRESS_FAILPOINT_HS_DELETE_KEY_FROM_TS},
- {"stress.hs_checkpoint_delay", "stress history store checkpoint delay", C_BOOL, 2, 0, 0,
- V_GLOBAL_STRESS_HS_CHECKPOINT_DELAY},
+ {"stress.hs_checkpoint_delay", "stress history store checkpoint delay",
+ C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_HS_CHECKPOINT_DELAY},
- {"stress.hs_search", "stress history store search", C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_HS_SEARCH},
+ {"stress.hs_search", "stress history store search",
+ C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_HS_SEARCH},
- {"stress.hs_sweep", "stress history store sweep", C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_HS_SWEEP},
+ {"stress.hs_sweep", "stress history store sweep",
+ C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_HS_SWEEP},
- {"stress.split_1", "stress splits (#1)", C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_1},
+ {"stress.split_1", "stress splits (#1)",
+ C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_1},
- {"stress.split_2", "stress splits (#2)", C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_2},
+ {"stress.split_2", "stress splits (#2)",
+ C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_2},
- {"stress.split_3", "stress splits (#3)", C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_3},
+ {"stress.split_3", "stress splits (#3)",
+ C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_3},
- {"stress.split_4", "stress splits (#4)", C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_4},
+ {"stress.split_4", "stress splits (#4)",
+ C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_4},
- {"stress.split_5", "stress splits (#5)", C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_5},
+ {"stress.split_5", "stress splits (#5)",
+ C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_5},
- {"stress.split_6", "stress splits (#6)", C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_6},
+ {"stress.split_6", "stress splits (#6)",
+ C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_6},
- {"stress.split_7", "stress splits (#7)", C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_7},
+ {"stress.split_7", "stress splits (#7)",
+ C_BOOL, 2, 0, 0, V_GLOBAL_STRESS_SPLIT_7},
- {"transaction.implicit", "implicit, without timestamps, transactions (percentage)", 0, 0, 100,
- 100, V_GLOBAL_TRANSACTION_IMPLICIT},
+ {"transaction.implicit", "implicit, without timestamps, transactions (percentage)",
+ 0, 0, 100, 100, V_GLOBAL_TRANSACTION_IMPLICIT},
- {"transaction.timestamps", "all transactions (or none), have timestamps", C_BOOL, 80, 0, 0,
- V_GLOBAL_TRANSACTION_TIMESTAMPS},
+ {"transaction.timestamps", "all transactions (or none), have timestamps",
+ C_BOOL, 80, 0, 0, V_GLOBAL_TRANSACTION_TIMESTAMPS},
- {"wiredtiger.config", "wiredtiger_open API configuration string", C_IGNORE | C_STRING, 0, 0, 0,
- V_GLOBAL_WIREDTIGER_CONFIG},
+ {"wiredtiger.config", "wiredtiger_open API configuration string",
+ C_IGNORE | C_STRING, 0, 0, 0, V_GLOBAL_WIREDTIGER_CONFIG},
- {"wiredtiger.rwlock", "configure wiredtiger read/write mutexes", C_BOOL, 80, 0, 0,
- V_GLOBAL_WIREDTIGER_RWLOCK},
+ {"wiredtiger.rwlock", "configure wiredtiger read/write mutexes",
+ C_BOOL, 80, 0, 0, V_GLOBAL_WIREDTIGER_RWLOCK},
- {"wiredtiger.leak_memory", "leak memory on wiredtiger shutdown", C_BOOL, 0, 0, 0,
- V_GLOBAL_WIREDTIGER_LEAK_MEMORY},
+ {"wiredtiger.leak_memory", "leak memory on wiredtiger shutdown",
+ C_BOOL, 0, 0, 0, V_GLOBAL_WIREDTIGER_LEAK_MEMORY},
- {NULL, NULL, 0x0, 0, 0, 0, 0}};
+ {NULL, NULL, 0x0, 0, 0, 0, 0}
+};
diff --git a/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-10384 b/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-10384
new file mode 100644
index 00000000000..9ce716f3524
--- /dev/null
+++ b/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-10384
@@ -0,0 +1,163 @@
+############################################
+# RUN PARAMETERS: V3
+############################################
+assert.read_timestamp=0
+backup=1
+backup.incremental=block
+backup.incr_granularity=16384
+block_cache=1
+block_cache.cache_on_checkpoint=0
+block_cache.cache_on_writes=0
+block_cache.size=26
+btree.huffman_value=0
+buffer_alignment=0
+cache=128
+cache.evict_max=3
+cache.minimum=20
+checkpoint=on
+checkpoint.log_size=117
+checkpoint.wait=25
+debug.realloc_exact=0
+debug.realloc_malloc=0
+disk.data_extend=0
+disk.direct_io=0
+disk.encryption=none
+disk.mmap=1
+disk.mmap_all=0
+format.abort=0
+format.independent_thread_rng=1
+format.major_timeout=0
+import=0
+logging=0
+logging.compression=none
+logging.file_max=393645
+logging.prealloc=1
+logging.remove=1
+ops.alter=0
+ops.compaction=0
+ops.hs_cursor=0
+ops.bound_cursor=0
+ops.prepare=0
+ops.random_cursor=0
+ops.salvage=0
+ops.verify=1
+quiet=1
+runs.in_memory=0
+runs.ops=0
+runs.rows=1000000
+runs.tables=3
+runs.threads=4
+runs.timer=11
+runs.verify_failure_dump=0
+statistics.mode=all
+statistics_log.sources=off
+stress.aggressive_sweep=0
+stress.checkpoint=0
+stress.checkpoint_evict_page=0
+stress.checkpoint_prepare=0
+stress.evict_reposition=0
+stress.failpoint_eviction_fail_after_reconciliation=0
+stress.failpoint_hs_delete_key_from_ts=0
+stress.hs_checkpoint_delay=0
+stress.hs_search=0
+stress.hs_sweep=0
+stress.sleep_before_read_overflow_onpage=0
+stress.split_1=1
+stress.split_2=1
+stress.split_3=1
+stress.split_4=0
+stress.split_5=0
+stress.split_6=0
+stress.split_7=1
+transaction.implicit=0
+transaction.timestamps=1
+wiredtiger.config=off
+wiredtiger.rwlock=1
+wiredtiger.leak_memory=0
+############################################
+# TABLE PARAMETERS: table 1
+############################################
+table1.btree.compression=snappy
+table1.btree.dictionary=0
+table1.btree.internal_key_truncation=1
+table1.btree.internal_page_max=15
+table1.btree.key_max=95
+table1.btree.key_min=18
+table1.btree.leaf_page_max=10
+table1.btree.memory_page_max=7
+table1.btree.prefix_len=0
+table1.btree.prefix_compression=0
+table1.btree.prefix_compression_min=1
+table1.btree.reverse=0
+table1.btree.split_pct=81
+table1.btree.value_max=3914
+table1.btree.value_min=4
+table1.disk.checksum=on
+table1.disk.firstfit=0
+table1.ops.pct.delete=35
+table1.ops.pct.insert=9
+table1.ops.pct.modify=18
+table1.ops.pct.read=36
+table1.ops.pct.write=2
+table1.ops.truncate=1
+table1.runs.mirror=1
+table1.runs.source=table
+table1.runs.type=row-store
+############################################
+# TABLE PARAMETERS: table 2
+############################################
+table2.btree.compression=zlib
+table2.btree.dictionary=0
+table2.btree.internal_key_truncation=1
+table2.btree.internal_page_max=9
+table2.btree.key_max=126
+table2.btree.key_min=23
+table2.btree.leaf_page_max=9
+table2.btree.memory_page_max=8
+table2.btree.prefix_len=0
+table2.btree.prefix_compression=1
+table2.btree.prefix_compression_min=3
+table2.btree.reverse=0
+table2.btree.split_pct=70
+table2.btree.value_max=1847
+table2.btree.value_min=6
+table2.disk.checksum=unencrypted
+table2.disk.firstfit=0
+table2.ops.pct.delete=1
+table2.ops.pct.insert=3
+table2.ops.pct.modify=16
+table2.ops.pct.read=78
+table2.ops.pct.write=2
+table2.ops.truncate=1
+table2.runs.mirror=1
+table2.runs.source=table
+table2.runs.type=row-store
+############################################
+# TABLE PARAMETERS: table 3
+############################################
+table3.btree.compression=zstd
+table3.btree.dictionary=1
+table3.btree.internal_key_truncation=1
+table3.btree.internal_page_max=16
+table3.btree.key_max=112
+table3.btree.key_min=29
+table3.btree.leaf_page_max=15
+table3.btree.memory_page_max=1
+table3.btree.prefix_len=0
+table3.btree.prefix_compression=1
+table3.btree.prefix_compression_min=5
+table3.btree.reverse=0
+table3.btree.split_pct=63
+table3.btree.value_max=3771
+table3.btree.value_min=13
+table3.disk.checksum=unencrypted
+table3.disk.firstfit=1
+table3.ops.pct.delete=2
+table3.ops.pct.insert=0
+table3.ops.pct.modify=9
+table3.ops.pct.read=21
+table3.ops.pct.write=68
+table3.ops.truncate=1
+table3.runs.mirror=1
+table3.runs.source=table
+table3.runs.type=row-store
diff --git a/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-11064 b/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-11064
new file mode 100644
index 00000000000..7a9a8d3e7ce
--- /dev/null
+++ b/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-11064
@@ -0,0 +1,229 @@
+############################################
+# RUN PARAMETERS: V3
+############################################
+assert.read_timestamp=0
+backup=0
+backup.incremental=off
+backup.incr_granularity=13161
+block_cache=0
+block_cache.cache_on_checkpoint=0
+block_cache.cache_on_writes=1
+block_cache.size=84
+btree.huffman_value=0
+buffer_alignment=0
+cache=880
+cache.evict_max=2
+cache.eviction_dirty_target=0
+cache.eviction_dirty_trigger=0
+cache.minimum=20
+checkpoint=off
+checkpoint.log_size=74
+checkpoint.wait=35
+debug.checkpoint_retention=8
+debug.cursor_reposition=0
+debug.eviction=0
+debug.log_retention=5
+debug.realloc_exact=0
+debug.realloc_malloc=0
+debug.slow_checkpoint=0
+debug.table_logging=0
+debug.update_restore_evict=0
+disk.data_extend=0
+disk.direct_io=0
+disk.encryption=none
+disk.mmap=1
+disk.mmap_all=0
+file_manager.close_handle_minimum=24
+file_manager.close_idle_time=11
+file_manager.close_scan_interval=16
+format.abort=0
+format.independent_thread_rng=0
+format.major_timeout=0
+import=0
+logging=0
+logging.compression=none
+logging.file_max=353587
+logging.prealloc=0
+logging.remove=0
+ops.alter=0
+ops.compaction=0
+ops.hs_cursor=1
+ops.bound_cursor=0
+ops.prepare=1
+ops.random_cursor=0
+ops.salvage=0
+ops.verify=1
+quiet=1
+random.data_seed=4492643
+random.extra_seed=8537229
+runs.in_memory=0
+runs.ops=0
+runs.predictable_replay=0
+runs.rows=1000000
+runs.tables=5
+runs.threads=10
+runs.timer=16
+runs.verify_failure_dump=0
+statistics.mode=fast
+statistics_log.sources=off
+stress.aggressive_sweep=0
+stress.checkpoint=0
+stress.checkpoint_evict_page=0
+stress.checkpoint_prepare=0
+stress.evict_reposition=0
+stress.failpoint_eviction_fail_after_reconciliation=0
+stress.failpoint_hs_delete_key_from_ts=0
+stress.hs_checkpoint_delay=0
+stress.hs_search=1
+stress.hs_sweep=0
+stress.prepare_resolution=0
+stress.sleep_before_read_overflow_onpage=0
+stress.split_1=0
+stress.split_2=0
+stress.split_3=0
+stress.split_4=0
+stress.split_5=0
+stress.split_6=0
+stress.split_7=0
+stress.split_8=0
+tiered_storage.flush_frequency=0
+tiered_storage.storage_source=off
+transaction.implicit=0
+transaction.timestamps=1
+wiredtiger.config=
+wiredtiger.rwlock=1
+wiredtiger.leak_memory=0
+############################################
+# TABLE PARAMETERS: table 1
+############################################
+table1.btree.compression=zstd
+table1.btree.dictionary=0
+table1.btree.internal_key_truncation=1
+table1.btree.internal_page_max=17
+table1.btree.key_max=52
+table1.btree.key_min=20
+table1.btree.leaf_page_max=13
+table1.btree.memory_page_max=7
+table1.btree.prefix_len=0
+table1.btree.prefix_compression=1
+table1.btree.prefix_compression_min=3
+table1.btree.reverse=0
+table1.btree.split_pct=97
+table1.btree.value_max=1389
+table1.btree.value_min=7
+table1.disk.checksum=on
+table1.disk.firstfit=1
+table1.ops.pareto=0
+table1.ops.pareto.skew=91
+table1.ops.pct.delete=0
+table1.ops.pct.insert=35
+table1.ops.pct.modify=0
+table1.ops.pct.read=65
+table1.ops.pct.write=0
+table1.ops.truncate=0
+table1.runs.mirror=0
+table1.runs.source=table
+table1.runs.type=row-store
+############################################
+# TABLE PARAMETERS: table 2
+############################################
+table2.btree.bitcnt=4
+table2.btree.compression=none
+table2.btree.internal_key_truncation=1
+table2.btree.internal_page_max=9
+table2.btree.leaf_page_max=13
+table2.btree.memory_page_max=10
+table2.btree.split_pct=76
+table2.disk.checksum=unencrypted
+table2.disk.firstfit=0
+table2.ops.pareto=1
+table2.ops.pareto.skew=74
+table2.ops.pct.delete=36
+table2.ops.pct.insert=48
+table2.ops.pct.modify=16
+table2.ops.pct.read=0
+table2.ops.pct.write=0
+table2.ops.truncate=0
+table2.runs.mirror=0
+table2.runs.source=table
+table2.runs.type=row-store
+############################################
+# TABLE PARAMETERS: table 3
+############################################
+table3.btree.bitcnt=8
+table3.btree.compression=zstd
+table3.btree.internal_key_truncation=1
+table3.btree.internal_page_max=17
+table3.btree.leaf_page_max=9
+table3.btree.memory_page_max=9
+table3.btree.split_pct=74
+table3.disk.checksum=off
+table3.disk.firstfit=0
+table3.ops.pareto=0
+table3.ops.pareto.skew=28
+table3.ops.pct.delete=14
+table3.ops.pct.insert=14
+table3.ops.pct.modify=2
+table3.ops.pct.read=68
+table3.ops.pct.write=2
+table3.ops.truncate=0
+table3.runs.mirror=0
+table3.runs.source=file
+table3.runs.type=row-store
+############################################
+# TABLE PARAMETERS: table 4
+############################################
+table4.btree.compression=none
+table4.btree.dictionary=0
+table4.btree.internal_key_truncation=1
+table4.btree.internal_page_max=12
+table4.btree.leaf_page_max=11
+table4.btree.memory_page_max=8
+table4.btree.repeat_data_pct=39
+table4.btree.split_pct=57
+table4.btree.value_max=1453
+table4.btree.value_min=19
+table4.disk.checksum=uncompressed
+table4.disk.firstfit=0
+table4.ops.pareto=0
+table4.ops.pareto.skew=47
+table4.ops.pct.delete=11
+table4.ops.pct.insert=12
+table4.ops.pct.modify=74
+table4.ops.pct.read=0
+table4.ops.pct.write=3
+table4.ops.truncate=0
+table4.runs.mirror=0
+table4.runs.source=file
+table4.runs.type=variable-length column-store
+############################################
+# TABLE PARAMETERS: table 5
+############################################
+table5.btree.compression=none
+table5.btree.dictionary=0
+table5.btree.internal_key_truncation=1
+table5.btree.internal_page_max=11
+table5.btree.key_max=114
+table5.btree.key_min=13
+table5.btree.leaf_page_max=14
+table5.btree.memory_page_max=6
+table5.btree.prefix_len=0
+table5.btree.prefix_compression=1
+table5.btree.prefix_compression_min=5
+table5.btree.reverse=0
+table5.btree.split_pct=86
+table5.btree.value_max=805
+table5.btree.value_min=14
+table5.disk.checksum=on
+table5.disk.firstfit=0
+table5.ops.pareto=0
+table5.ops.pareto.skew=84
+table5.ops.pct.delete=1
+table5.ops.pct.insert=2
+table5.ops.pct.modify=6
+table5.ops.pct.read=84
+table5.ops.pct.write=7
+table5.ops.truncate=0
+table5.runs.mirror=0
+table5.runs.source=table
+table5.runs.type=row-store
diff --git a/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-9751 b/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-9751
new file mode 100644
index 00000000000..8ff2a91c49d
--- /dev/null
+++ b/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-9751
@@ -0,0 +1,138 @@
+############################################
+# RUN PARAMETERS: V3
+############################################
+assert.read_timestamp=0
+assert.write_timestamp=0
+backup=0
+backup.incremental=off
+backup.incr_granularity=8115
+block_cache=0
+block_cache.cache_on_checkpoint=0
+block_cache.cache_on_writes=0
+block_cache.size=53
+btree.compression=none
+cache=336
+cache.evict_max=2
+cache.minimum=40
+checkpoint=on
+checkpoint.log_size=79
+checkpoint.wait=40
+disk.data_extend=0
+disk.direct_io=0
+disk.encryption=none
+disk.mmap=1
+disk.mmap_all=0
+format.abort=0
+format.independent_thread_rng=0
+format.major_timeout=0
+import=0
+logging=0
+logging.compression=none
+logging.file_max=481991
+logging.prealloc=0
+logging.remove=1
+ops.alter=0
+ops.compaction=0
+ops.hs_cursor=0
+ops.prepare=0
+ops.random_cursor=1
+ops.salvage=0
+ops.verify=1
+quiet=1
+runs.in_memory=0
+runs.ops=0
+runs.rows=100000
+runs.source=table
+runs.tables=3
+runs.threads=6
+runs.timer=1
+runs.type=variable-length column-store
+runs.verify_failure_dump=0
+statistics=0
+statistics.server=1
+stress.aggressive_sweep=0
+stress.checkpoint=0
+stress.checkpoint_evict_page=0
+stress.checkpoint_reserved_txnid_delay=0
+stress.checkpoint_prepare=0
+stress.evict_reposition=0
+stress.failpoint_eviction_fail_after_reconciliation=1
+stress.failpoint_hs_delete_key_from_ts=0
+stress.hs_checkpoint_delay=0
+stress.hs_search=0
+stress.hs_sweep=0
+stress.split_1=0
+stress.split_2=0
+stress.split_3=0
+stress.split_4=0
+stress.split_5=0
+stress.split_6=0
+stress.split_7=0
+transaction.implicit=0
+transaction.timestamps=1
+wiredtiger.config=off
+wiredtiger.rwlock=0
+wiredtiger.leak_memory=0
+############################################
+# TABLE PARAMETERS: table 1
+############################################
+table1.btree.dictionary=1
+table1.btree.huffman_value=0
+table1.btree.internal_key_truncation=1
+table1.btree.internal_page_max=17
+table1.btree.leaf_page_max=9
+table1.btree.memory_page_max=8
+table1.btree.repeat_data_pct=87
+table1.btree.split_pct=60
+table1.btree.value_max=1299
+table1.btree.value_min=12
+table1.disk.checksum=on
+table1.disk.firstfit=0
+table1.ops.pct.delete=77
+table1.ops.pct.insert=4
+table1.ops.pct.modify=12
+table1.ops.pct.read=1
+table1.ops.pct.write=6
+table1.ops.truncate=1
+############################################
+# TABLE PARAMETERS: table 2
+############################################
+table2.btree.dictionary=0
+table2.btree.huffman_value=0
+table2.btree.internal_key_truncation=1
+table2.btree.internal_page_max=14
+table2.btree.leaf_page_max=11
+table2.btree.memory_page_max=7
+table2.btree.repeat_data_pct=89
+table2.btree.split_pct=67
+table2.btree.value_max=3716
+table2.btree.value_min=11
+table2.disk.checksum=unencrypted
+table2.disk.firstfit=0
+table2.ops.pct.delete=20
+table2.ops.pct.insert=1
+table2.ops.pct.modify=7
+table2.ops.pct.read=72
+table2.ops.pct.write=0
+table2.ops.truncate=1
+############################################
+# TABLE PARAMETERS: table 3
+############################################
+table3.btree.dictionary=0
+table3.btree.huffman_value=0
+table3.btree.internal_key_truncation=1
+table3.btree.internal_page_max=17
+table3.btree.leaf_page_max=12
+table3.btree.memory_page_max=9
+table3.btree.repeat_data_pct=12
+table3.btree.split_pct=54
+table3.btree.value_max=2929
+table3.btree.value_min=8
+table3.disk.checksum=on
+table3.disk.firstfit=0
+table3.ops.pct.delete=34
+table3.ops.pct.insert=45
+table3.ops.pct.modify=1
+table3.ops.pct.read=0
+table3.ops.pct.write=20
+table3.ops.truncate=1
diff --git a/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-9792 b/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-9792
new file mode 100644
index 00000000000..4889602e518
--- /dev/null
+++ b/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-9792
@@ -0,0 +1,160 @@
+############################################
+# RUN PARAMETERS: V3
+############################################
+assert.read_timestamp=0
+backup=1
+backup.incremental=off
+backup.incr_granularity=11461
+block_cache=0
+block_cache.cache_on_checkpoint=0
+block_cache.cache_on_writes=0
+block_cache.size=47
+btree.huffman_value=0
+cache=612
+cache.evict_max=1
+cache.minimum=20
+checkpoint=on
+checkpoint.log_size=167
+checkpoint.wait=32
+disk.data_extend=0
+disk.direct_io=0
+disk.encryption=none
+disk.mmap=1
+disk.mmap_all=0
+format.abort=0
+format.independent_thread_rng=0
+format.major_timeout=0
+import=0
+logging=0
+logging.compression=none
+logging.file_max=199668
+logging.prealloc=0
+logging.remove=0
+ops.alter=0
+ops.compaction=1
+ops.hs_cursor=1
+ops.prepare=0
+ops.random_cursor=0
+ops.salvage=0
+ops.verify=1
+quiet=1
+runs.in_memory=0
+runs.ops=0
+runs.rows=1000000
+runs.tables=3
+runs.threads=16
+runs.timer=6
+runs.verify_failure_dump=0
+statistics=0
+statistics.server=0
+stress.aggressive_sweep=0
+stress.checkpoint=0
+stress.checkpoint_evict_page=0
+stress.checkpoint_reserved_txnid_delay=0
+stress.checkpoint_prepare=0
+stress.evict_reposition=1
+stress.failpoint_eviction_fail_after_reconciliation=0
+stress.failpoint_hs_delete_key_from_ts=0
+stress.hs_checkpoint_delay=0
+stress.hs_search=0
+stress.hs_sweep=0
+stress.split_1=0
+stress.split_2=1
+stress.split_3=0
+stress.split_4=0
+stress.split_5=0
+stress.split_6=0
+stress.split_7=0
+transaction.implicit=0
+transaction.timestamps=1
+wiredtiger.config=off
+wiredtiger.rwlock=1
+wiredtiger.leak_memory=0
+############################################
+# TABLE PARAMETERS: table 1
+############################################
+table1.btree.compression=snappy
+table1.btree.dictionary=0
+table1.btree.internal_key_truncation=1
+table1.btree.internal_page_max=15
+table1.btree.key_max=24
+table1.btree.key_min=14
+table1.btree.leaf_page_max=11
+table1.btree.memory_page_max=8
+table1.btree.prefix_len=0
+table1.btree.prefix_compression=0
+table1.btree.prefix_compression_min=7
+table1.btree.reverse=0
+table1.btree.split_pct=94
+table1.btree.value_max=1513
+table1.btree.value_min=1
+table1.disk.checksum=unencrypted
+table1.disk.firstfit=0
+table1.ops.pct.delete=3
+table1.ops.pct.insert=63
+table1.ops.pct.modify=3
+table1.ops.pct.read=9
+table1.ops.pct.write=22
+table1.ops.truncate=1
+table1.runs.mirror=0
+table1.runs.source=file
+table1.runs.type=row-store
+############################################
+# TABLE PARAMETERS: table 2
+############################################
+table2.btree.compression=zlib
+table2.btree.dictionary=0
+table2.btree.internal_key_truncation=1
+table2.btree.internal_page_max=12
+table2.btree.key_max=115
+table2.btree.key_min=22
+table2.btree.leaf_page_max=12
+table2.btree.memory_page_max=9
+table2.btree.prefix_len=0
+table2.btree.prefix_compression=1
+table2.btree.prefix_compression_min=7
+table2.btree.reverse=0
+table2.btree.split_pct=86
+table2.btree.value_max=37
+table2.btree.value_min=16
+table2.disk.checksum=on
+table2.disk.firstfit=1
+table2.ops.pct.delete=12
+table2.ops.pct.insert=0
+table2.ops.pct.modify=2
+table2.ops.pct.read=60
+table2.ops.pct.write=26
+table2.ops.truncate=1
+table2.runs.mirror=0
+table2.runs.source=table
+table2.runs.type=row-store
+############################################
+# TABLE PARAMETERS: table 3
+############################################
+table3.btree.compression=zstd
+table3.btree.dictionary=0
+table3.btree.internal_key_truncation=1
+table3.btree.internal_page_max=11
+table3.btree.key_max=68
+table3.btree.key_min=21
+table3.btree.leaf_page_max=13
+table3.btree.memory_page_max=1
+table3.btree.prefix_len=41
+table3.btree.prefix_compression=1
+table3.btree.prefix_compression_min=2
+table3.btree.reverse=0
+table3.btree.split_pct=86
+table3.btree.value_max=239
+table3.btree.value_min=9
+table3.disk.checksum=unencrypted
+table3.disk.firstfit=0
+table3.ops.pct.delete=50
+table3.ops.pct.insert=2
+table3.ops.pct.modify=1
+table3.ops.pct.read=3
+table3.ops.pct.write=44
+table3.ops.truncate=1
+table3.runs.mirror=0
+table3.runs.source=table
+table3.runs.type=row-store
+
diff --git a/src/third_party/wiredtiger/test/format/format.sh b/src/third_party/wiredtiger/test/format/format.sh
index 861ded0890a..dd9e10ab89d 100755
--- a/src/third_party/wiredtiger/test/format/format.sh
+++ b/src/third_party/wiredtiger/test/format/format.sh
@@ -367,6 +367,28 @@ report_failure()
echo "$name: failure status reported" > $dir/$status
}
+# Wait for a process to die. Handle both child and non-child processes.
+# $1 pid
+# Return <exit code> of process if child or 127 if non-child
+wait_for_process()
+{
+ pid=$1
+ ret=127
+
+ if [ `pstree -p $$ | grep -w $pid | wc -l` -gt "0" ]; then
+ # Can still produce "wait: pid XXXX is not a child of this shell" due to process
+ # ending between the steps, can be safely ignored.
+ wait $pid
+ ret=$?
+ else
+ while [ -d "/proc/$pid/" ]; do
+ sleep 1
+ done
+ fi
+
+ return $ret
+}
+
# Resolve/cleanup completed jobs.
resolve()
{
@@ -399,17 +421,28 @@ resolve()
}
# Kill the process group to catch any child processes.
+ if [ `ps -eo ppid | grep -w $pid | wc -l` -gt "0" ]; then
+ kill -KILL -- -$pid
+ fi
+ # Kill the process.
+ kill -KILL $pid
+ wait_for_process $pid
+
msg "job in $dir killed"
- kill -KILL -- -$pid
- wait $pid
# Remove jobs we killed, they count as neither success or failure.
rm -rf $dir $log
continue
}
- wait $pid
+ wait_for_process $pid
eret=$?
+ # Check for Sanitizer failures, have to do this prior to success because both can be reported.
+ grep -E -i 'Sanitizer' $log > /dev/null && {
+ report_failure $dir
+ continue
+ }
+
# Remove successful jobs.
grep 'successful run completed' $log > /dev/null && {
rm -rf $dir $log
@@ -468,7 +501,7 @@ resolve()
continue
}
- # Check for the library abort message, or an error from format.
+ # Check for the library abort message or an error from format.
grep -E \
'aborting WiredTiger library|format alarm timed out|run FAILED' \
$log > /dev/null && {
diff --git a/src/third_party/wiredtiger/test/format/wts.c b/src/third_party/wiredtiger/test/format/wts.c
index dc91c759bf1..32f52a027e7 100644
--- a/src/third_party/wiredtiger/test/format/wts.c
+++ b/src/third_party/wiredtiger/test/format/wts.c
@@ -158,6 +158,8 @@ configure_timing_stress(char *p, size_t max)
CONFIG_APPEND(p, ",prepare_checkpoint_delay");
if (GV(STRESS_CHECKPOINT_RESERVED_TXNID_DELAY))
CONFIG_APPEND(p, ",checkpoint_reserved_txnid_delay");
+ if (GV(STRESS_FAILPOINT_EVICTION_FAIL_AFTER_RECONCILIATION))
+ CONFIG_APPEND(p, ",failpoint_eviction_fail_after_reconciliation");
if (GV(STRESS_FAILPOINT_HS_DELETE_KEY_FROM_TS))
CONFIG_APPEND(p, ",failpoint_history_store_delete_key_from_ts");
if (GV(STRESS_HS_CHECKPOINT_DELAY))