diff options
-rw-r--r-- | src/third_party/wiredtiger/import.data | 2 | ||||
-rw-r--r-- | src/third_party/wiredtiger/test/format/snap.c | 15 |
2 files changed, 15 insertions, 2 deletions
diff --git a/src/third_party/wiredtiger/import.data b/src/third_party/wiredtiger/import.data index cf152fb7603..e3bf77cf31a 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": "5b959684c38f3297bdaea84bb98dca793f409089" + "commit": "2d6a21cf8fd6c909236092cbd0f10a0e07b0ad3c" } diff --git a/src/third_party/wiredtiger/test/format/snap.c b/src/third_party/wiredtiger/test/format/snap.c index eb1570d2cc4..8ed401bf45f 100644 --- a/src/third_party/wiredtiger/test/format/snap.c +++ b/src/third_party/wiredtiger/test/format/snap.c @@ -29,6 +29,8 @@ #include "format.h" #define SNAP_LIST_SIZE 512 +#define TXN_ROLLBACK_REASON_OLDEST_FOR_EVICTION \ + "oldest pinned transaction ID rolled back for eviction" /* * snap_init -- @@ -659,7 +661,18 @@ snap_repeat(TINFO *tinfo, SNAP_OPS *snap) testutil_check(session->rollback_transaction(session, NULL)); } - testutil_assert(max_retry < MAX_RETRY_ON_ROLLBACK); + + /* + * If we have a long running checkpoint, it may block eviction for an excessive amount of time. + * This would cause the snapshot read to rollback even we retry many times. Give up and ignore + * this case. + */ + if (max_retry >= MAX_RETRY_ON_ROLLBACK && + strcmp(session->get_rollback_reason(session), TXN_ROLLBACK_REASON_OLDEST_FOR_EVICTION) == 0) + WARN( + "%s: %s", "snap repeat exceeds maximum retry", TXN_ROLLBACK_REASON_OLDEST_FOR_EVICTION); + else + testutil_assert(max_retry < MAX_RETRY_ON_ROLLBACK); testutil_check(session->rollback_transaction(session, NULL)); } |