2016-09-20 71 views
1

我得到以下異常: 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)Chronicle Map在重啓後拋出異常

回答

1

錯誤消息爲自己說話 - 編年史地圖的內存已損壞,使用ChronicleMapBuilder.recoverPersistedTo()恢復它並嘗試再次迭代。

如果你在「重新啓動」下解釋你的意思,這對預防未來的事情會非常有幫助。 JVM進程重啓,還是服務器重啓?你用什麼信號或命令以任何方式重新啓動?

此外FYI Chronicle Map.forEach()forEachEntry()是比entrySet/keySey/values()。iterator()更有效的迭代Chronicle Map的方法。

+0

這是一個JVM進程重啓。我試着forEach()或forEachEntry(),但我得到了一個excepiton:70738 [SCHEDULER#3]錯誤net.openhft.chronicle.map.impl.CompiledMapIterationContext - 鎖定在該段上的上下文: net.openhft.chronicle.map .impl.CompiledMapIterationContext @ 1c1f0e2:已使用,段6,本地狀態:UNLOCKED,讀取鎖定計數:0,更新鎖定計數:0,寫入鎖定計數:0 當前線程上下文: net.openhft.chronicle.map.impl。 CompiledMapIterationContext @ 1c1f0e2:使用,段6,本地狀態:UNLOCKED,讀鎖計數:0,更新鎖計數:0,寫鎖計數:0 –

+0

謝謝。殺-9還是合作? – leventov