[ 
https://issues.apache.org/jira/browse/IGNITE-11657?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16823982#comment-16823982
 ] 

Gaurav Aggarwal commented on IGNITE-11657:
------------------------------------------

Even DataStreamers face the same kind of issues, that means we have to get rid 
of them too

> 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