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)

Reply via email to