2017-07-11 7 views
0

Apache Igniteに関する問題があります。私のテストはIgniteサーバー(変更された変数の通知を受け取るために連続クエリを使用するjavaで書かれています)とIgniteクライアント(putAllメソッドを使用して毎回変わる1000の変数の通知を送信する.Netで書かれています50ミリ秒)。 各putAllは同時に約350個の変数を送信しました。 iが受信 エラーがある:デッドロックのあるストライププールで飢餓状態になる可能性があります。 - Apache Ignite

2017年7月11日09:56:33491 [グリッドタイムアウトworker-#19%ヌル%] G [WARN] - ストライププール内 可能飢餓。 スレッド名:sys-stripe-9-#10%null% キュー:[Message closure [msg = GridIoMessage [plc = 2、topic = TOPIC_CACHE、topicOrd = 8、ordered = false、timeout = 0、 skipOnTimeout = false 、msg = GridNearAtomicFullUpdateRequest KeyCacheObjectImpl [part = 670、val = null、hasValBytes = true]]、conflictTtls = null、conflictExpireTimes = null、 完了:4941スレッド[name = "sys-stripe-9-#null]、[ 10%ヌル%」、ID = 22、状態=ブロック、ブロック番号= 6、待ち時間= 4889] ロック[object = oaiiprocessors.cach (ネイティブメソッド) oaiiutil.GridUnsafeで (sun.misc.Unsafe.monitorEnter)ネイティブメソッド:0%、ownerId = 18] oaiiprocessors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0でoaiiprocessors.cache.distributed.dht.atomic.GridDhtAtomicCache.lockEntries(GridDhtAtomicCache.java:2815)で.monitorEnter(GridUnsafe.java:1193) (GridDhtAtomicCache .javaファイル:1741)oaiiprocessors.cache.distributed.dht.atomic.GridDhtAtomicCache.processNearAtomicUpdateRequestでoaiiprocessors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1630) で (GridDhtAtomicCache.java:3016 ) at oaiiprocessors.cache .distributed.dht.atomic.GridDhtAtomicCache.access $ 400(GridDhtAtomicCache.java:127) oaiiprocessors.cache.distributed.dht.atomic.GridDhtAtomicCache $ 6.apply(GridDhtAtomicCache.java:282) at oaiiprocessors.cache.distributed .dht.atomic.GridDhtAtomicCache $ 6.apply(GridDhtAtomicCache.java:277) oaiiprocessors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:863) oaiiprocessors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:386) oaiiprocessors.cache.GridCacheIoManager $ 1.onMessageでoaiiprocessors.cache.GridCacheIoManager.access $ 000(GridCacheIoManager.java:100) でoaiiprocessors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:308) で (GridCacheIoManager.java :253)oaiimanagers.communication.GridIoManager.access $ 2100でoaiimanagers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:885) でoaiimanagers.communication.GridIoManager.invokeListenerで(GridIoManager.java:1257) (GridIoManager.java: 114) at oaiimanagers.communication.GridIoManager $ 7.run(GridIoManager.java:802) at oaiiutil.StripedExecutor $ Stripe.run(StripedExecutor.java:483) at java.lang.Thread.run(Thread.java :748)

ありがとうございました。

エール

+0

putAllの引数の値はソートされた順序ですか? –

+0

いいえ..私はそのための命令を実装していません... – AlessioR

答えて

1

ソートコレクションのputAllに適用する前に、異なる順序で同じエントリのバッチ操作は、デッドロックにつながる可能性があります。

+0

あなたに応答していただきありがとうございます。つまり、私はマルチスレッドシステムでputAllを使用できないということですか? – AlessioR

+0

マルチスレッド環境ではputAllを使用できますが、常に同じ順序でキーをソートする必要があります –

関連する問題