2013-03-27 2 views
1

클러스터에서 hazelcast -2.5를 사용 중입니다. 지도 (키 : 문자열, 값 : 사용자 정의 개체의 ArrayList)가 있습니다. 나는 대부분의 장소에서 벌금을 제거 할 수 있지만 코드의 특정 부분에서 put 작업은 자동으로 실패합니다 (put 작업에 사용 된 키 문자열은 고유하며 ArrayList도 비어 있지 않습니다). 예외는 발생하지 않습니다. 잠금이 수반 된 경우 tryPut을 시도해도 그 호출은 나에게 진정한 반환 값을주었습니다. put 작업 직후 맵의 keySet을 인쇄 해 보았지만 방금 삽입 한 키를 볼 수 없었습니다.지도의 크기도 변경되지 않았습니다. 그러나 tryPut은 나에게 진정한 반환 값을 주었고 나는 합리적으로 문자열에 대해 고유 한 키를 사용하고 있습니다. 키의 이진 형식도 고유해야합니다.) 내 키의 이진 형식이 고유하지 않으면 tryPut이 false 반환 값을 반환해야한다고 가정합니다. 또는 이전에 추가 한 키/값을 새 키/값 쌍으로 바꿔야합니다 (단, 오해의 여지가없는 한).hazelcast map put 작업이 작동하지 않음

boolean putVal = testMap.tryPut(this.testObj.UUID, testEntity, timeout, TimeUnit.MILLISECONDS); //timeout is 2000L or 2 seconds in this case 

이 문제를 해결하거나 내 키에 대한 바이너리 형태가 이해할 수있을 것이다 문제를 일으키는 지 파악에 어떤 생각.

감사합니다.

답변

2

시도해보십시오. 그리고 그 키와 연관된 값이 있는지 확인하십시오. 그렇지 않은 경우, 풋은 성공해야합니다.

+0

고마워요. 실제로 put 작업의 2-3 초 내에 여러 번 시도해 보았습니다. 그리고 그것은 나를 위해 null 값을 반환합니다. (put이 실패 할 수도있는 지점에 도달했습니다.) 나는 이미 put 작업이 끝난 직후에 키셋을 인쇄 해 보았습니다. 문제가 무엇인지 확인하고 싶지만 내 코드 문제 일 가능성이 큽니다. 지도에 (String) 키가 얼마나 걸리는지가 중요합니까? –

+0

나는 당신의 제안을 잘못 해석했다고 생각합니다. 나는 그것을 시도 할 것이며, 가치가 없다면, 나는 수술을 진행하고 결과를 공유 할 것입니다. –

+0

파일럿 오류 (내 얼굴에 달걀)! put은 잘 작동했습니다. 나는 맵에 대한 호출을 호출하는 몇 가지 테스트 코드를 가지고 있는데,이 테스트 코드는 맵에 대한 저장소로드 구현에서로드를 호출하고있다 (이 값은 이미 다른 맵의 저장소로드 구현을 통해 DB에 있었다 -이 맵의 저장소 구현은 다음과 같다). 빈). 답변을 주신 Fuad에게 감사드립니다. –

관련 문제