2016-09-22 3 views
0

우리는 우리가 노드 A 스레드 (I 원격으로 내 VM에 연결하여 한의 실행을 차단하고 중단 점을 넣으면 2의 클러스터가 & B.아파치의 Ignite - 스레드 영원히 차단됩니다

노드가), 노드 B는 노드 A가 세그먼트 화된다고 생각한다 (예상되는 동작 임).

위의 시나리오를 수행 한 후 노드 A의 캐시 조회가 중단되어 IgniteCache에서 결과를 얻지 못합니다.

이 문제를 재현하기위한 테스트 응용 프로그램을 작성했습니다. 이 문제를 재현하는 것은 약간 까다 롭지 만 README.md에서 지침을 제공하기 위해 최선을 다했습니다.

여전히 재생산 방법에 대해 확실하지 않은 경우 비디오 녹화를 제공 할 수 있습니다. 당신이 NOOPIgniteConfiguration.setSegmentationPolicy를 설정하기 때문에

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

답변

0

이 발생합니다. 즉, 노드가 세그먼트 화 될 때 아무 일도 일어나지 않고 실제로이 정책은 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/에 대한 리스너를 추가했습니다. problem/ProblemProducer.java – manish

+0

캐시 이벤트 리스너 만 있습니다. EVT_NODE_SEGMENTED에 대한 리스너가 없습니다. –