diff options
author | Luke Chen <luke.chen@mongodb.com> | 2020-05-25 15:55:23 +1000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-05-25 06:16:02 +0000 |
commit | c480627eae1b5d09f8eea247b396b45b89a5c275 (patch) | |
tree | 3f189d5d70cfab814fe7e0808692b271663d8c39 /src/third_party/wiredtiger/test/format | |
parent | d169769bba283cd0a1906c81580ff8e7cf7bcd93 (diff) | |
download | mongo-c480627eae1b5d09f8eea247b396b45b89a5c275.tar.gz |
Import wiredtiger: 0ec94ad7e360d93cb91f558d7efc03c644b1a9f8 from branch mongodb-4.4
ref: 5a3c70d7e4..0ec94ad7e3
for: 4.5.1
WT-6199 Fix PPC test variables in evergreen.yml
WT-6219 Fix application threads history store visibility during eviction
WT-6220 Add statistics tracking when times are written to disk
WT-6251 Fix splits to reduce the size of index files
WT-6260 Disable post salvage verify in format
WT-6266 Metadata verify of the HS file can fail if underlying objects are corrupted
WT-6278 Return from resolve prepared op when we have already resolved the operations
WT-6284 History store isn't visible to wt dump
WT-6287 Remove WT_TXN_HAS_TS_READ flag
Diffstat (limited to 'src/third_party/wiredtiger/test/format')
-rw-r--r-- | src/third_party/wiredtiger/test/format/backup.c | 2 | ||||
-rw-r--r-- | src/third_party/wiredtiger/test/format/format.h | 2 | ||||
-rw-r--r-- | src/third_party/wiredtiger/test/format/salvage.c | 30 | ||||
-rw-r--r-- | src/third_party/wiredtiger/test/format/t.c | 2 | ||||
-rw-r--r-- | src/third_party/wiredtiger/test/format/wts.c | 6 |
5 files changed, 23 insertions, 19 deletions
diff --git a/src/third_party/wiredtiger/test/format/backup.c b/src/third_party/wiredtiger/test/format/backup.c index 6ce8ba12ca7..b16835c7eec 100644 --- a/src/third_party/wiredtiger/test/format/backup.c +++ b/src/third_party/wiredtiger/test/format/backup.c @@ -45,7 +45,7 @@ check_copy(void) path = dmalloc(len); testutil_check(__wt_snprintf(path, len, "%s/BACKUP", g.home)); - wts_open(path, false, &conn); + wts_open(path, false, &conn, true); testutil_checkfmt(conn->open_session(conn, NULL, NULL, &session), "%s", path); diff --git a/src/third_party/wiredtiger/test/format/format.h b/src/third_party/wiredtiger/test/format/format.h index 6bc213a65ef..9f864aeec32 100644 --- a/src/third_party/wiredtiger/test/format/format.h +++ b/src/third_party/wiredtiger/test/format/format.h @@ -397,7 +397,7 @@ void wts_create(void); void wts_dump(const char *, bool); void wts_init(void); void wts_load(void); -void wts_open(const char *, bool, WT_CONNECTION **); +void wts_open(const char *, bool, WT_CONNECTION **, bool); void wts_read_scan(void); void wts_rebalance(void); void wts_reopen(void); diff --git a/src/third_party/wiredtiger/test/format/salvage.c b/src/third_party/wiredtiger/test/format/salvage.c index b9aca837215..8d1a2e7ed0f 100644 --- a/src/third_party/wiredtiger/test/format/salvage.c +++ b/src/third_party/wiredtiger/test/format/salvage.c @@ -58,7 +58,8 @@ corrupt(void) wt_off_t offset; size_t len, nw; int fd, ret; - char buf[8 * 1024], copycmd[2 * 1024]; + char copycmd[2 * 1024], path[1024]; + const char *smash; /* * If it's a single Btree file (not LSM), open the file, and corrupt roughly 2% of the file at a @@ -67,14 +68,14 @@ corrupt(void) * It's a little tricky: if the data source is a file, we're looking for "wt", if the data * source is a table, we're looking for "wt.wt". */ - testutil_check(__wt_snprintf(buf, sizeof(buf), "%s/%s", g.home, WT_NAME)); - if ((fd = open(buf, O_RDWR)) != -1) { + testutil_check(__wt_snprintf(path, sizeof(path), "%s/%s", g.home, WT_NAME)); + if ((fd = open(path, O_RDWR)) != -1) { testutil_check(__wt_snprintf(copycmd, sizeof(copycmd), "cp %s/%s %s/SALVAGE.copy/%s.corrupted", g.home, WT_NAME, g.home, WT_NAME)); goto found; } - testutil_check(__wt_snprintf(buf, sizeof(buf), "%s/%s.wt", g.home, WT_NAME)); - if ((fd = open(buf, O_RDWR)) != -1) { + testutil_check(__wt_snprintf(path, sizeof(path), "%s/%s.wt", g.home, WT_NAME)); + if ((fd = open(path, O_RDWR)) != -1) { testutil_check(__wt_snprintf(copycmd, sizeof(copycmd), "cp %s/%s.wt %s/SALVAGE.copy/%s.wt.corrupted", g.home, WT_NAME, g.home, WT_NAME)); goto found; @@ -87,9 +88,9 @@ found: offset = mmrand(NULL, 0, (u_int)sb.st_size); len = (size_t)(20 + (sb.st_size / 100) * 2); - testutil_check(__wt_snprintf(buf, sizeof(buf), "%s/SALVAGE.corrupt", g.home)); - if ((fp = fopen(buf, "w")) == NULL) - testutil_die(errno, "salvage-corrupt: open: %s", buf); + testutil_check(__wt_snprintf(path, sizeof(path), "%s/SALVAGE.corrupt", g.home)); + if ((fp = fopen(path, "w")) == NULL) + testutil_die(errno, "salvage-corrupt: open: %s", path); (void)fprintf(fp, "salvage-corrupt: offset %" PRIuMAX ", length %" WT_SIZET_FMT "\n", (uintmax_t)offset, len); fclose_and_clear(&fp); @@ -97,10 +98,10 @@ found: if (lseek(fd, offset, SEEK_SET) == -1) testutil_die(errno, "salvage-corrupt: lseek"); - memset(buf, 'z', sizeof(buf)); + smash = "!!! memory corrupted by format to test salvage "; for (; len > 0; len -= nw) { - nw = (size_t)(len > sizeof(buf) ? sizeof(buf) : len); - if (write(fd, buf, nw) == -1) + nw = (size_t)(len > strlen(smash) ? strlen(smash) : len); + if (write(fd, smash, nw) == -1) testutil_die(errno, "salvage-corrupt: write"); } @@ -150,16 +151,17 @@ wts_salvage(void) free(cmd); /* Salvage, then verify. */ - wts_open(g.home, true, &g.wts_conn); + wts_open(g.home, true, &g.wts_conn, true); salvage(); +#if 0 wts_verify("post-salvage verify"); +#endif wts_close(); /* Corrupt the file randomly, salvage, then verify. */ if (corrupt()) { - wts_open(g.home, true, &g.wts_conn); + wts_open(g.home, true, &g.wts_conn, false); salvage(); - wts_verify("post-corrupt-salvage verify"); wts_close(); } } diff --git a/src/third_party/wiredtiger/test/format/t.c b/src/third_party/wiredtiger/test/format/t.c index 5e68d4c524b..61d612b1abd 100644 --- a/src/third_party/wiredtiger/test/format/t.c +++ b/src/third_party/wiredtiger/test/format/t.c @@ -279,7 +279,7 @@ main(int argc, char *argv[]) if (g.reopen) wts_reopen(); /* Reopen existing database. */ else { - wts_open(g.home, true, &g.wts_conn); + wts_open(g.home, true, &g.wts_conn, true); wts_init(); TIMED_MAJOR_OP(wts_load()); /* Load and verify initial records */ TIMED_MAJOR_OP(wts_verify("post-bulk verify")); diff --git a/src/third_party/wiredtiger/test/format/wts.c b/src/third_party/wiredtiger/test/format/wts.c index 66a319a9982..309b576be63 100644 --- a/src/third_party/wiredtiger/test/format/wts.c +++ b/src/third_party/wiredtiger/test/format/wts.c @@ -176,7 +176,7 @@ static WT_EVENT_HANDLER event_handler = { * Open a connection to a WiredTiger database. */ void -wts_open(const char *home, bool set_api, WT_CONNECTION **connp) +wts_open(const char *home, bool set_api, WT_CONNECTION **connp, bool allow_verify) { WT_CONNECTION *conn; size_t max; @@ -282,8 +282,10 @@ wts_open(const char *home, bool set_api, WT_CONNECTION **connp) CONFIG_APPEND(p, "]"); #if WIREDTIGER_VERSION_MAJOR >= 10 - if (g.c_verify) + if (g.c_verify && allow_verify) CONFIG_APPEND(p, ",verify_metadata=true"); + else if (!allow_verify) + CONFIG_APPEND(p, ",verify_metadata=false"); #endif /* Extensions. */ |