我有时会在反序列化聚合器时随机出错。当readExternal
方法尝试反序列化地图时,会发生错误。 HashMap
内的键值对似乎不为空。以前有没有人见过类似的问题?我正在使用Oracle coherence 3.7。堆栈跟踪表明在从标题中读取映射值类型时会发生问题。
this.calcMap = in.readMap(5, new HashMap<PriceArrayKey, Double>());
writeExternal方法代码
out.writeMap(5, this.calcMap, PriceArrayKey.class, java.lang.Double);
下面给出的stacktrace
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 :(得分:0)
您将“2”和“5”显示为不同的属性索引;这似乎是一个明显的问题。
我还建议仔细查看PriceArrayKey序列化,因为错误可能导致您在此处看到的内容。
答案 1 :(得分:0)
您尚未显示PriceArrayKey
的序列化程序的实现。如果您使用PofSerializer实施,是否确定在序列化和反序列化方法中调用了out.writeRemainder(null)
和in.readRemainder()
?