summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Chen <luke.chen@mongodb.com>2022-01-21 16:03:19 +1100
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-01-21 05:33:29 +0000
commit4648ad942c3cb883677e089bea34e37e5304eaf5 (patch)
treed7b2c8b68ed1fd2bc7c05db81d06f77796fd4098
parent5a68aee5099ab053a97c1ec5cfacee42042e7d6c (diff)
downloadmongo-4648ad942c3cb883677e089bea34e37e5304eaf5.tar.gz
Import wiredtiger: 6b6c57899c9e5d63baa57fc90badfb2995d6ee9d from branch mongodb-master
ref: a0b41e9927..6b6c57899c for: 5.3.0 WT-8686 Map WT_PREPARE_CONFLICT to WT_ROLLBACK for WT_SESSION compact and truncate methods
-rw-r--r--src/third_party/wiredtiger/import.data2
-rw-r--r--src/third_party/wiredtiger/src/session/session_api.c13
-rw-r--r--src/third_party/wiredtiger/src/session/session_compact.c5
-rw-r--r--src/third_party/wiredtiger/test/format/bulk.c3
-rw-r--r--src/third_party/wiredtiger/test/format/compact.c6
-rw-r--r--src/third_party/wiredtiger/test/format/hs.c3
-rw-r--r--src/third_party/wiredtiger/test/format/ops.c18
-rw-r--r--src/third_party/wiredtiger/test/format/snap.c2
-rw-r--r--src/third_party/wiredtiger/test/suite/test_prepare13.py5
-rw-r--r--src/third_party/wiredtiger/test/suite/test_truncate07.py2
10 files changed, 37 insertions, 22 deletions
diff --git a/src/third_party/wiredtiger/import.data b/src/third_party/wiredtiger/import.data
index cd222be9e8f..77fb4b047e8 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-master",
- "commit": "a0b41e99278807fb1f27525602feb0991d3b1e9d"
+ "commit": "6b6c57899c9e5d63baa57fc90badfb2995d6ee9d"
}
diff --git a/src/third_party/wiredtiger/src/session/session_api.c b/src/third_party/wiredtiger/src/session/session_api.c
index db9ad023416..bd107fcff7c 100644
--- a/src/third_party/wiredtiger/src/session/session_api.c
+++ b/src/third_party/wiredtiger/src/session/session_api.c
@@ -1498,16 +1498,21 @@ __session_truncate(
WT_ERR(__wt_session_range_truncate(session, uri, start, stop));
err:
+ /* Map prepare-conflict to rollback. */
+ if (ret == WT_PREPARE_CONFLICT)
+ ret = WT_ROLLBACK;
+
TXN_API_END(session, ret, false);
if (ret != 0)
WT_STAT_CONN_INCR(session, session_table_truncate_fail);
else
WT_STAT_CONN_INCR(session, session_table_truncate_success);
- /*
- * Only map WT_NOTFOUND to ENOENT if a URI was specified.
- */
- return (ret == WT_NOTFOUND && uri != NULL ? ENOENT : ret);
+
+ /* Map WT_NOTFOUND to ENOENT if a URI was specified. */
+ if (ret == WT_NOTFOUND && uri != NULL)
+ ret = ENOENT;
+ return (ret);
}
/*
diff --git a/src/third_party/wiredtiger/src/session/session_compact.c b/src/third_party/wiredtiger/src/session/session_compact.c
index 6c7d51f41b1..550fefa1e7d 100644
--- a/src/third_party/wiredtiger/src/session/session_compact.c
+++ b/src/third_party/wiredtiger/src/session/session_compact.c
@@ -420,6 +420,11 @@ err:
else
WT_STAT_CONN_INCR(session, session_table_compact_success);
WT_STAT_CONN_SET(session, session_table_compact_running, 0);
+
+ /* Map prepare-conflict to rollback. */
+ if (ret == WT_PREPARE_CONFLICT)
+ ret = WT_ROLLBACK;
+
API_END_RET_NOTFOUND_MAP(session, ret);
}
diff --git a/src/third_party/wiredtiger/test/format/bulk.c b/src/third_party/wiredtiger/test/format/bulk.c
index d901ac5f0f8..c90492e247f 100644
--- a/src/third_party/wiredtiger/test/format/bulk.c
+++ b/src/third_party/wiredtiger/test/format/bulk.c
@@ -150,7 +150,8 @@ wts_load(TABLE *table, void *arg)
* row counter and continue.
*/
if ((ret = cursor->insert(cursor)) != 0) {
- testutil_assert(ret == WT_CACHE_FULL || ret == WT_ROLLBACK);
+ testutil_assertfmt(
+ ret == WT_CACHE_FULL || ret == WT_ROLLBACK, "WT_CURSOR.insert failed: %d", ret);
if (g.transaction_timestamps_config) {
bulk_rollback_transaction(session);
diff --git a/src/third_party/wiredtiger/test/format/compact.c b/src/third_party/wiredtiger/test/format/compact.c
index f4b53f21f75..a44523a6fa6 100644
--- a/src/third_party/wiredtiger/test/format/compact.c
+++ b/src/third_party/wiredtiger/test/format/compact.c
@@ -69,9 +69,9 @@ compact(void *arg)
*/
table = table_select(NULL);
ret = session->compact(session, table->uri, NULL);
- if (ret != 0 && ret != EBUSY && ret != ETIMEDOUT && ret != WT_ROLLBACK &&
- ret != WT_CACHE_FULL)
- testutil_die(ret, "session.compact");
+ testutil_assertfmt(ret == 0 || ret == EBUSY || ret == ETIMEDOUT || ret == WT_CACHE_FULL ||
+ ret == WT_ROLLBACK,
+ "WT_SESSION.compact failed: %s: %d", table->uri, ret);
}
testutil_check(session->close(session, NULL));
diff --git a/src/third_party/wiredtiger/test/format/hs.c b/src/third_party/wiredtiger/test/format/hs.c
index 43c1b19a390..68784034ed9 100644
--- a/src/third_party/wiredtiger/test/format/hs.c
+++ b/src/third_party/wiredtiger/test/format/hs.c
@@ -79,7 +79,8 @@ hs_cursor(void *arg)
next = mmrand(NULL, 0, 1) == 1;
for (i = mmrand(NULL, 1000, 100000); i > 0; --i) {
if ((ret = (next ? cursor->next(cursor) : cursor->prev(cursor))) != 0) {
- testutil_assert(ret == WT_NOTFOUND || ret == WT_ROLLBACK || ret == WT_CACHE_FULL);
+ testutil_assertfmt(ret == WT_NOTFOUND || ret == WT_CACHE_FULL || ret == WT_ROLLBACK,
+ "WT_CURSOR.%s failed: %d", next ? "next" : "prev", ret);
break;
}
testutil_check(
diff --git a/src/third_party/wiredtiger/test/format/ops.c b/src/third_party/wiredtiger/test/format/ops.c
index 0d407988503..62e29d2919b 100644
--- a/src/third_party/wiredtiger/test/format/ops.c
+++ b/src/third_party/wiredtiger/test/format/ops.c
@@ -586,13 +586,14 @@ prepare_transaction(TINFO *tinfo)
* OP_FAILED --
* Error handling.
*/
-#define OP_FAILED(notfound_ok) \
- do { \
- positioned = false; \
- if (intxn && (ret == WT_CACHE_FULL || ret == WT_ROLLBACK)) \
- goto rollback; \
- testutil_assert( \
- (notfound_ok && ret == WT_NOTFOUND) || ret == WT_CACHE_FULL || ret == WT_ROLLBACK); \
+#define OP_FAILED(notfound_ok) \
+ do { \
+ positioned = false; \
+ if (intxn && (ret == WT_CACHE_FULL || ret == WT_ROLLBACK)) \
+ goto rollback; \
+ testutil_assertfmt( \
+ (notfound_ok && ret == WT_NOTFOUND) || ret == WT_CACHE_FULL || ret == WT_ROLLBACK, \
+ "operation failed: %d", ret); \
} while (0)
/*
@@ -1031,7 +1032,8 @@ update_instead_of_chosen_op:
__wt_yield(); /* Encourage races */
ret = snap_repeat_txn(tinfo);
- testutil_assert(ret == 0 || ret == WT_ROLLBACK || ret == WT_CACHE_FULL);
+ testutil_assertfmt(
+ ret == 0 || ret == WT_ROLLBACK || ret == WT_CACHE_FULL, "operation failed: %d", ret);
if (ret == WT_ROLLBACK || ret == WT_CACHE_FULL)
goto rollback;
}
diff --git a/src/third_party/wiredtiger/test/format/snap.c b/src/third_party/wiredtiger/test/format/snap.c
index 7ddd094f473..2982f5bf4a1 100644
--- a/src/third_party/wiredtiger/test/format/snap.c
+++ b/src/third_party/wiredtiger/test/format/snap.c
@@ -586,7 +586,7 @@ snap_repeat(TINFO *tinfo, SNAP_OPS *snap)
*/
if ((ret = snap_verify(tinfo, snap)) == 0)
break;
- testutil_assert(ret == WT_ROLLBACK);
+ testutil_assertfmt(ret == WT_ROLLBACK, "operation failed: %d", ret);
testutil_check(session->rollback_transaction(session, NULL));
}
diff --git a/src/third_party/wiredtiger/test/suite/test_prepare13.py b/src/third_party/wiredtiger/test/suite/test_prepare13.py
index 1b6b85a37fc..0f7c9713b60 100644
--- a/src/third_party/wiredtiger/test/suite/test_prepare13.py
+++ b/src/third_party/wiredtiger/test/suite/test_prepare13.py
@@ -91,13 +91,14 @@ class test_prepare13(wttest.WiredTigerTestCase):
cursor.close()
# Truncate the middle chunk and expect a conflict.
- preparemsg = '/conflict with a prepared update/'
+ msg = preparemsg = '/conflict between concurrent operations/'
s.begin_transaction()
c1 = s.open_cursor(uri, None)
c1.set_key(simple_key(c1, 100))
c2 = s.open_cursor(uri, None)
c2.set_key(simple_key(c1, nrows))
- self.assertRaisesException(wiredtiger.WiredTigerError, lambda:s.truncate(None, c1, c2, None), preparemsg)
+ self.assertRaisesException(
+ wiredtiger.WiredTigerError, lambda:s.truncate(None, c1, c2, None), msg)
c1.close()
c2.close()
s.rollback_transaction()
diff --git a/src/third_party/wiredtiger/test/suite/test_truncate07.py b/src/third_party/wiredtiger/test/suite/test_truncate07.py
index 26a9dd894cf..556ef8dd1e1 100644
--- a/src/third_party/wiredtiger/test/suite/test_truncate07.py
+++ b/src/third_party/wiredtiger/test/suite/test_truncate07.py
@@ -186,7 +186,7 @@ class test_truncate07(wttest.WiredTigerTestCase):
# Truncate the data, including what we prepared.
self.session.begin_transaction()
err = self.truncate(ds.uri, ds.key, nrows // 4, nrows - nrows // 4)
- self.assertEqual(err, WT_PREPARE_CONFLICT)
+ self.assertEqual(err, WT_ROLLBACK)
self.session.rollback_transaction()
# Move the stable timestamp forward before exiting so we don't waste time rolling