summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Bostic <keith.bostic@mongodb.com>2016-12-02 07:02:58 -0500
committerGitHub <noreply@github.com>2016-12-02 07:02:58 -0500
commit2573977de124b397f1e3564b6554f3c97fcfe6fa (patch)
treecb1d9921e0bc7b5ee14ee8795bc9ae2debc7108b
parent938f6252f3dfa3cfca86fa9ebf94a4e529c1e035 (diff)
downloadmongo-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.c20
-rw-r--r--src/reconcile/rec_write.c1
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));