summaryrefslogtreecommitdiff
path: root/src/reconcile/rec_write.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/reconcile/rec_write.c')
-rw-r--r--src/reconcile/rec_write.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/src/reconcile/rec_write.c b/src/reconcile/rec_write.c
index 9c38c535301..810f3fd976b 100644
--- a/src/reconcile/rec_write.c
+++ b/src/reconcile/rec_write.c
@@ -451,19 +451,18 @@ __wt_reconcile(WT_SESSION_IMPL *session,
}
/*
- * When application threads perform eviction, don't cache block manager
- * or reconciliation structures (even across calls), we can have a
- * significant number of application threads doing eviction at the same
- * time with large items. We ignore checkpoints, once the checkpoint
- * completes, all unnecessary session resources will be discarded.
+ * When threads perform eviction, don't cache block manager or
+ * reconciliation structures (even across calls), we can have a
+ * significant number of threads doing eviction at the same time with
+ * large items. We ignore checkpoints, once the checkpoint completes,
+ * all unnecessary session resources will be discarded.
*
- * Even in application threads doing checkpoints or in internal threads
- * doing any reconciliation, clean up reconciliation resources. Some
- * workloads have millions of boundary structures in a reconciliation
- * and we don't want to tie that memory down, even across calls.
+ * Even in application threads doing checkpoints, clean up
+ * reconciliation resources. Some workloads have millions of boundary
+ * structures in a reconciliation and we don't want to tie that memory
+ * down, even across calls.
*/
- if (WT_SESSION_IS_CHECKPOINT(session) ||
- F_ISSET(session, WT_SESSION_INTERNAL))
+ if (WT_SESSION_IS_CHECKPOINT(session))
__rec_bnd_cleanup(session, r, false);
else {
/*
@@ -564,10 +563,12 @@ __rec_write_status(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_PAGE *page)
* barrier after the change for clarity (the requirement is the
* flag be set before a subsequent checkpoint reads it, and
* as the current checkpoint is waiting on this reconciliation
- * to complete, there's no risk of that happening)
+ * to complete, there's no risk of that happening).
*/
- btree->modified = 1;
+ btree->modified = true;
WT_FULL_BARRIER();
+ if (!S2C(session)->modified)
+ S2C(session)->modified = true;
/*
* Eviction should only be here if following the save/restore
@@ -3335,7 +3336,7 @@ supd_check_complete:
__wt_verbose(session, WT_VERB_SPLIT,
"Reconciliation creating a page with %" PRIu32
" entries, memory footprint %" WT_SIZET_FMT
- ", page count %" PRIu32 ", %s, split state: %d\n",
+ ", page count %" PRIu32 ", %s, split state: %d",
r->entries, r->page->memory_footprint, r->bnd_next,
F_ISSET(r, WT_EVICTING) ? "evict" : "checkpoint",
r->bnd_state);