diff options
author | Luke Chen <luke.chen@mongodb.com> | 2022-03-02 17:10:08 +1100 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-03-02 06:46:31 +0000 |
commit | 2d50afc549513ae4d1dbcb0009b23b7d06e520a5 (patch) | |
tree | d2681f889057e3c1d78de446dd81c12e03550452 /src/third_party/wiredtiger/test | |
parent | 176d9fe250351332f84959c8ff809d918ce24cdd (diff) | |
download | mongo-2d50afc549513ae4d1dbcb0009b23b7d06e520a5.tar.gz |
Import wiredtiger: bafff542e46c9102a553dba7dd8e550e2412490d from branch mongodb-master
ref: 9aefe65120..bafff542e4
for: 6.0.0
WT-8747 Reading between commit_timestamp and durable_timestamp can produce inconsistency
Diffstat (limited to 'src/third_party/wiredtiger/test')
19 files changed, 122 insertions, 109 deletions
diff --git a/src/third_party/wiredtiger/test/suite/test_durable_rollback_to_stable.py b/src/third_party/wiredtiger/test/suite/test_durable_rollback_to_stable.py index c6002b97b91..a1695ced559 100644 --- a/src/third_party/wiredtiger/test/suite/test_durable_rollback_to_stable.py +++ b/src/third_party/wiredtiger/test/suite/test_durable_rollback_to_stable.py @@ -99,7 +99,7 @@ class test_durable_rollback_to_stable(wttest.WiredTigerTestCase, suite_subproces # Read the first update value with timestamp. self.assertEquals(cursor.reset(), 0) - session.begin_transaction('read_timestamp=' + self.timestamp_str(200)) + session.begin_transaction('read_timestamp=' + self.timestamp_str(220)) self.assertEquals(cursor.next(), 0) for i in range(1, 50): self.assertEquals(cursor.get_value(), ds.value(111)) diff --git a/src/third_party/wiredtiger/test/suite/test_durable_ts01.py b/src/third_party/wiredtiger/test/suite/test_durable_ts01.py index 30832ee04b5..6d45643f54b 100644 --- a/src/third_party/wiredtiger/test/suite/test_durable_ts01.py +++ b/src/third_party/wiredtiger/test/suite/test_durable_ts01.py @@ -98,7 +98,7 @@ class test_durable_ts01(wttest.WiredTigerTestCase): # Read the first update value with timestamp. self.assertEquals(cursor.reset(), 0) - session.begin_transaction('read_timestamp=' + self.timestamp_str(200)) + session.begin_transaction('read_timestamp=' + self.timestamp_str(220)) self.assertEquals(cursor.next(), 0) for i in range(1, 50): self.assertEquals(cursor.get_value(), ds.value(111)) diff --git a/src/third_party/wiredtiger/test/suite/test_durable_ts03.py b/src/third_party/wiredtiger/test/suite/test_durable_ts03.py index 44fb78f5fd9..f78f85a187e 100755 --- a/src/third_party/wiredtiger/test/suite/test_durable_ts03.py +++ b/src/third_party/wiredtiger/test/suite/test_durable_ts03.py @@ -96,11 +96,18 @@ class test_durable_ts03(wttest.WiredTigerTestCase): self.assertEqual(value, valueA) session.commit_transaction() - # Read the updated data to confirm that it is visible. + # Check that the updated data can still be read even while it is not yet durable. self.assertEquals(cursor.reset(), 0) session.begin_transaction('read_timestamp=' + self.timestamp_str(210)) for key, value in cursor: self.assertEqual(value, valueB) + session.rollback_transaction() + + # Read the updated data to confirm that it is visible. + self.assertEquals(cursor.reset(), 0) + session.begin_transaction('read_timestamp=' + self.timestamp_str(220)) + for key, value in cursor: + self.assertEqual(value, valueB) session.commit_transaction() self.session.checkpoint("use_timestamp=true") diff --git a/src/third_party/wiredtiger/test/suite/test_flcs02.py b/src/third_party/wiredtiger/test/suite/test_flcs02.py index 869ff2c8717..25022d12092 100644 --- a/src/third_party/wiredtiger/test/suite/test_flcs02.py +++ b/src/third_party/wiredtiger/test/suite/test_flcs02.py @@ -30,7 +30,7 @@ import wiredtiger, wttest from wtdataset import SimpleDataSet from wtscenario import make_scenarios -# test_flcs01.py +# test_flcs02.py # # Test various cases of deleting values and expecting them to read back as 0, # in the presence of timestamps and history. @@ -39,7 +39,7 @@ from wtscenario import make_scenarios # evict it explicitly, to make sure that the first section of the test exercises # in-memory update records. (Testing on an in-memory database does not have that # effect.) -class test_flcs01(wttest.WiredTigerTestCase): +class test_flcs02(wttest.WiredTigerTestCase): prepare_values = [ ('no_prepare', dict(do_prepare=False)), ('prepare', dict(do_prepare=True)) @@ -134,21 +134,20 @@ class test_flcs01(wttest.WiredTigerTestCase): cursor.reset() self.session.rollback_transaction() - self.session.begin_transaction('read_timestamp=' + self.timestamp_str(committs)) - v = cursor[k] - self.assertEqual(v, 0) - cursor.reset() - self.check_next(cursor, k, 0) - self.check_prev(cursor, k, 0) - self.session.rollback_transaction() + def readat(readts): + self.session.begin_transaction('read_timestamp=' + self.timestamp_str(readts)) + v = cursor[k] + self.assertEqual(v, 0) + cursor.reset() + self.check_next(cursor, k, 0) + self.check_prev(cursor, k, 0) + self.session.rollback_transaction() - self.session.begin_transaction('read_timestamp=' + self.timestamp_str(committs + 5)) - v = cursor[k] - self.assertEqual(v, 0) - cursor.reset() - self.check_next(cursor, k, 0) - self.check_prev(cursor, k, 0) - self.session.rollback_transaction() + if not self.do_prepare: + # Avoid reading between commit and durable. + readat(committs) + readat(committs+1) + readat(committs+5) def test_flcs(self): uri = "table:test_flcs02" @@ -262,7 +261,8 @@ class test_flcs01(wttest.WiredTigerTestCase): self.session.rollback_transaction() # This should definitely have extended the table in the present. - self.session.begin_transaction('read_timestamp=' + self.timestamp_str(50)) + read_ts = 51 if self.do_prepare else 50 + self.session.begin_transaction('read_timestamp=' + self.timestamp_str(read_ts)) v = cursor[appendkey2] self.assertEqual(v, 0) cursor.reset() @@ -274,7 +274,7 @@ class test_flcs01(wttest.WiredTigerTestCase): self.evict(uri, 1, 1) # The committed zeros should still be there. - self.session.begin_transaction('read_timestamp=' + self.timestamp_str(50)) + self.session.begin_transaction('read_timestamp=' + self.timestamp_str(read_ts)) v = cursor[updatekey2] self.assertEqual(v, 0) cursor.reset() @@ -282,7 +282,7 @@ class test_flcs01(wttest.WiredTigerTestCase): self.check_prev(cursor, updatekey2, 0) self.session.rollback_transaction() - self.session.begin_transaction('read_timestamp=' + self.timestamp_str(50)) + self.session.begin_transaction('read_timestamp=' + self.timestamp_str(read_ts)) v = cursor[appendkey2] self.assertEqual(v, 0) cursor.reset() diff --git a/src/third_party/wiredtiger/test/suite/test_hs06.py b/src/third_party/wiredtiger/test/suite/test_hs06.py index 42b502df4b2..38e7756c405 100644 --- a/src/third_party/wiredtiger/test/suite/test_hs06.py +++ b/src/third_party/wiredtiger/test/suite/test_hs06.py @@ -266,11 +266,17 @@ class test_hs06(wttest.WiredTigerTestCase): prepare_session.commit_transaction( 'commit_timestamp=' + self.timestamp_str(5) + ',durable_timestamp=' + self.timestamp_str(6)) + # Specifically check that we can read between commit and durable. self.session.begin_transaction('read_timestamp=' + self.timestamp_str(5)) for i in range(1, 11): self.assertEquals(value2, cursor[self.create_key(i)]) self.session.rollback_transaction() + self.session.begin_transaction('read_timestamp=' + self.timestamp_str(6)) + for i in range(1, 11): + self.assertEquals(value2, cursor[self.create_key(i)]) + self.session.rollback_transaction() + def test_hs_multiple_updates(self): # Create a small table. uri = "table:test_hs06" diff --git a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable01.py b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable01.py index f674d2f0da5..279090c699d 100755 --- a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable01.py +++ b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable01.py @@ -229,12 +229,12 @@ class test_rollback_to_stable01(test_rollback_to_stable_base): self.large_updates(uri, valuea, ds, nrows, self.prepare, 10) # Check that all updates are seen. - self.check(valuea, uri, nrows, None, 10) + self.check(valuea, uri, nrows, None, 11 if self.prepare else 10) # Remove all keys with newer timestamp. self.large_removes(uri, ds, nrows, self.prepare, 20) # Check that the no keys should be visible. - self.check(valuea, uri, 0, nrows, 20) + self.check(valuea, uri, 0, nrows, 21 if self.prepare else 20) # Pin stable to timestamp 20 if prepare otherwise 10. if self.prepare: diff --git a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable02.py b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable02.py index 523a1beca5f..c3d4dc39d45 100755 --- a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable02.py +++ b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable02.py @@ -98,19 +98,19 @@ class test_rollback_to_stable02(test_rollback_to_stable_base): self.large_updates(uri, valuea, ds, nrows, self.prepare, 10) # Check that all updates are seen. - self.check(valuea, uri, nrows, None, 10) + self.check(valuea, uri, nrows, None, 11 if self.prepare else 10) self.large_updates(uri, valueb, ds, nrows, self.prepare, 20) # Check that the new updates are only seen after the update timestamp. - self.check(valueb, uri, nrows, None, 20) + self.check(valueb, uri, nrows, None, 21 if self.prepare else 20) self.large_updates(uri, valuec, ds, nrows, self.prepare, 30) # Check that the new updates are only seen after the update timestamp. - self.check(valuec, uri, nrows, None, 30) + self.check(valuec, uri, nrows, None, 31 if self.prepare else 30) self.large_updates(uri, valued, ds, nrows, self.prepare, 40) # Check that the new updates are only seen after the update timestamp. - self.check(valued, uri, nrows, None, 40) + self.check(valued, uri, nrows, None, 41 if self.prepare else 40) # Pin stable to timestamp 30 if prepare otherwise 20. if self.prepare: diff --git a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable03.py b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable03.py index 564983121a7..f0792af8b22 100755 --- a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable03.py +++ b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable03.py @@ -85,15 +85,15 @@ class test_rollback_to_stable01(test_rollback_to_stable_base): self.large_updates(uri, valuea, ds, nrows, self.prepare, 10) # Check that all updates are seen. - self.check(valuea, uri, nrows, None, 10) + self.check(valuea, uri, nrows, None, 11 if self.prepare else 10) self.large_updates(uri, valueb, ds, nrows, self.prepare, 20) # Check that all updates are seen. - self.check(valueb, uri, nrows, None, 20) + self.check(valueb, uri, nrows, None, 21 if self.prepare else 20) self.large_updates(uri, valuec, ds, nrows, self.prepare, 30) # Check that all updates are seen. - self.check(valuec, uri, nrows, None, 30) + self.check(valuec, uri, nrows, None, 31 if self.prepare else 30) # Pin stable to timestamp 30 if prepare otherwise 20. if self.prepare: diff --git a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable04.py b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable04.py index 69e23f574e5..6bc9cda70a4 100755 --- a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable04.py +++ b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable04.py @@ -123,19 +123,19 @@ class test_rollback_to_stable04(test_rollback_to_stable_base): self.large_modifies(uri, 'Z', ds, 7, 1, nrows, self.prepare, 140) # Verify data is visible and correct. - self.check(value_a, uri, nrows, None, 20) - self.check(value_modQ, uri, nrows, None, 30) - self.check(value_modR, uri, nrows, None, 40) - self.check(value_modS, uri, nrows, None, 50) - self.check(value_b, uri, nrows, None, 60) - self.check(value_c, uri, nrows, None, 70) - self.check(value_modT, uri, nrows, None, 80) - self.check(value_d, uri, nrows, None, 90) - self.check(value_modW, uri, nrows, None, 100) - self.check(value_a, uri, nrows, None, 110) - self.check(value_modX, uri, nrows, None, 120) - self.check(value_modY, uri, nrows, None, 130) - self.check(value_modZ, uri, nrows, None, 140) + self.check(value_a, uri, nrows, None, 21 if self.prepare else 20) + self.check(value_modQ, uri, nrows, None, 31 if self.prepare else 30) + self.check(value_modR, uri, nrows, None, 41 if self.prepare else 40) + self.check(value_modS, uri, nrows, None, 51 if self.prepare else 50) + self.check(value_b, uri, nrows, None, 61 if self.prepare else 60) + self.check(value_c, uri, nrows, None, 71 if self.prepare else 70) + self.check(value_modT, uri, nrows, None, 81 if self.prepare else 80) + self.check(value_d, uri, nrows, None, 91 if self.prepare else 90) + self.check(value_modW, uri, nrows, None, 101 if self.prepare else 100) + self.check(value_a, uri, nrows, None, 111 if self.prepare else 110) + self.check(value_modX, uri, nrows, None, 121 if self.prepare else 120) + self.check(value_modY, uri, nrows, None, 131 if self.prepare else 130) + self.check(value_modZ, uri, nrows, None, 141 if self.prepare else 140) # Pin stable to timestamp 40 if prepare otherwise 30. if self.prepare: diff --git a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable06.py b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable06.py index d2dd6d9f56f..676bf934b6e 100755 --- a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable06.py +++ b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable06.py @@ -92,10 +92,10 @@ class test_rollback_to_stable06(test_rollback_to_stable_base): self.large_updates(uri, value_d, ds, nrows, self.prepare, 50) # Verify data is visible and correct. - self.check(value_a, uri, nrows, None, 20) - self.check(value_b, uri, nrows, None, 30) - self.check(value_c, uri, nrows, None, 40) - self.check(value_d, uri, nrows, None, 50) + self.check(value_a, uri, nrows, None, 21 if self.prepare else 20) + self.check(value_b, uri, nrows, None, 31 if self.prepare else 30) + self.check(value_c, uri, nrows, None, 41 if self.prepare else 40) + self.check(value_d, uri, nrows, None, 51 if self.prepare else 50) # Checkpoint to ensure the data is flushed, then rollback to the stable timestamp. if not self.in_memory: diff --git a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable07.py b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable07.py index f9e045e0a81..f54f01b8858 100755 --- a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable07.py +++ b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable07.py @@ -86,10 +86,10 @@ class test_rollback_to_stable07(test_rollback_to_stable_base): self.large_updates(uri, value_a, ds, nrows, self.prepare, 50) # Verify data is visible and correct. - self.check(value_d, uri, nrows, None, 20) - self.check(value_c, uri, nrows, None, 30) - self.check(value_b, uri, nrows, None, 40) - self.check(value_a, uri, nrows, None, 50) + self.check(value_d, uri, nrows, None, 21 if self.prepare else 20) + self.check(value_c, uri, nrows, None, 31 if self.prepare else 30) + self.check(value_b, uri, nrows, None, 41 if self.prepare else 40) + self.check(value_a, uri, nrows, None, 51 if self.prepare else 50) # Pin stable to timestamp 50 if prepare otherwise 40. if self.prepare: @@ -106,9 +106,9 @@ class test_rollback_to_stable07(test_rollback_to_stable_base): self.session.checkpoint() # Verify additional update data is visible and correct. - self.check(value_b, uri, nrows, None, 60) - self.check(value_c, uri, nrows, None, 70) - self.check(value_d, uri, nrows, None, 80) + self.check(value_b, uri, nrows, None, 61 if self.prepare else 60) + self.check(value_c, uri, nrows, None, 71 if self.prepare else 70) + self.check(value_d, uri, nrows, None, 81 if self.prepare else 80) # Simulate a server crash and restart. simulate_crash_restart(self, ".", "RESTART") diff --git a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable08.py b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable08.py index 8f04a327aaa..736670e12cf 100755 --- a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable08.py +++ b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable08.py @@ -92,10 +92,10 @@ class test_rollback_to_stable08(test_rollback_to_stable_base): self.large_updates(uri, value_d, ds, nrows, self.prepare, 50) # Verify data is visible and correct. - self.check(value_a, uri, nrows, None, 20) - self.check(value_b, uri, nrows, None, 30) - self.check(value_c, uri, nrows, None, 40) - self.check(value_d, uri, nrows, None, 50) + self.check(value_a, uri, nrows, None, 21 if self.prepare else 20) + self.check(value_b, uri, nrows, None, 31 if self.prepare else 30) + self.check(value_c, uri, nrows, None, 41 if self.prepare else 40) + self.check(value_d, uri, nrows, None, 51 if self.prepare else 50) # Pin stable to timestamp 60 if prepare otherwise 50. if self.prepare: diff --git a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable10.py b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable10.py index 2571d694c6a..d3cfc11a9c0 100755 --- a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable10.py +++ b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable10.py @@ -104,15 +104,15 @@ class test_rollback_to_stable10(test_rollback_to_stable_base): self.large_updates(uri_2, value_a, ds_2, nrows, self.prepare, 50) # Verify data is visible and correct. - self.check(value_d, uri_1, nrows, None, 20) - self.check(value_c, uri_1, nrows, None, 30) - self.check(value_b, uri_1, nrows, None, 40) - self.check(value_a, uri_1, nrows, None, 50) + self.check(value_d, uri_1, nrows, None, 21 if self.prepare else 20) + self.check(value_c, uri_1, nrows, None, 31 if self.prepare else 30) + self.check(value_b, uri_1, nrows, None, 41 if self.prepare else 40) + self.check(value_a, uri_1, nrows, None, 51 if self.prepare else 50) - self.check(value_d, uri_2, nrows, None, 20) - self.check(value_c, uri_2, nrows, None, 30) - self.check(value_b, uri_2, nrows, None, 40) - self.check(value_a, uri_2, nrows, None, 50) + self.check(value_d, uri_2, nrows, None, 21 if self.prepare else 20) + self.check(value_c, uri_2, nrows, None, 31 if self.prepare else 30) + self.check(value_b, uri_2, nrows, None, 41 if self.prepare else 40) + self.check(value_a, uri_2, nrows, None, 51 if self.prepare else 50) # Pin stable to timestamp 60 if prepare otherwise 50. if self.prepare: @@ -234,15 +234,15 @@ class test_rollback_to_stable10(test_rollback_to_stable_base): self.large_updates(uri_2, value_a, ds_2, nrows, self.prepare, 50) # Verify data is visible and correct. - self.check(value_d, uri_1, nrows, None, 20) - self.check(value_c, uri_1, nrows, None, 30) - self.check(value_b, uri_1, nrows, None, 40) - self.check(value_a, uri_1, nrows, None, 50) - - self.check(value_d, uri_2, nrows, None, 20) - self.check(value_c, uri_2, nrows, None, 30) - self.check(value_b, uri_2, nrows, None, 40) - self.check(value_a, uri_2, nrows, None, 50) + self.check(value_d, uri_1, nrows, None, 21 if self.prepare else 20) + self.check(value_c, uri_1, nrows, None, 31 if self.prepare else 30) + self.check(value_b, uri_1, nrows, None, 41 if self.prepare else 40) + self.check(value_a, uri_1, nrows, None, 51 if self.prepare else 50) + + self.check(value_d, uri_2, nrows, None, 21 if self.prepare else 20) + self.check(value_c, uri_2, nrows, None, 31 if self.prepare else 30) + self.check(value_b, uri_2, nrows, None, 41 if self.prepare else 40) + self.check(value_a, uri_2, nrows, None, 51 if self.prepare else 50) # Pin stable to timestamp 60 if prepare otherwise 50. if self.prepare: diff --git a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable11.py b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable11.py index 8362688c1bc..99b1e3a4d29 100755 --- a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable11.py +++ b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable11.py @@ -83,7 +83,7 @@ class test_rollback_to_stable11(test_rollback_to_stable_base): self.large_updates(uri, value_b, ds, nrows, self.prepare, 20) # Verify data is visible and correct. - self.check(value_b, uri, nrows, None, 20) + self.check(value_b, uri, nrows, None, 21 if self.prepare else 20) # Pin stable to timestamp 28 if prepare otherwise 20. # large_updates() prepares at 1 before the timestamp passed (so 29) @@ -109,7 +109,7 @@ class test_rollback_to_stable11(test_rollback_to_stable_base): self.large_updates(uri, value_d, ds, nrows, self.prepare, 30) # Verify data is visible and correct. - self.check(value_d, uri, nrows, None, 30) + self.check(value_d, uri, nrows, None, 31 if self.prepare else 30) # Checkpoint to ensure that all the updates are flushed to disk. self.session.checkpoint() diff --git a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable12.py b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable12.py index 3eb56b574c6..31b27b9e22e 100755 --- a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable12.py +++ b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable12.py @@ -83,7 +83,7 @@ class test_rollback_to_stable12(test_rollback_to_stable_base): self.large_updates(uri, value_a, ds, nrows, self.prepare, 20) # Verify data is visible and correct. - self.check(value_a, uri, nrows, None, 20) + self.check(value_a, uri, nrows, None, 21 if self.prepare else 20) # Pin stable to timestamp 28 if prepare otherwise 20. # We prepare at commit_ts - 1 (so 29) and this is required to be strictly diff --git a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable13.py b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable13.py index fc4b2a9bdff..d3f8396b860 100644 --- a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable13.py +++ b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable13.py @@ -84,9 +84,9 @@ class test_rollback_to_stable13(test_rollback_to_stable_base): # Verify data is visible and correct. # (In FLCS, the removed rows should read back as zero.) - self.check(value_a, uri, nrows, None, 20) - self.check(None, uri, 0, nrows, 30) - self.check(value_b, uri, nrows, None, 60) + self.check(value_a, uri, nrows, None, 21 if self.prepare else 20) + self.check(None, uri, 0, nrows, 31 if self.prepare else 30) + self.check(value_b, uri, nrows, None, 61 if self.prepare else 60) # Pin stable to timestamp 50 if prepare otherwise 40. if self.prepare: @@ -159,9 +159,9 @@ class test_rollback_to_stable13(test_rollback_to_stable_base): # Verify data is visible and correct. # (In FLCS, the removed rows should read back as zero.) - self.check(value_a, uri, nrows, None, 20) - self.check(None, uri, 0, nrows, 30) - self.check(value_d, uri, nrows, None, 60) + self.check(value_a, uri, nrows, None, 21 if self.prepare else 20) + self.check(None, uri, 0, nrows, 31 if self.prepare else 30) + self.check(value_d, uri, nrows, None, 61 if self.prepare else 60) # Pin stable to timestamp 50 if prepare otherwise 40. if self.prepare: @@ -235,9 +235,9 @@ class test_rollback_to_stable13(test_rollback_to_stable_base): # Verify data is visible and correct. # (In FLCS, the removed rows should read back as zero.) - self.check(value_a, uri, nrows, None, 20) - self.check(None, uri, 0, nrows, 40) - self.check(value_c, uri, nrows, None, 60) + self.check(value_a, uri, nrows, None, 21 if self.prepare else 20) + self.check(None, uri, 0, nrows, 41 if self.prepare else 40) + self.check(value_c, uri, nrows, None, 61 if self.prepare else 60) # Simulate a server crash and restart. simulate_crash_restart(self, ".", "RESTART") @@ -290,9 +290,9 @@ class test_rollback_to_stable13(test_rollback_to_stable_base): # Verify data is visible and correct. # (In FLCS, the removed rows should read back as zero.) - self.check(value_a, uri, nrows, None, 20) - self.check(None, uri, 0, nrows, 40) - self.check(value_c, uri, nrows, None, 60) + self.check(value_a, uri, nrows, None, 21 if self.prepare else 20) + self.check(None, uri, 0, nrows, 41 if self.prepare else 40) + self.check(value_c, uri, nrows, None, 61 if self.prepare else 60) self.conn.rollback_to_stable() # Perform several updates and checkpoint. diff --git a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable14.py b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable14.py index f79554cf639..5c82099bd1e 100755 --- a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable14.py +++ b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable14.py @@ -96,11 +96,11 @@ class test_rollback_to_stable14(test_rollback_to_stable_base): self.large_modifies(uri, 'T', ds, 3, 1, nrows, self.prepare, 60) # Verify data is visible and correct. - self.check(value_a, uri, nrows, None, 20) - self.check(value_modQ, uri, nrows, None, 30) - self.check(value_modR, uri, nrows, None, 40) - self.check(value_modS, uri, nrows, None, 50) - self.check(value_modT, uri, nrows, None, 60) + self.check(value_a, uri, nrows, None, 21 if self.prepare else 20) + self.check(value_modQ, uri, nrows, None, 31 if self.prepare else 30) + self.check(value_modR, uri, nrows, None, 41 if self.prepare else 40) + self.check(value_modS, uri, nrows, None, 51 if self.prepare else 50) + self.check(value_modT, uri, nrows, None, 61 if self.prepare else 60) # Pin stable to timestamp 60 if prepare otherwise 50. if self.prepare: @@ -212,9 +212,9 @@ class test_rollback_to_stable14(test_rollback_to_stable_base): self.large_modifies(uri, 'T', ds, 3, 1, nrows, self.prepare, 60) # Verify data is visible and correct. - self.check(value_a, uri, nrows, None, 20) - self.check(value_modQ, uri, nrows, None, 30) - self.check(value_modT, uri, nrows, None, 60) + self.check(value_a, uri, nrows, None, 21 if self.prepare else 20) + self.check(value_modQ, uri, nrows, None, 31 if self.prepare else 30) + self.check(value_modT, uri, nrows, None, 61 if self.prepare else 60) self.conn.set_timestamp('stable_timestamp=' + self.timestamp_str(50)) @@ -320,9 +320,9 @@ class test_rollback_to_stable14(test_rollback_to_stable_base): self.large_modifies(uri, 'T', ds, len(value_modS), 1, nrows, self.prepare, 60) # Verify data is visible and correct. - self.check(value_a, uri, nrows, None, 20) - self.check(value_modQ, uri, nrows, None, 30) - self.check(value_modT, uri, nrows, None, 60) + self.check(value_a, uri, nrows, None, 21 if self.prepare else 20) + self.check(value_modQ, uri, nrows, None, 31 if self.prepare else 30) + self.check(value_modT, uri, nrows, None, 61 if self.prepare else 60) self.conn.set_timestamp('stable_timestamp=' + self.timestamp_str(50)) diff --git a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable18.py b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable18.py index 5df4677aac7..8c53e989091 100644 --- a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable18.py +++ b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable18.py @@ -84,8 +84,8 @@ class test_rollback_to_stable18(test_rollback_to_stable_base): self.large_removes(uri, ds, nrows, self.prepare, 30) # Verify data is visible and correct. - self.check(value_a, uri, nrows, None, 20) - self.check(None, uri, 0, nrows, 30) + self.check(value_a, uri, nrows, None, 21 if self.prepare else 20) + self.check(None, uri, 0, nrows, 31 if self.prepare else 30) # Configure debug behavior on a cursor to evict the page positioned on when the reset API is used. evict_cursor = self.session.open_cursor(uri, None, "debug=(release_evict)") diff --git a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable23.py b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable23.py index d0d98d30a90..d787e2daeaf 100644 --- a/src/third_party/wiredtiger/test/suite/test_rollback_to_stable23.py +++ b/src/third_party/wiredtiger/test/suite/test_rollback_to_stable23.py @@ -96,11 +96,11 @@ class test_rollback_to_stable23(test_rollback_to_stable_base): self.large_modifies(uri, 'T', ds, 3, 1, nrows, self.prepare, 60) # Verify data is visible and correct. - self.check(value_a, uri, nrows, None, 20) - self.check(value_modQ, uri, nrows, None, 30) - self.check(value_modR, uri, nrows, None, 40) - self.check(value_modS, uri, nrows, None, 50) - self.check(value_modT, uri, nrows, None, 60) + self.check(value_a, uri, nrows, None, 21 if self.prepare else 20) + self.check(value_modQ, uri, nrows, None, 31 if self.prepare else 30) + self.check(value_modR, uri, nrows, None, 41 if self.prepare else 40) + self.check(value_modS, uri, nrows, None, 51 if self.prepare else 50) + self.check(value_modT, uri, nrows, None, 61 if self.prepare else 60) # Pin stable to timestamp 60 if prepare otherwise 50. if self.prepare: |