2016-09-22 62 views
0

我們有2的羣集節點上& B.阿帕奇點燃 - 線程被阻塞永遠

如果我們阻擋在節點A線程(我做到了,通過遠程連接到我的虛擬機的執行,把一個斷點),那麼節點B認爲節點A是分段的(這是預期的行爲)。

執行上述方案後,節點A上的任何高速緩存查找都卡住了,我們從未從IgniteCache獲取結果。

我已經放在一起測試應用程序來重現此問題。重現此問題有點棘手,但我已盡力在README.md中提供說明

如果您仍不清楚如何重現該問題,那麼我可以提供視頻錄製。

https://github.com/manish-panwar/ignite-thread-block-issue

回答

0

這是因爲你設置IgniteConfiguration.setSegmentationPolicyNOOP。這意味着當節點被分割時沒有任何事情發生,實際上這個策略假設你將爲EVT_NODE_SEGMENTED事件創建一個監聽器並提供你自己的處理。如果您不這樣做,最好將其設置爲STOP(默認值),以便節點在分割後立即停止。這將釋放所有線程。

+0

我已經爲EVT_NODE_SEGMENTED事件實現了一個偵聽器。請看看ProblemProducer – manish

+0

在這個類中,我添加了EVT_NODE_SEGMENTED監聽器https://github.com/manish-panwar/ignite-thread-block-issue/blob/master/src/main/java/org/apache/問題/ ProblemProducer.java – manish

+0

只有緩存事件偵聽器。我沒有看到'EVT_NODE_SEGMENTED'的任何偵聽器。 –