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

Race between partition eviction and re-creation

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 2.1
    • 2.3
    • None
    • None

    Description

      There are a number of cases that aren't handled correctly, leading to assertion errors, grid hang-ups and data loss:

      • PageMemoryImpl.refreshOutdatedPage(...) - if refreshed page is currently scheduled for checkpoint, it will be stored if FileStore filled with zeroes. Reading this page later will fail.
      • GridCacheDatabaseSharedManager.restorePartitionState(...) - grp.offheap().onPartitionInitialCounterUpdated(...) is called under meta page write lock. If DataStore requires initialization, it will try to aquire write lock for meta page again and hang up.
      • GridDhtPartitionTopologyImpl.createPartition(...) and .localPartition0(...) - if partition is present but has EVICTED state, we will try to create new partition instance. However, DataStore for old partition might still be present, and we will get AssertionError when we attempt to create new DataStore.

      Attachments

        Issue Links

          Activity

            People

              agoncharuk Alexey Goncharuk
              ilantukh Ilya Lantukh
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: