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

Ignite.resetLostPartitions() resets state under race.

    XMLWordPrintableJSON

Details

    • Task
    • Status: Reopened
    • Critical
    • Resolution: Unresolved
    • None
    • None
    • cache
    • None

    Description

      Assume, we have event listener that detects partition loss events and apply some actions to recover lost data.
      After recovery process finished an Ignite.resetLostPartitions() method should be called to mark all lost cache partitions as healthy.

      It is possible Ignite.resetLostPartitions() will be called during exchange, but right before a new partition loss event will be fired.

      E.g. exchange thread own GridDhtPartitionTopologyImpl write lock in detectLostPartitions() method, while user thread will wait for the lock inside Ignite.resetLostPartitions().
      So, after a new partition loss will be detected, is will be not possible to abort user action and state of just lost partition will be reset.

      For that case, we should either abort resetLostPartitions() or reset partitions state regarding topology version provided by user some how.

      Attachments

        Issue Links

          Activity

            People

              VitaliyB Vitaliy Biryukov
              amashenkov Andrey Mashenkov
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

                Created:
                Updated: