2014-07-25 1 views
-1

Aggregator를 deserialize하는 동안 오류가 발생하는 경우가 있습니다. 이 오류는지도를 deserialize하려고 할 때 readExternal 메서드 내에서 발생합니다. HashMap 내부의 키 값 쌍은 null이 아닙니다. 비슷한 문제가있는 사람이 있습니까? Oracle의 일관성 3.7을 사용하고 있습니다. 스택 추적은 헤더에서 맵 값 유형을 읽는 동안 문제가 발생한다고 제안합니다.Oracle Coherence Map deserialize 오류

this.calcMap = in.readMap(5, new HashMap<PriceArrayKey, Double>()); 

out.writeMap(5, this.calcMap, PriceArrayKey.class, java.lang.Double); 

스택 트레이스가

Caused by: Portable(java.io.EOFException) 
    at com.tangosol.io.AbstractByteArrayReadBuffer$ByteArrayBufferInput.readPackedInt(AbstractByteArrayReadBuffer.java:443) 
    at com.tangosol.io.MultiBufferReadBuffer$MultiBufferInput.readPackedInt(MultiBufferReadBuffer.java:683) 
    at com.tangosol.io.pof.PofBufferReader.readAsUniformObject(PofBufferReader.java:3344) 
    at com.tangosol.io.pof.PofBufferReader.readMap(PofBufferReader.java:2537) 
    at com.xyz.coherence.aggregator.Calculator.readExternal(Calculator.java:428) 

답변

0

당신은 "2"를 도시하고 "5"아래의 writeExternal 메소드 코드 상이한 속성 인덱스로서 그것은 명백한 문제처럼 보입니다.

PriceArrayKey serialization을주의 깊게 살펴 보는 것이 좋습니다. 여기서 오류가 발생하면 여기에 표시되는 내용이 발생할 수 있습니다.

+0

죄송합니다. 질문을 올렸을 때 오타가 발생했습니다. 속성 인덱스는 코드에서 동일합니다. 흥미롭게도이 writeExternal 메서드를 (값 형식을 제거하여) 변경하면 이상하게 보이는 문제가 사라집니다. out.writeMap (5, this.calcMap, PriceArrayKey.class); – user3877291

+0

Double 값 중 일부가 null 일 수 있습니까? 아니면 이상한 걸로, 더블 좋아해. 안돼? – cpurdy

+0

NaN 및 null 값으로 테스트 한 결과 문제가 발생하지 않은 것으로 보입니다. 어쨌든 원시 double 값 계산에 사용되기 때문에 값이 null이 될 수 없습니다. 실제로 일관성을 기록하는 방식으로 일부 불일치 지점을 가리키는 것보다 더 많은 바이트를 읽으려고하면 EOFException을 읽는 것을 이해합니다. 매번. – user3877291

0

PriceArrayKey의 시리얼 라이저 구현을 표시하지 않았습니다. PofSerializer 구현을 사용하는 경우 serialize 및 deserialize 메서드에 out.writeRemainder(null)in.readRemainder()을 호출 했습니까?

+0

네, PriceArrayKey에 있습니다. – user3877291