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.