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

Recovery for DistributionZoneRebalanceEngine#metaStorageManager on DistributionZoneManager#start()

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • None

    Description

      Motivation

      DistributionZoneRebalanceEngine#dataNodesListener processes events with zones' data nodes updates and invokes RebalanceUtil#updatePendingAssignmentsKeys with new data nodes value. updatePendingAssignmentsKeys does async metaStorageMgr#invoke. It's possible that dataNodesListener processed data nodes event then the nodes crashed without updating assignments in metastorage.

      Implementation Notes

      To fix it we can redo all logic from `createDistributionZonesDataNodesListener()`. On DistributionZoneManager#start we need to read from `vault` data nodes for all zones and invoke `updatePendingAssignmentsKeys` for all tables with `metaStorageManager.appliedRevision()`. If the last event with data nodes has not updated pending assignments then assignments will be updated. If the last event with data nodes have updated pending assignments then an update assignments will be invoked another time but it will not update assignments, because there is a check for case when new assignments equals to old one.

      Definition of Done

      Created a recovery for this case.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              Sergey Uttsel Sergey Uttsel
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated: