diff options
author | Keith Bostic <keith.bostic@mongodb.com> | 2016-12-02 07:02:58 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-02 07:02:58 -0500 |
commit | 2573977de124b397f1e3564b6554f3c97fcfe6fa (patch) | |
tree | cb1d9921e0bc7b5ee14ee8795bc9ae2debc7108b | |
parent | 938f6252f3dfa3cfca86fa9ebf94a4e529c1e035 (diff) | |
download | mongo-2573977de124b397f1e3564b6554f3c97fcfe6fa.tar.gz |
WT-3030 Test failure indicating invalid key order during traversal (#3157)
* WT-3030 Test failure indicating invalid key order during traversal
When dumping internal pages, print out the WT_REF pointer, not the
WT_PAGE pointer, that's what I need to dump the page.
* Assert there's no disk image when splitting root pages.
-rw-r--r-- | src/btree/bt_debug.c | 20 | ||||
-rw-r--r-- | src/reconcile/rec_write.c | 1 |
2 files changed, 11 insertions, 10 deletions
diff --git a/src/btree/bt_debug.c b/src/btree/bt_debug.c index bcc7d27a569..dfbd56f7f41 100644 --- a/src/btree/bt_debug.c +++ b/src/btree/bt_debug.c @@ -1003,37 +1003,37 @@ __debug_ref(WT_DBG *ds, WT_REF *ref) WT_SESSION_IMPL *session; size_t addr_size; const uint8_t *addr; + const char *state; session = ds->session; - WT_RET(ds->f(ds, "\t")); switch (ref->state) { case WT_REF_DISK: - WT_RET(ds->f(ds, "disk")); + state = "disk"; break; case WT_REF_DELETED: - WT_RET(ds->f(ds, "deleted")); + state = "deleted"; break; case WT_REF_LOCKED: - WT_RET(ds->f(ds, "locked %p", (void *)ref->page)); + state = "locked"; break; case WT_REF_MEM: - WT_RET(ds->f(ds, "memory %p", (void *)ref->page)); + state = "memory"; break; case WT_REF_READING: - WT_RET(ds->f(ds, "reading")); + state = "reading"; break; case WT_REF_SPLIT: - WT_RET(ds->f(ds, "split")); + state = "split"; break; default: - WT_RET(ds->f(ds, "INVALID")); + state = "INVALID"; break; } __wt_ref_info(ref, &addr, &addr_size, NULL); - return (ds->f(ds, " %s\n", - __wt_addr_string(session, addr, addr_size, ds->tmp))); + return (ds->f(ds, "\t" "%p %s %s\n", (void *)ref, + state, __wt_addr_string(session, addr, addr_size, ds->tmp))); } /* diff --git a/src/reconcile/rec_write.c b/src/reconcile/rec_write.c index 5e5ba548130..f71715412af 100644 --- a/src/reconcile/rec_write.c +++ b/src/reconcile/rec_write.c @@ -698,6 +698,7 @@ __rec_root_write(WT_SESSION_IMPL *session, WT_PAGE *page, uint32_t flags) * pages in memory; it's not needed here, asserted for safety. */ WT_ASSERT(session, mod->mod_multi[i].supd == NULL); + WT_ASSERT(session, mod->mod_multi[i].disk_image == NULL); WT_ERR(__wt_multi_to_ref(session, next, &mod->mod_multi[i], &pindex->index[i], NULL, false)); |