[ 
https://issues.apache.org/jira/browse/IGNITE-11657?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gaurav Aggarwal updated IGNITE-11657:
-------------------------------------
    Description: 
We have been seeing consistent Deadlocks with Ignite Latest versions on 
Cache.putAll, as putAll tries to lock all the keys before updating them. 
  
 As per the documentation (below) putAll should be Equivalent to individual 
iterative puts and these individual puts should behave atomically but not the 
entire pull, But the error logs pasted further below seem to suggest otherwise
  
 *putAll Documentation*
h5. void javax.cache.Cache.putAll(Map<? extends K, ? extends V> map)

Copies all of the entries from the specified map to the {{Cache}}.
 The effect of this call is equivalent to that of calling {{put(k, v)}} on this 
cache once for each mapping from key {{k}} to value {{v}} in the specified map.
 The order in which the individual puts occur is undefined.
 The behavior of this operation is undefined if entries in the cache 
corresponding to entries in the map are modified or removed while this 
operation is in progress. or if map is modified while the operation is in 
progress.
 In Default Consistency mode, individual puts occur atomically but not the 
entire putAll. Listeners may observe individual updates.
  
  
 *Error Log suggesting otherwise*
  
 Deadlock: true
 Completed: 12808
 Thread [name="sys-stripe-3-#4%VPS%", id=27, state=WAITING, blockCnt=3, 
waitCnt=121340|#4%VPS%", id=27, state=WAITING, blockCnt=3, waitCnt=121340]
   Lock [object=java.util.concurrent.locks.ReentrantLock$NonfairSync@138205af, 
ownerName=sys-stripe-26-#27%VPS%, ownerId=50]
   at sun.misc.Unsafe.park(Native Method)
   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
   at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
   at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870)
   at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199)
   at 
java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:209)
    at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:285)
   at 
o.a.i.i.processors.cache.GridCacheMapEntry.lockEntry(GridCacheMapEntry.java:4272)
   at 
o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.lockEntries(GridDhtAtomicCache.java:2848)
   at 
o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1706)
   at 
o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1628)
   at 
o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processNearAtomicUpdateRequest(GridDhtAtomicCache.java:3056)
   at 
o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$400(GridDhtAtomicCache.java:130)
   at 
o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:266)
   at 
o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:261)
   at 
o.a.i.i.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:1054)
   at 
o.a.i.i.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:579)
   at 
o.a.i.i.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:378)
   at 
o.a.i.i.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:304)
   at 
o.a.i.i.processors.cache.GridCacheIoManager.access$100(GridCacheIoManager.java:99)
   at 
o.a.i.i.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:293)
   at 
o.a.i.i.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1556)
   at 
o.a.i.i.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1184)
   at 
o.a.i.i.managers.communication.GridIoManager.access$4200(GridIoManager.java:125)
   at 
o.a.i.i.managers.communication.GridIoManager$9.run(GridIoManager.java:1091)
   at o.a.i.i.util.StripedExecutor$Stripe.run(StripedExecutor.java:511)
   at java.lang.Thread.run(Thread.java:748)
  
 I have tried sorting my keys but the same doesn't helps
  

  was:
We have been seeing consistent Deadlocks with Ignite Latest versions, as putAll 
tries to lock all the keys before updating them. 
  
 As per the documentation (below) putAll should be Equivalent to individual 
iterative puts and these individual puts should behave atomically but not the 
entire pull, But the error logs pasted further below seem to suggest otherwise
  
 *putAll Documentation*
h5. void javax.cache.Cache.putAll(Map<? extends K, ? extends V> map)

Copies all of the entries from the specified map to the {{Cache}}.
 The effect of this call is equivalent to that of calling {{put(k, v)}} on this 
cache once for each mapping from key {{k}} to value {{v}} in the specified map.
 The order in which the individual puts occur is undefined.
 The behavior of this operation is undefined if entries in the cache 
corresponding to entries in the map are modified or removed while this 
operation is in progress. or if map is modified while the operation is in 
progress.
 In Default Consistency mode, individual puts occur atomically but not the 
entire putAll. Listeners may observe individual updates.
  
  
 *Error Log suggesting otherwise*
  
 Deadlock: true
 Completed: 12808
 Thread [name="sys-stripe-3-#4%VPS%", id=27, state=WAITING, blockCnt=3, 
waitCnt=121340|#4%VPS%", id=27, state=WAITING, blockCnt=3, waitCnt=121340]
   Lock [object=java.util.concurrent.locks.ReentrantLock$NonfairSync@138205af, 
ownerName=sys-stripe-26-#27%VPS%, ownerId=50]
   at sun.misc.Unsafe.park(Native Method)
   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
   at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
   at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870)
   at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199)
   at 
java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:209)
    at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:285)
   at 
o.a.i.i.processors.cache.GridCacheMapEntry.lockEntry(GridCacheMapEntry.java:4272)
   at 
o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.lockEntries(GridDhtAtomicCache.java:2848)
   at 
o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1706)
   at 
o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1628)
   at 
o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processNearAtomicUpdateRequest(GridDhtAtomicCache.java:3056)
   at 
o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$400(GridDhtAtomicCache.java:130)
   at 
o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:266)
   at 
o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:261)
   at 
o.a.i.i.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:1054)
   at 
o.a.i.i.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:579)
   at 
o.a.i.i.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:378)
   at 
o.a.i.i.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:304)
   at 
o.a.i.i.processors.cache.GridCacheIoManager.access$100(GridCacheIoManager.java:99)
   at 
o.a.i.i.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:293)
   at 
o.a.i.i.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1556)
   at 
o.a.i.i.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1184)
   at 
o.a.i.i.managers.communication.GridIoManager.access$4200(GridIoManager.java:125)
   at 
o.a.i.i.managers.communication.GridIoManager$9.run(GridIoManager.java:1091)
   at o.a.i.i.util.StripedExecutor$Stripe.run(StripedExecutor.java:511)
   at java.lang.Thread.run(Thread.java:748)
  
 I have tried sorting my keys but the same doesn't helps
  


> Deadlock on Cache.putAll(Map<KV>)
> ---------------------------------
>
>                 Key: IGNITE-11657
>                 URL: https://issues.apache.org/jira/browse/IGNITE-11657
>             Project: Ignite
>          Issue Type: Bug
>          Components: cache
>    Affects Versions: 2.5
>            Reporter: Gaurav Aggarwal
>            Priority: Major
>
> We have been seeing consistent Deadlocks with Ignite Latest versions on 
> Cache.putAll, as putAll tries to lock all the keys before updating them. 
>   
>  As per the documentation (below) putAll should be Equivalent to individual 
> iterative puts and these individual puts should behave atomically but not the 
> entire pull, But the error logs pasted further below seem to suggest otherwise
>   
>  *putAll Documentation*
> h5. void javax.cache.Cache.putAll(Map<? extends K, ? extends V> map)
> Copies all of the entries from the specified map to the {{Cache}}.
>  The effect of this call is equivalent to that of calling {{put(k, v)}} on 
> this cache once for each mapping from key {{k}} to value {{v}} in the 
> specified map.
>  The order in which the individual puts occur is undefined.
>  The behavior of this operation is undefined if entries in the cache 
> corresponding to entries in the map are modified or removed while this 
> operation is in progress. or if map is modified while the operation is in 
> progress.
>  In Default Consistency mode, individual puts occur atomically but not the 
> entire putAll. Listeners may observe individual updates.
>   
>   
>  *Error Log suggesting otherwise*
>   
>  Deadlock: true
>  Completed: 12808
>  Thread [name="sys-stripe-3-#4%VPS%", id=27, state=WAITING, blockCnt=3, 
> waitCnt=121340|#4%VPS%", id=27, state=WAITING, blockCnt=3, waitCnt=121340]
>    Lock 
> [object=java.util.concurrent.locks.ReentrantLock$NonfairSync@138205af, 
> ownerName=sys-stripe-26-#27%VPS%, ownerId=50]
>    at sun.misc.Unsafe.park(Native Method)
>    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
>    at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
>    at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870)
>    at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199)
>    at 
> java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:209)
>     at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:285)
>    at 
> o.a.i.i.processors.cache.GridCacheMapEntry.lockEntry(GridCacheMapEntry.java:4272)
>    at 
> o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.lockEntries(GridDhtAtomicCache.java:2848)
>    at 
> o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1706)
>    at 
> o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1628)
>    at 
> o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processNearAtomicUpdateRequest(GridDhtAtomicCache.java:3056)
>    at 
> o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$400(GridDhtAtomicCache.java:130)
>    at 
> o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:266)
>    at 
> o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:261)
>    at 
> o.a.i.i.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:1054)
>    at 
> o.a.i.i.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:579)
>    at 
> o.a.i.i.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:378)
>    at 
> o.a.i.i.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:304)
>    at 
> o.a.i.i.processors.cache.GridCacheIoManager.access$100(GridCacheIoManager.java:99)
>    at 
> o.a.i.i.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:293)
>    at 
> o.a.i.i.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1556)
>    at 
> o.a.i.i.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1184)
>    at 
> o.a.i.i.managers.communication.GridIoManager.access$4200(GridIoManager.java:125)
>    at 
> o.a.i.i.managers.communication.GridIoManager$9.run(GridIoManager.java:1091)
>    at o.a.i.i.util.StripedExecutor$Stripe.run(StripedExecutor.java:511)
>    at java.lang.Thread.run(Thread.java:748)
>   
>  I have tried sorting my keys but the same doesn't helps
>   



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to