Uploaded image for project: 'Phoenix'
  1. Phoenix
  2. PHOENIX-6086

Take a snapshot of all SYSTEM tables before attempting to upgrade them

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Critical
    • Resolution: Fixed
    • 5.0.0, 4.15.0
    • 5.1.0, 4.16.0
    • None
    • None
    • Hide
      While upgrading System tables, all system tables where we perform some significant DDL operations, we start taking snapshots of them:
       
      1. SYSTEM.CATALOG (was already covered before this Jira)
      2. SYSTEM.CHILD_LINK
      3. SYSTEM.SEQUENCE
      4. SYSTEM.STATS
      5. SYSTEM.TASK

      If the upgrade doesn't complete successfully, we should get warning log providing all snapshots taken so far, which can be used to restore some snapshots if required.


      A sample Warning log:

      Failed upgrading System tables. Snapshots for system tables created so far: {SYSTEM:STATS=SNAPSHOT_SYSTEM.STATS_4.15.x_TO_4.16.0_20201202114411, SYSTEM:CATALOG=SNAPSHOT_SYSTEM.CATALOG_4.15.x_TO_4.16.0_20201202114258, SYSTEM:CHILD_LINK=SNAPSHOT_SYSTEM.CHILD_LINK_4.15.x_TO_4.16.0_20201202114405, SYSTEM:SEQUENCE=SNAPSHOT_SYSTEM.SEQUENCE_4.15.x_TO_4.16.0_20201202114407, SYSTEM:TASK=SNAPSHOT_SYSTEM.TASK_4.15.x_TO_4.16.0_20201202114413}
      Show
      While upgrading System tables, all system tables where we perform some significant DDL operations, we start taking snapshots of them:   1. SYSTEM.CATALOG (was already covered before this Jira) 2. SYSTEM.CHILD_LINK 3. SYSTEM.SEQUENCE 4. SYSTEM.STATS 5. SYSTEM.TASK If the upgrade doesn't complete successfully, we should get warning log providing all snapshots taken so far, which can be used to restore some snapshots if required. A sample Warning log: Failed upgrading System tables. Snapshots for system tables created so far: {SYSTEM:STATS=SNAPSHOT_SYSTEM.STATS_4.15.x_TO_4.16.0_20201202114411, SYSTEM:CATALOG=SNAPSHOT_SYSTEM.CATALOG_4.15.x_TO_4.16.0_20201202114258, SYSTEM:CHILD_LINK=SNAPSHOT_SYSTEM.CHILD_LINK_4.15.x_TO_4.16.0_20201202114405, SYSTEM:SEQUENCE=SNAPSHOT_SYSTEM.SEQUENCE_4.15.x_TO_4.16.0_20201202114407, SYSTEM:TASK=SNAPSHOT_SYSTEM.TASK_4.15.x_TO_4.16.0_20201202114413}

    Description

      Currently we only take a snapshot of SYSTEM.CATALOG before attempting to upgrade it (see this). From 4.15 onwards we also store critical metadata information in other SYSTEM tables like SYSTEM.CHILD_LINK, so it is beneficial to also snapshot those tables before upgrading them henceforth.

      We also currently don't take a snapshot of SYSTEM.CATALOG on receiving an UpgradeRequiredException which we should do.

      In case of any errors during the upgrade, we restore SYSTEM.CATALOG from this snapshot and we should extend this to all tables. In cases where the table didn't exist before the upgrade, we need to ensure it is dropped so that a subsequent upgrade attempt can start afresh.

      Attachments

        1. PHOENIX-6086.master.003.patch
          20 kB
          Viraj Jasani
        2. PHOENIX-6086.master.002.patch
          20 kB
          Viraj Jasani
        3. PHOENIX-6086.master.000.patch
          15 kB
          Viraj Jasani
        4. PHOENIX-6086.4.x.000.patch
          20 kB
          Viraj Jasani

        Activity

          People

            vjasani Viraj Jasani
            ckulkarni Chinmay Kulkarni
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: