summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWill Korteland <will.korteland@mongodb.com>2022-09-29 02:55:37 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-09-29 03:26:43 +0000
commit0c73119d5c99a0e705f834b64fa9d9a47b767597 (patch)
treea30a56dfab44b46c1df25f1a7f93e59f120a45d4
parentd3cc9f7fc4088dc8fa3f9fc7fe5f1d6d7c62cfa4 (diff)
downloadmongo-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)
-rw-r--r--src/third_party/wiredtiger/import.data2
-rw-r--r--src/third_party/wiredtiger/test/format/backup.c36
-rw-r--r--src/third_party/wiredtiger/test/utility/misc.c14
-rw-r--r--src/third_party/wiredtiger/test/utility/test_util.h1
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);