Critical - P2
Storage - Ra 2022-04-04, Storage - Ra 2022-04-18
verify-datafile-from-little-endian failed on ~ Big-endian (s390x/zSeries)
Project: WiredTiger (develop)
WT-8543 Rollback-to-stable doesn't fail if there are active prepared transactions (#7361)
Rollback-to-stable should detect a prepared transaction as an active transaction and fail. | 29 Dec 21 22:36 UTC
Evergreen Subscription: ; Evergreen Event:
Task Logs (verify-datafile-from-little-endian)
Details of problem
The assertion that fired is:
[2021/12/30 21:42:07.767] [1640900527:767641][6693:0x3ffa4f78b30], wt, file:wt.wt, txn rollback_to_stable: [WT_VERB_DEFAULT][ERROR]: __rollback_ondisk_fixup_key, 560: hs_stop_durable_ts == WT_TS_NONE || hs_stop_durable_ts < newer_hs_durable_ts || unpack->tw.prepare
This assertion is checking to ensure that one of:
- The stop timestamp is WT_TS_NONE (the stop is globally visible).
- The stop timestamp is older than the next timestamp in the update chain.
- The update is associated with a prepared transaction.
It's surprising that the failure happens persistently when checking for cross-endian compatibility and not other places. We should ensure that the code extracting timestamps from disk is doing the right thing when encoding/decoding in terms of endianness.