]
Dan Berindei updated ISPN-12489:
--------------------------------
Status: Resolved (was: Pull Request Sent)
Fix Version/s: 12.0.0.CR1
Resolution: Done
Non-transactional INVALIDATION_SYNC cache deadlock
--------------------------------------------------
Key: ISPN-12489
URL:
https://issues.redhat.com/browse/ISPN-12489
Project: Infinispan
Issue Type: Bug
Components: Core
Affects Versions: 10.1.8.Final, 11.0.5.Final, 12.0.0.Dev06
Reporter: Dan Berindei
Assignee: Dan Berindei
Priority: Major
Fix For: 12.0.0.Final, 12.0.0.CR1
Non-transactional invalidation caches use the old locking scheme from Infinispan 4.x,
which is prone to deadlocks:
# {{put(k, v1)}} is invoked on node A and acquires lock {{k}}
# {{put(k, v2)}} is invoked on node B and acquires lock {{k}}
# {{A}} sends an {{InvalidateCommand(k)}} RPC to {{B}}
# {{B}} sends an {{InvalidateCommand(k)}} RPC to {{A}}
# The {{InvalidateCommand(k)}} from {{A}} and tries to acquire lock {{k}} on {{B}}
# The {{InvalidateCommand(k)}} from {{B}} and tries to acquire lock {{k}} on {{A}}
# Both {{InvalidateCommand(k)}} lock acquisitions eventually time out and release lock
{{k}} on their originators.