Uploaded image for project: 'WiredTiger'
  1. WiredTiger
  2. WT-6648

Checkpoint doesn't retain the full historical data as per the oldest timestamp in the checkpoint

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Gone away
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None
    • Story Points:
      1
    • Sprint:
      Storage - Ra 2020-09-21

      Description

      WiredTiger checkpoint stores the information of both oldest and stable timestamps during the checkpoint to indicate the total history of the data from which the user can query. The oldest and stable timestamps are saved as part of the checkpoint during the start of the checkpoint.

      But when the oldest timestamp gets changed when the checkpoint is in progress can some times led to the removal of historical data that must be retained as per the oldest timestamp that is saved as part of the checkpoint.

      With the following change, the above-discussed problem can reproduce. This test may not be the proper test case, but can be used as an example to understand the problem.

      diff --git a/test/suite/test_rollback_to_stable10.py b/test/suite/test_rollback_to_stable10.py
      index 4a322c619..023244507 100755
      --- a/test/suite/test_rollback_to_stable10.py
      +++ b/test/suite/test_rollback_to_stable10.py
      @@ -166,10 +166,13 @@ class test_rollback_to_stable10(test_rollback_to_stable_base):
                   self.pr("updates")
                   retry_rollback(self, 'update ds1, e',
                                  lambda: self.large_updates(uri_1, value_e, ds_1, nrows, 70))
      +            self.conn.set_timestamp('oldest_timestamp=' + timestamp_str(20))
                   retry_rollback(self, 'update ds2, e',
                                  lambda: self.large_updates(uri_2, value_e, ds_2, nrows, 70))
      +            self.conn.set_timestamp('oldest_timestamp=' + timestamp_str(30))
                   retry_rollback(self, 'update ds1, f',
                                  lambda: self.large_updates(uri_1, value_f, ds_1, nrows, 80))
      +            self.conn.set_timestamp('oldest_timestamp=' + timestamp_str(40))
                   retry_rollback(self, 'update ds2, f',
                                  lambda: self.large_updates(uri_2, value_f, ds_2, nrows, 80))
               finally:
      

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              chenhao.qu Chenhao Qu
              Reporter:
              haribabu.kommi Haribabu Kommi
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: