我遇到以下异常: java.lang.IllegalStateException:我们是一个没有中断的层,但根据层计数器,应该还有1个条目。大小分歧? net.openhft.chronicle.map.impl.CompiledMapIterationContext.forEachTierEntryWhile(CompiledMapIterationContext.java:3779) net.openhft.chronicle.map.impl.CompiledMapIterationContext.innerForEachSegmentEntryWhile(CompiledMapIterationContext.java:3791) net.openhft.chronicle.map.impl.CompiledMapIterationContext.forEachSegmentEntryWhile(CompiledMapIterationContext.java:3811) net.openhft.chronicle.map.impl.CompiledMapIterationContext.forEachSegmentEntry(CompiledMapIterationContext.java:3816) net.openhft.chronicle.map.ChronicleMapIterator.fillEntryBuffer(ChronicleMapIterator.java:61) net.openhft.chronicle.map.ChronicleMapIterator.hasNext(ChronicleMapIterator.java:77)
答案 0 :(得分:1)
错误消息不言而喻 - Chronicle Map的内存已损坏,使用ChronicleMapBuilder.recoverPersistedTo()
恢复它并尝试再次迭代。
如果你在“重启”中解释你的意思,那么将来防止这样的事情会非常有帮助。 JVM进程重启,还是服务器重启?你用什么信号或命令以两种方式重启?
另外,FYI Chronicle Map.forEach()
或forEachEntry()
是迭代Chronicle Map的有效方式,而不是entrySet / keySey / values()。iterator()。