Vladimir Ozerov created IGNITE-1581: ---------------------------------------
Summary: Synchronous cache operation can deadlock on async semaphore. Key: IGNITE-1581 URL: https://issues.apache.org/jira/browse/IGNITE-1581 Project: Ignite Issue Type: Task Components: cache Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 Problem can be reproduced as follows: 1) Set CacheConfiguration.setMaxConcurrentAsyncOperations() to a very small value, e.g. 3. 2) T1: Start PESSIMISTIC/REPEATABLE_READ tx and call Cache.get(1); 3) Start 3 other threads, initiate PESSIMISTIC/REPEATABLE_READ tx and call Cache.get(1) on them. They will stuck as expected. 4) T1: Call Cache.get(1) again. Instead of getting already locked value, thread is stuck on async semaphore acquire: {code} at sun.misc.Unsafe.park(Unsafe.java:-1) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834) at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:994) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1303) at java.util.concurrent.Semaphore.acquire(Semaphore.java:317) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.asyncOpAcquire(GridCacheAdapter.java:4329) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.asyncOp(GridCacheAdapter.java:4203) at org.apache.ignite.internal.processors.cache.distributed.dht.colocated.GridDhtColocatedCache.getAllAsync(GridDhtColocatedCache.java:211) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.getAllAsync(GridCacheAdapter.java:4609) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.get(GridCacheAdapter.java:4556) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.get(GridCacheAdapter.java:1569) {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)