Description
There is a deadlock in case concurrent load: ScanQuery and DataStreamer with expiry logic based on access time.
- data-streamer-stripe acquires locks in order: checkpoint read lock, entry lock
- sys-stripe and query threads (update ttl) acquire locks in different order: entry lock, checkpoint read lock
- 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
- relates to
-
IGNITE-12594 Deadlock between GridCacheDataStore#purgeExpiredInternal and GridNearTxLocal#enlistWriteEntry
- Resolved
- links to