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

Deadlock between threads concurrently update ttl and values

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 2.17
    • None
    • Release Notes Required

    Description

      There is a deadlock in case concurrent load: ScanQuery and DataStreamer with expiry logic based on access time.

      1. data-streamer-stripe acquires locks in order: checkpoint read lock, entry lock
      2. sys-stripe and query threads (update ttl) acquire locks in different order: entry lock, checkpoint read lock
      3. concurrent db-checkpoint-thread acquire checkpoint write lock, and it might be done in the moment between threads (2) acquire entry and checkpoint lock.

       

      data-streamer awaits sys-stripe, 

      sys-stripe awaits db-checkpoint-thread,

      db-checkpoint-threads awaits data-streamer

       

      Order of locking should be same in all threads.

       

      Attachments

        Issue Links

          Activity

            People

              timonin.maksim Maksim Timonin
              timonin.maksim Maksim Timonin
              Aleksey Plekhanov Aleksey Plekhanov
              Votes:
              0 Vote for this issue
              Watchers:
              2 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 - 1h 10m
                  1h 10m