WritePrepared: Fix flaky test MaxCatchupWithNewSnapshot (#5850)

Summary:
MaxCatchupWithNewSnapshot tests that the snapshot sequence number will be larger than the max sequence number when the snapshot was taken. However since the test does not have access to the max sequence number when the snapshot was taken, it uses max sequence number after that, which could have advanced the snapshot by then, thus making the test flaky.
The fix is to compare with max sequence number before the snapshot was taken, which is a lower bound for the value when the snapshot was taken.
Pull Request resolved: https://github.com/facebook/rocksdb/pull/5850

Test Plan: ~/gtest-parallel/gtest-parallel --repeat=12800 ./write_prepared_transaction_test --gtest_filter="*MaxCatchupWithNewSnapshot*"

Differential Revision: D17608926

Pulled By: maysamyabandeh

fbshipit-source-id: b122ae5a27f982b290bd60da852e28d3c5eb0136
This commit is contained in:
Maysam Yabandeh 2019-11-04 16:22:26 -08:00 committed by Facebook Github Bot
parent 0d91a981e9
commit 52733b4498

View File

@ -1386,9 +1386,12 @@ TEST_P(WritePreparedTransactionTest, MaxCatchupWithNewSnapshot) {
std::this_thread::yield();
}
for (int i = 0; i < 10; i++) {
SequenceNumber max_lower_bound = wp_db->max_evicted_seq_;
auto snap = db->GetSnapshot();
if (snap->GetSequenceNumber() != 0) {
ASSERT_LT(wp_db->max_evicted_seq_, snap->GetSequenceNumber());
// Value of max_evicted_seq_ when snapshot was taken in unknown. We thus
// compare with the lower bound instead as an approximation.
ASSERT_LT(max_lower_bound, snap->GetSequenceNumber());
} // seq 0 is ok to be less than max since nothing is visible to it
db->ReleaseSnapshot(snap);
}