diff options
author | Will Korteland <will.korteland@mongodb.com> | 2022-09-29 02:55:37 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-09-29 03:26:43 +0000 |
commit | 0c73119d5c99a0e705f834b64fa9d9a47b767597 (patch) | |
tree | a30a56dfab44b46c1df25f1a7f93e59f120a45d4 /src/third_party | |
parent | d3cc9f7fc4088dc8fa3f9fc7fe5f1d6d7c62cfa4 (diff) | |
download | mongo-0c73119d5c99a0e705f834b64fa9d9a47b767597.tar.gz |
Import wiredtiger: 7e38deff7bff0f2cdad1b8760b123bcf0a476456 from branch mongodb-master
ref: 0081d825de..7e38deff7b
for: 6.2.0-rc0
WT-8526 test/format should copy all the files it needs to start up into the backup directories (#8297)
Diffstat (limited to 'src/third_party')
-rw-r--r-- | src/third_party/wiredtiger/import.data | 2 | ||||
-rw-r--r-- | src/third_party/wiredtiger/test/format/backup.c | 36 | ||||
-rw-r--r-- | src/third_party/wiredtiger/test/utility/misc.c | 14 | ||||
-rw-r--r-- | src/third_party/wiredtiger/test/utility/test_util.h | 1 |
4 files changed, 52 insertions, 1 deletions
diff --git a/src/third_party/wiredtiger/import.data b/src/third_party/wiredtiger/import.data index 65c95ab42ad..4d1d4ed28e9 100644 --- a/src/third_party/wiredtiger/import.data +++ b/src/third_party/wiredtiger/import.data @@ -2,5 +2,5 @@ "vendor": "wiredtiger", "github": "wiredtiger/wiredtiger.git", "branch": "mongodb-master", - "commit": "0081d825de8c1db90046a87584a63c33cdf05875" + "commit": "7e38deff7bff0f2cdad1b8760b123bcf0a476456" } diff --git a/src/third_party/wiredtiger/test/format/backup.c b/src/third_party/wiredtiger/test/format/backup.c index 722bfdedc3f..f463b20d5a4 100644 --- a/src/third_party/wiredtiger/test/format/backup.c +++ b/src/third_party/wiredtiger/test/format/backup.c @@ -458,6 +458,36 @@ save_backup_info(ACTIVE_FILES *active, uint64_t id) } /* + * copy_format_files -- + * Copies over format-specific files to the BACKUP.copy directory. These include CONFIG and any + * CONFIG.keylen* files. + */ +static void +copy_format_files(WT_SESSION *session) +{ + size_t file_len; + u_int i; + char *filename; + + /* The CONFIG file should always exist, copy it over. */ + testutil_copy_file(session, "CONFIG"); + + /* Copy over any CONFIG.keylen* files if they exist. */ + if (ntables == 0) + testutil_copy_if_exists(session, "CONFIG.keylen"); + else { + file_len = strlen("CONFIG.keylen.") + 10; + filename = dmalloc(file_len); + + for (i = 1; i <= ntables; ++i) { + testutil_check(__wt_snprintf(filename, file_len, "CONFIG.keylen.%u", i)); + testutil_copy_if_exists(session, filename); + } + free(filename); + } +} + +/* * backup -- * Periodically do a backup and verify it. */ @@ -580,6 +610,12 @@ backup(void *arg) /* If we're taking a full backup, create the backup directories. */ if (full || incremental == 0) { testutil_create_backup_directory(g.home); + + /* + * Copy format-specific files into the backup directories so that test/format can be run + * on the BACKUP.copy database for verification. + */ + copy_format_files(session); } /* diff --git a/src/third_party/wiredtiger/test/utility/misc.c b/src/third_party/wiredtiger/test/utility/misc.c index ac7f2252540..d9702d94e89 100644 --- a/src/third_party/wiredtiger/test/utility/misc.c +++ b/src/third_party/wiredtiger/test/utility/misc.c @@ -313,6 +313,20 @@ testutil_copy_file(WT_SESSION *session, const char *name) } /* + * testutil_copy_if_exists -- + * Copy a file into a directory if it exists. + */ +void +testutil_copy_if_exists(WT_SESSION *session, const char *name) +{ + bool exist; + + testutil_check(__wt_fs_exist((WT_SESSION_IMPL *)session, name, &exist)); + if (exist) + testutil_copy_file(session, name); +} + +/* * testutil_is_flag_set -- * Return if an environment variable flag is set. */ diff --git a/src/third_party/wiredtiger/test/utility/test_util.h b/src/third_party/wiredtiger/test/utility/test_util.h index 7b255d233d0..40fc123fbe3 100644 --- a/src/third_party/wiredtiger/test/utility/test_util.h +++ b/src/third_party/wiredtiger/test/utility/test_util.h @@ -366,6 +366,7 @@ void testutil_clean_work_dir(const char *); void testutil_cleanup(TEST_OPTS *); void testutil_copy_data(const char *); void testutil_copy_file(WT_SESSION *, const char *); +void testutil_copy_if_exists(WT_SESSION *, const char *); void testutil_create_backup_directory(const char *); void testutil_make_work_dir(const char *); void testutil_modify_apply(WT_ITEM *, WT_ITEM *, WT_MODIFY *, int, uint8_t); |