summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Bostic <keith@wiredtiger.com>2015-01-21 11:43:43 -0500
committerKeith Bostic <keith@wiredtiger.com>2015-01-21 11:45:41 -0500
commita80cbb671fcac3d31abd3f38cf547641de9a1776 (patch)
treebc8fd1ee17033950c6c270bfeb0d3d7d864478aa
parent1d76628056d6a42f10dec8d5baaa35a97a29ccba (diff)
downloadmongo-a80cbb671fcac3d31abd3f38cf547641de9a1776.tar.gz
When transferring WT_UPDATE memory from one page to another as part of
doing an insert-split, don't use the WT_UPDATE.size if it's a deleted item; SERVER-16881.
-rw-r--r--src/btree/bt_split.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/btree/bt_split.c b/src/btree/bt_split.c
index 395ff447035..94c73106d70 100644
--- a/src/btree/bt_split.c
+++ b/src/btree/bt_split.c
@@ -1253,8 +1253,9 @@ __wt_split_insert(WT_SESSION_IMPL *session, WT_REF *ref, int *splitp)
WT_MEMSIZE_TRANSFER(page_decr, right_incr, sizeof(WT_INSERT) +
(size_t)i * sizeof(WT_INSERT *) + WT_INSERT_KEY_SIZE(moved_ins));
for (upd = moved_ins->upd; upd != NULL; upd = upd->next)
- WT_MEMSIZE_TRANSFER(
- page_decr, right_incr, sizeof(WT_UPDATE) + upd->size);
+ WT_MEMSIZE_TRANSFER(page_decr, right_incr,
+ sizeof(WT_UPDATE) +
+ (WT_UPDATE_DELETED_ISSET(upd) ? 0 : upd->size));
/*
* Allocation operations completed, move the last insert list item from