summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/src/include/serial.i
diff options
context:
space:
mode:
Diffstat (limited to 'src/third_party/wiredtiger/src/include/serial.i')
-rw-r--r--src/third_party/wiredtiger/src/include/serial.i9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/third_party/wiredtiger/src/include/serial.i b/src/third_party/wiredtiger/src/include/serial.i
index e3581ae1c39..9e6b0f7916c 100644
--- a/src/third_party/wiredtiger/src/include/serial.i
+++ b/src/third_party/wiredtiger/src/include/serial.i
@@ -255,15 +255,18 @@ __wt_update_serial(WT_SESSION_IMPL *session, WT_PAGE *page,
* obsolete check at a time, and to protect updates from disappearing
* under reconciliation.
*/
- if (upd->next != NULL) {
+ if (upd->next != NULL &&
+ __wt_txn_visible_all(session, page->modify->obsolete_check_txn)) {
F_CAS_ATOMIC(page, WT_PAGE_SCANNING, ret);
/* If we can't lock it, don't scan, that's okay. */
if (ret != 0)
return (0);
- obsolete = __wt_update_obsolete_check(session, upd->next);
+ obsolete = __wt_update_obsolete_check(session, page, upd->next);
F_CLR_ATOMIC(page, WT_PAGE_SCANNING);
- if (obsolete != NULL)
+ if (obsolete != NULL) {
+ page->modify->obsolete_check_txn = WT_TXN_NONE;
__wt_update_obsolete_free(session, page, obsolete);
+ }
}
return (0);