ignite-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gaurav Aggarwal (JIRA)" <j...@apache.org>
Subject [jira] [Created] (IGNITE-11657) Stripe Threads Deadlock on Cache.putAll(Map<KV>)
Date Fri, 29 Mar 2019 14:18:00 GMT
Gaurav Aggarwal created IGNITE-11657:
----------------------------------------

             Summary: Stripe Threads 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


We have been seeing some 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]
  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)

Mime
View raw message