Details
Description
Treat the updates with WT_TS_NONE timestamp and not aborted transaction id are to be treated as a valid stable update. In the rollback fuzzer unclean shutdown test, the updates inserted with a WT_TS_NONE timestamp.
The test failure is can found here:
https://evergreen.mongodb.com/task/mongodb_mongo_v4.4_enterprise_rhel_62_64_bit_rollback_fuzzer_unclean_shutdowns_0_enterprise_rhel_62_64_bit_60369839c72b029a884f3f24221287220066700d_20_03_30_03_47_46/0
With the following fix, the test passes:
diff --git a/src/txn/txn_rollback_to_stable.c b/src/txn/txn_rollback_to_stable.c
|
index cdf5f93a9..c65a42175 100644
|
--- a/src/txn/txn_rollback_to_stable.c
|
+++ b/src/txn/txn_rollback_to_stable.c
|
@@ -30,6 +30,12 @@ __rollback_abort_newer_update(WT_SESSION_IMPL *session, WT_UPDATE *first_upd,
|
if (upd->txnid == WT_TXN_ABORTED || upd->start_ts == WT_TS_NONE) {
|
if (upd == first_upd)
|
first_upd = upd->next;
|
+
|
+ /*
|
+ * Consider WT_TS_NONE timestamped update as a valid stable update if it is not aborted.
|
+ */
|
+ if (upd->txnid != WT_TXN_ABORTED)
|
+ *stable_update_found = true;
|
} else if (rollback_timestamp < upd->durable_ts) {
|
/*
|
* If any updates are aborted, all newer updates better be aborted as well.
|