summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Cahill <michael.cahill@wiredtiger.com>2015-03-06 22:48:45 +1100
committerMichael Cahill <michael.cahill@wiredtiger.com>2015-03-06 22:48:45 +1100
commited9c48c7b8fa5dd3362e417fda8337f1690585ed (patch)
treeac8a7b266f192957a46f165df17172aba505d6d5
parent248d88e0c57b778f99ab1d1f767519d8eb261e9e (diff)
downloadmongo-ed9c48c7b8fa5dd3362e417fda8337f1690585ed.tar.gz
Ignore empty child pages in column stores.
-rw-r--r--src/include/btree.i2
-rw-r--r--src/reconcile/rec_write.c14
2 files changed, 6 insertions, 10 deletions
diff --git a/src/include/btree.i b/src/include/btree.i
index d4e8ca088c7..56fb66abaef 100644
--- a/src/include/btree.i
+++ b/src/include/btree.i
@@ -982,7 +982,7 @@ __wt_page_can_evict(WT_SESSION_IMPL *session, WT_PAGE *page, int check_splits)
*/
if (btree->checkpointing &&
(__wt_page_is_modified(page) ||
- F_ISSET(mod, WT_PM_REC_MULTIBLOCK))) {
+ F_ISSET(mod, WT_PM_REC_MULTIBLOCK))) {
WT_STAT_FAST_CONN_INCR(session, cache_eviction_checkpoint);
WT_STAT_FAST_DATA_INCR(session, cache_eviction_checkpoint);
return (0);
diff --git a/src/reconcile/rec_write.c b/src/reconcile/rec_write.c
index 7af681111ef..69654955d6b 100644
--- a/src/reconcile/rec_write.c
+++ b/src/reconcile/rec_write.c
@@ -3237,15 +3237,11 @@ __rec_col_int(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_PAGE *page)
WT_ERR(__rec_child_modify(session, r, ref, &hazard, &state));
addr = NULL;
child = ref->page;
- if (state != 0) {
- /*
- * Currently the only non-zero returned stated possible
- * for a column-store page is child-modified (all other
- * states are part of the fast-truncate support, which
- * is row-store only).
- */
- WT_ASSERT(session, state == WT_CHILD_MODIFIED);
-
+ if (state == WT_CHILD_IGNORE) {
+ CHILD_RELEASE_ERR(session, hazard, ref);
+ continue;
+ }
+ if (state == WT_CHILD_MODIFIED) {
switch (F_ISSET(child->modify, WT_PM_REC_MASK)) {
case WT_PM_REC_EMPTY:
/*