0
votes

I have an issue regarding Apache Ignite. My test is did with a Ignite server (written in java that use the continuous query to receive the notifications of the changed variables) and a Ignite client (written in .Net that use the putAll method to send the notifications of 1000 variables that vary every 50 milliseconds). Each putAll sent around 350 variables simultaneously. The error that i receive is:

2017-07-11 09:56:33,491 [WARN ] [grid-timeout-worker-#19%null%] G - Possible starvation in striped pool. Thread name: sys-stripe-9-#10%null% Queue: [Message closure [msg=GridIoMessage [plc=2, topic=TOPIC_CACHE, topicOrd=8, ordered=false, timeout=0, skipOnTimeout=false, msg=GridNearAtomicFullUpdateRequest [keys=[KeyCacheObjectImpl [part=117, val=null, hasValBytes=true], KeyCacheObjectImpl [part=670, val=null, hasValBytes=true]], conflictTtls=null, conflictExpireTimes=null, expiryPlc=null, initSize=0, filter=null, parent=GridNearAtomicAbstractUpdateRequest [res=null, flags=keepBinary]]]]] Deadlock: true Completed: 4941 Thread [name="sys-stripe-9-#10%null%", id=22, state=BLOCKED, blockCnt=6, waitCnt=4889] Lock [object=o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCacheEntry@541d822b, ownerName=sys-stripe-5-#6%null%, ownerId=18] at sun.misc.Unsafe.monitorEnter(Native Method) at o.a.i.i.util.GridUnsafe.monitorEnter(GridUnsafe.java:1193) at o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.lockEntries(GridDhtAtomicCache.java:2815) at o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1741) at o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1630) at o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processNearAtomicUpdateRequest(GridDhtAtomicCache.java:3016) at o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$400(GridDhtAtomicCache.java:127) at o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$6.apply(GridDhtAtomicCache.java:282) at o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$6.apply(GridDhtAtomicCache.java:277) at o.a.i.i.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:863) at o.a.i.i.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:386) at o.a.i.i.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:308) at o.a.i.i.processors.cache.GridCacheIoManager.access$000(GridCacheIoManager.java:100) at o.a.i.i.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:253) at o.a.i.i.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1257) at o.a.i.i.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:885) at o.a.i.i.managers.communication.GridIoManager.access$2100(GridIoManager.java:114) at o.a.i.i.managers.communication.GridIoManager$7.run(GridIoManager.java:802) at o.a.i.i.util.StripedExecutor$Stripe.run(StripedExecutor.java:483) at java.lang.Thread.run(Thread.java:748)

2
Are values from argument of putAll in sorted order?Evgenii Zhuravlev
No.. i don't implement any order for that...AlessioR

2 Answers

1
votes

Sort Collection before applying it to the putAll, batch operations on the same entries in different order could lead to deadlocks.

0
votes

The same issue occurred when we try to put JsonObject in Cache. So instead of put operation, we have used putAsync and it works proper