Uploaded image for project: 'Ignite'
  1. Ignite
  2. IGNITE-17302

Raft listener multi-storage support

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 3.0
    • None

    Description

      It's supposed that replication state machine (e.g. RaftGroupListener) will handle multiple storages. For example PartitionListener will use:

      • MvPartitionStorage - common multi-version partition storage for core partition data.
      • Both volatile and persistent lock storages IGNITE-15932.
      • Persistent storage for txn state IGNITE-15931.
      • Index storages.

      Generally speaking replication logic is decoupled from data-storages, and there are only few intersection points:

      • Raft log truncation - in order to safely truncate raft log it's required to take into consideration all checkpointIndexes for all storages of the given state machine and perform min(storage1.checkpointIndex, storage2.checkpointIndex, ... ) truncation. Besides that it's important for storages to skip already applied commands on raft log replay - storage indexes to the rescue. See IGNITE-16907 for more details. Such modifications will also effect PartitionListener.onSnapshotLoad()/onSnapshotSave() methods.
      • It's required to update local node recovery process a bit: a node must enter the logical topology only after restoring all local raft nodes, including both restoring storages from corresponding snapshot and applying raft log.

      Attachments

        Issue Links

          Activity

            People

              maliev Mirza Aliev
              alapin Alexander Lapin
              Alexander Lapin Alexander Lapin
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 2.5h
                  2.5h