From 0c73119d5c99a0e705f834b64fa9d9a47b767597 Mon Sep 17 00:00:00 2001 From: Will Korteland Date: Thu, 29 Sep 2022 02:55:37 +0000 Subject: 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) --- src/third_party/wiredtiger/import.data | 2 +- src/third_party/wiredtiger/test/format/backup.c | 36 ++++++++++++++++++++++ src/third_party/wiredtiger/test/utility/misc.c | 14 +++++++++ .../wiredtiger/test/utility/test_util.h | 1 + 4 files changed, 52 insertions(+), 1 deletion(-) 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 @@ -457,6 +457,36 @@ save_backup_info(ACTIVE_FILES *active, uint64_t id) free(to_path); } +/* + * 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 @@ -312,6 +312,20 @@ testutil_copy_file(WT_SESSION *session, const char *name) free(second); } +/* + * 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); -- cgit v1.2.1