2016-10-19 4 views
0

EntryProcessor 또는 ExecutorService를 사용하여 hazelcast에 문제가 있습니다. 키가 구성원에 없으면 프로세서는 각 노드에서 여전히 실행되며 이유를 이해할 수 없습니까?HazelcastGrid Computing EntryProcessor 모든 구성원에서 실행

프로세서가 null 키를 수신합니다. 일부 코드

//example of IMap executeOnKeys 
    Map<?, ?> map = getCache().executeOnKeys(keys, processor); 

    //example using executor service 
    Future<Object[]> result = executor.submitToKeyOwner(myCallable, key); 

public class MyCallable implements Callable<Object[]>, Serializable { 
...code 
} 

두 가지 예

public class MyProcessor implements EntryProcessor<MyKey, MyValue>, Serializable { 
...code 
} 

호출 가능 프로세서와

UPDATE는 클러스터의 모든 노드가 요청을받을 수 있습니다. 그들이 열쇠를 가지고 있지 않다면, 과정이 촉발되고 그것이 문제입니다.

클러스터의 일부인 라이트 멤버로부터 요청을 보내고 있습니다. 키가 존재하는 경우 EntryProccessor는 확인하지 않습니다

+0

:-) 처리를 존재 생략하지 않는 키를 기대할 수없는 경우 당신은 어떻게 EntryProcessor 또는 부르죠 ExecutorService? 모든 예제 코드? 당신이 생각하는대로하면 버그처럼 들리지만 먼저 코드를 공유하십시오. – noctarius

+0

일부 코드가 추가되었으므로 이제는 더 좋습니다. 감사! – Patrick

+0

이 요청을 라이트 멤버에게 보냅니 까? 아직 100 % 확신하지 못했습니다. 라이트 멤버는 키가 전혀 없으므로 라이트 멤버에게 주어진 키가 어떻게 저장되는지 확인하려면 어떻게해야합니까? 당신이 찾고있는 것은 아마도 회원 주소 지정입니다 :'executor.submitToMember (callable, member)' – noctarius

답변

1

감사합니다. 저장 프로 시저와 같은 것으로 이론적으로 새로운 키 - 값 쌍을 만들 수도 있습니다. 즉, 아직 존재하지 않는 키에 EntryProcessor를 전송할 수 있고 방금 생성 된 새 값을 저장할 수 있다고합니다.

항목에 값이 있다면 당신은, 그러나, 확인하실 수 있습니다 당신은 (즉, 도움이된다면) 아직