summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/third_party/wiredtiger/import.data2
-rw-r--r--src/third_party/wiredtiger/test/format/snap.c15
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));
}