Improve Checkpoint Naming Restrictions in Testing

XMLWordPrintableJSON

    • Type: Improvement
    • Resolution: Unresolved
    • Priority: Minor - P4
    • None
    • Affects Version/s: None
    • Component/s: Checkpoints
    • Storage Engines - Persistence
    • StorEng - Defined Pipeline
    • None

      Investigating Checkpoint naming restrictions in testing:

      • Creating a checkpoint with any characters works, however when we attempt to read the checkpoint (or export the metadata for the table) we encounter errors.
      • Discovered when working on WT-12030
      • Seems similar to C naming conventions

      In `test_import01.py` the following diffs raise a `_wiredtiger.WiredTigerError: Invalid argument`

      • Checkpoint name starts with a number
        diff --git a/test/suite/test_import01.py b/test/suite/test_import01.py
        index 95624150c..32847a137 100644
        --- a/test/suite/test_import01.py
        +++ b/test/suite/test_import01.py
        @@ -159,6 +159,7 @@ class test_import01(test_import_base):
                 for i in range(min_idx, max_idx):
                     self.update(self.uri, self.keys[i], self.values[i], self.ts[i])
                 self.session.checkpoint()
        +        self.session.checkpoint("name=123")
         
                 # Export the metadata for the table.
                 c = self.session.open_cursor('metadata:', None, None)
      • Checkpoint name starts with a hyphen
        diff --git a/test/suite/test_import01.py b/test/suite/test_import01.py
        index 95624150c..1bf5838df 100644
        --- a/test/suite/test_import01.py
        +++ b/test/suite/test_import01.py
        @@ -159,6 +159,7 @@ class test_import01(test_import_base):
                 for i in range(min_idx, max_idx):
                     self.update(self.uri, self.keys[i], self.values[i], self.ts[i])
                 self.session.checkpoint()
        +        self.session.checkpoint("name=---")
         
                 # Export the metadata for the table.
                 c = self.session.open_cursor('metadata:', None, None)
      • Other cases include Checkpoint names starting with `(`, `^`, `#`, `%`, `*`, `+`, `=`, `@` and other.
      • In some cases we do receive a Parsing Error, but it isn’t consistent across all error-prone inputs

      Possible solution:

      • Error out when attempting to create a checkpoint with an invalid name.

            Assignee:
            [DO NOT USE] Backlog - Storage Engines Team
            Reporter:
            Mariam Mojid
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: