首页 文章

带有死锁的条带池中可能存在饥饿 - Apache Ignite

提问于
浏览
0

我有一个关于Apache Ignite的问题 . 我的测试是使用Ignite服务器(用java编写,使用连续查询接收已更改变量的通知)和Ignite客户端(用.Net编写,使用putAll方法发送1000个变量的变量的通知) 50毫秒) . 每个putAll同时发送大约350个变量 . 我收到的错误是:

2017-07-11 09:56:33,491 [WARN] [grid-timeout-worker-#19%null%] G - 条带池中可能存在的饥饿 . 线程名称:sys-stripe-9-#10%null%队列:[消息闭包[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]]]]]死锁:true已完成:4941线程[name =“sys-stripe-9-#10%null%”,id = 22, state = BLOCKED,blockCnt = 6,waitCnt = 4889]锁定[object =oaiiprocessors.cache.distributed.dht.atomic.GridDhtAtomicCacheEntry@541d822b,ownerName = sys-stripe-5-#6%null%,ownerId = 18] at在oaiiprocessors的oaiiprocessors.cache.distributed.dht.atomic.GridDhtAtomicCache.lockEntries(GridDhtAtomicCache.java:2815)的oaiiutil.GridUnsafe.monitorEnter(GridUnsafe.java:1193)的sun.misc.Unsafe.monitorEnter(Native Method) .cache.dist ribing.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1741)at oaiiprocessors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1630)at oaiiprocessors.cache.distributed.dht.atomic . 在oaiiprocessors.cache.distributed.dht.atomic.GridDhtAtomicCache.access $ 400(GridDhtAtomicCache.java:127)的oaiiprocessors.cache.distributed.dht.atomic.GridDhtAtomicCache $ 6.apply( GridDhtAtomicCache.java:282)位于oaiiprocessors.cache的oaiiprocessors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:863)上的oaiiprocessors.cache.distributed.dht.atomic.GridDhtAtomicCache $ 6.apply(GridDhtAtomicCache.java:277) .gridCacheIoManager.onMessage0(GridCacheIoManager.java:386)at oaiiprocessors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:308)at oaiiprocessors.cache.GridCacheIoManager.access $ 000(Grid CacheIoManager.java:100)at oaiiprocessors.cache.GridCacheIoManager $ 1.onMessage(GridCacheIoManager.java:253)at oaiimanagers.communication.GridIoManager.invokeListener(GridIoManager.java:1257)at oaiimanagers.communication.GridIoManager.processRegularMessage0(GridIoManager) .java:885)at oaiimanagers.communication.GridIoManager.access $ 2100(GridIoManager.java:114)at oaiimanagers.communication.GridIoManager $ 7.run(GridIoManager.java:802)at oaiiutil.StripedExecutor $ Stripe.run(StripedExecutor .java:483)在java.lang.Thread.run(Thread.java:748)

谢谢大家的帮助 .

麦酒

2 回答

  • 0

    在将集合应用于putAll之前对集合进行排序,对不同顺序的相同条目进行批处理操作可能会导致死锁 .

  • 1

    当我们尝试将JsonObject放入Cache中时,会出现同样的问题 . 因此,我们使用putAsync而不是put操作,它可以正常工作

相关问题