summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/src/btree/bt_sync.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/third_party/wiredtiger/src/btree/bt_sync.c')
-rw-r--r--src/third_party/wiredtiger/src/btree/bt_sync.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/third_party/wiredtiger/src/btree/bt_sync.c b/src/third_party/wiredtiger/src/btree/bt_sync.c
index bc5d1051b1e..dae2dd8d480 100644
--- a/src/third_party/wiredtiger/src/btree/bt_sync.c
+++ b/src/third_party/wiredtiger/src/btree/bt_sync.c
@@ -109,6 +109,17 @@ __sync_file(WT_SESSION_IMPL *session, int syncop)
/* Write all dirty in-cache pages. */
flags |= WT_READ_NO_EVICT;
for (walk = NULL;;) {
+ /*
+ * If we have a page, and it was ever modified, track
+ * the highest transaction ID in the tree. We do this
+ * here because we want the value after reconciling
+ * dirty pages.
+ */
+ if (walk != NULL && walk->page != NULL &&
+ (mod = walk->page->modify) != NULL &&
+ TXNID_LT(btree->rec_max_txn, mod->rec_max_txn))
+ btree->rec_max_txn = mod->rec_max_txn;
+
WT_ERR(__wt_tree_walk(session, &walk, NULL, flags));
if (walk == NULL)
break;
@@ -145,8 +156,7 @@ __sync_file(WT_SESSION_IMPL *session, int syncop)
}
if (WT_PAGE_IS_INTERNAL(page)) {
- internal_bytes +=
- page->memory_footprint;
+ internal_bytes += page->memory_footprint;
++internal_pages;
} else {
leaf_bytes += page->memory_footprint;