Do not use meta tracking during connection recovery

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • Storage Engines, Storage Engines - Foundations
    • None
    • 2

      Found from WT-14586, it was found that we are using meta tracking when it has not be initialized yet. Follow here:

          WT_RET(__wt_txn_recover(session, cfg, cval.len != 0));
      
          /*
           * If we're performing a live restore start the server. This is intentionally placed after
           * recovery finishes as we depend on the metadata file containing the list of objects that need
           * live restoration.
           */
          WT_RET(__wt_live_restore_server_create(session, cfg));
      
          /* Initialize metadata tracking, required before creating tables. */
          WT_RET(__wt_meta_track_init(session));
      
      

      Inside __wt_txn_recover we call __schema_drop which uses meta_tracking. Schema drop code is as follows:

          /*
           * FIXME-WT-16215: During recovery (including partial backup restore), the meta tracking has not
           * been initialized yet. We don't need to use meta tracking as recovery must end with a
           * checkpoint to syncs all files.
           */
          bool need_sync = !F_ISSET(S2C(session), WT_CONN_BACKUP_PARTIAL_RESTORE | WT_CONN_RECOVERING);
          WT_TRET(__wt_meta_track_off(session, need_sync, ret != 0));
      

      Defintion of done
      This ticket should investigate whether meta tracking is crucial during database recovery. If not, disable it during recovery stage. If so, decide on correct next steps.

            Assignee:
            [DO NOT USE] Backlog - Storage Engines Team
            Reporter:
            Jie Chen
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: