1. 14 Sep, 2024 32 commits
  2. 11 Sep, 2024 5 commits
  3. 10 Sep, 2024 1 commit
  4. 05 Sep, 2024 1 commit
    • Libing Song's avatar
      MDEV-33853 Async rollback prepared transactions during binlog · 5bbda971
      Libing Song authored
                 crash recovery
      
      Summary
      =======
      When doing server recovery, the active transactions will be rolled
      back by InnoDB background rollback thread automatically. The
      prepared transactions will be committed or rolled back accordingly
      by binlog recovery. Binlog recovery is done in main thread before
      the server can provide service to users. If there is a big
      transaction to rollback, the server will not available for a long
      time.
      
      This patch provides a way to rollback the prepared transactions
      asynchronously. Thus the rollback will not block server startup.
      
      Design
      ======
      - Handler::recover_rollback_by_xid()
        This patch provides a new handler interface to rollback transactions
        in recover phase. InnoDB just set the transaction's state to active.
        Then the transaction will be rolled back by the background rollback
        thread.
      
      - Handler::signal_tc_log_recover_done()
        This function is called after tc log is opened(typically binlog opened)
        has done. When this function is called, all transactions will be rolled
        back have been reverted to ACTIVE state. Thus it starts rollback thread
        to rollback the transactions.
      
      - Background rollback thread
        With this patch, background rollback thread is defered to run until binlog
        recovery is finished. It is started by innobase_tc_log_recovery_done().
      5bbda971
  5. 04 Sep, 2024 1 commit