diff options
author | Etienne Petrel <etienne.petrel@mongodb.com> | 2022-03-16 03:39:43 +0000 |
---|---|---|
committer | Etienne Petrel <etienne.petrel@mongodb.com> | 2022-03-16 03:39:43 +0000 |
commit | 9f501796f236d4fcd1d5f502dab778020603eddd (patch) | |
tree | c3f187e03f3ffd2ca7741d87ee8a5566d2cd6f8d | |
parent | 58164389980f22f7c30a951e51776316e2519156 (diff) | |
download | mongo-9f501796f236d4fcd1d5f502dab778020603eddd.tar.gz |
Import wiredtiger: 09610264e13a80c67c83f72814a22865c2f43f41 from branch mongodb-5.3
ref: 01f90f2464..09610264e1
for: 5.3.0-rc4
WT-8924 Don't check against on disk time window if there is an insert list when checking for conflicts in row-store
-rw-r--r-- | src/third_party/wiredtiger/import.data | 2 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/include/txn_inline.h | 7 |
2 files changed, 7 insertions, 2 deletions
diff --git a/src/third_party/wiredtiger/import.data b/src/third_party/wiredtiger/import.data index b1a4596f3e1..220a8b55129 100644 --- a/src/third_party/wiredtiger/import.data +++ b/src/third_party/wiredtiger/import.data @@ -2,5 +2,5 @@ "vendor": "wiredtiger", "github": "wiredtiger/wiredtiger.git", "branch": "mongodb-5.3", - "commit": "01f90f2464dcf5a03d5968d75c0f9ec4172437fe" + "commit": "09610264e13a80c67c83f72814a22865c2f43f41" } diff --git a/src/third_party/wiredtiger/src/include/txn_inline.h b/src/third_party/wiredtiger/src/include/txn_inline.h index dfe431aee14..f9825d204d5 100644 --- a/src/third_party/wiredtiger/src/include/txn_inline.h +++ b/src/third_party/wiredtiger/src/include/txn_inline.h @@ -1368,8 +1368,13 @@ __wt_txn_modify_check( * Check conflict against any on-page value if there is no update on the update chain except * aborted updates. Otherwise, we would have either already detected a conflict if we saw an * uncommitted update or determined that it would be safe to write if we saw a committed update. + * + * In the case of row-store we also need to check that the insert list is empty as the existence + * of it implies there is no on disk value for the given key. However we can still get a + * time-window from an unrelated on-disk value if we are not careful as the slot can still be + * set on the cursor b-tree. */ - if (!rollback && upd == NULL) { + if (!rollback && upd == NULL && (CUR2BT(cbt)->type != BTREE_ROW || cbt->ins == NULL)) { tw_found = __wt_read_cell_time_window(cbt, &tw); if (tw_found) { if (WT_TIME_WINDOW_HAS_STOP(&tw)) { |