diff options
Diffstat (limited to 'src/third_party/wiredtiger/test/format')
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)) |
