diff options
author | Luke Chen <luke.chen@mongodb.com> | 2022-01-21 16:03:19 +1100 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-01-21 05:33:29 +0000 |
commit | 4648ad942c3cb883677e089bea34e37e5304eaf5 (patch) | |
tree | d7b2c8b68ed1fd2bc7c05db81d06f77796fd4098 | |
parent | 5a68aee5099ab053a97c1ec5cfacee42042e7d6c (diff) | |
download | mongo-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.data | 2 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/session/session_api.c | 13 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/session/session_compact.c | 5 | ||||
-rw-r--r-- | src/third_party/wiredtiger/test/format/bulk.c | 3 | ||||
-rw-r--r-- | src/third_party/wiredtiger/test/format/compact.c | 6 | ||||
-rw-r--r-- | src/third_party/wiredtiger/test/format/hs.c | 3 | ||||
-rw-r--r-- | src/third_party/wiredtiger/test/format/ops.c | 18 | ||||
-rw-r--r-- | src/third_party/wiredtiger/test/format/snap.c | 2 | ||||
-rw-r--r-- | src/third_party/wiredtiger/test/suite/test_prepare13.py | 5 | ||||
-rw-r--r-- | src/third_party/wiredtiger/test/suite/test_truncate07.py | 2 |
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 |