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)
죄송합니다. 질문을 올렸을 때 오타가 발생했습니다. 속성 인덱스는 코드에서 동일합니다. 흥미롭게도이 writeExternal 메서드를 (값 형식을 제거하여) 변경하면 이상하게 보이는 문제가 사라집니다. out.writeMap (5, this.calcMap, PriceArrayKey.class); – user3877291
Double 값 중 일부가 null 일 수 있습니까? 아니면 이상한 걸로, 더블 좋아해. 안돼? – cpurdy
NaN 및 null 값으로 테스트 한 결과 문제가 발생하지 않은 것으로 보입니다. 어쨌든 원시 double 값 계산에 사용되기 때문에 값이 null이 될 수 없습니다. 실제로 일관성을 기록하는 방식으로 일부 불일치 지점을 가리키는 것보다 더 많은 바이트를 읽으려고하면 EOFException을 읽는 것을 이해합니다. 매번. – user3877291