Skip to content

Random crashes with exception "Fatal Exception: java.lang.IllegalStateException: Chunk 55267 not found" #386

@lahiruchandima

Description

@lahiruchandima

I randomly get below exceptions reported in my android app which uses nitrite 3.3.0.

   Fatal Exception: java.lang.IllegalStateException: Chunk 55267 not found [1.4.200/9]
   at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:950)
   at org.h2.mvstore.MVStore.getChunk(MVStore.java:1230)
   at org.h2.mvstore.MVStore.readBufferForPage(MVStore.java:1214)
   at org.h2.mvstore.MVStore.readPage(MVStore.java:2209)
   at org.h2.mvstore.MVMap.readPage(MVMap.java:672)
   at org.h2.mvstore.Page$NonLeaf.getChildPage(Page.java:1043)
   at org.h2.mvstore.CursorPos.traverseDown(CursorPos.java:58)
   at org.h2.mvstore.MVMap.operate(MVMap.java:1804)
   at org.h2.mvstore.MVMap.putIfAbsent(MVMap.java:564)
   at org.dizitart.no2.store.NitriteMVMap.putIfAbsent(NitriteMVMap.java:105)
   at org.dizitart.no2.internals.DataService.insert(DataService.java:84)
   at org.dizitart.no2.internals.DataService.update(DataService.java:135)
   at org.dizitart.no2.internals.NitriteService.update(NitriteService.java:373)
   at org.dizitart.no2.internals.DefaultNitriteCollection.update(DefaultNitriteCollection.java:322)
   at org.dizitart.no2.objects.DefaultObjectRepository.update(DefaultObjectRepository.java:141)
   at org.dizitart.no2.objects.DefaultObjectRepository.update(DefaultObjectRepository.java:126)
   at com.my.app.DatabaseHelper.persistReceipt(DatabaseHelper.java:619)
   ...
   ...
   Caused by java.lang.IllegalStateException: Chunk 55194 not found [1.4.200/9]
   at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:950)
   at org.h2.mvstore.MVStore.getChunk(MVStore.java:1230)
   at org.h2.mvstore.MVStore.readBufferForPage(MVStore.java:1214)
   at org.h2.mvstore.MVStore.readPage(MVStore.java:2209)
   at org.h2.mvstore.MVMap.readPage(MVMap.java:672)
   at org.h2.mvstore.Page$NonLeaf.getChildPage(Page.java:1043)
   at org.h2.mvstore.Cursor.hasNext(Cursor.java:53)
   at java.util.LinkedHashSet.<init>(LinkedHashSet.java:81)
   at org.dizitart.no2.filters.NotFilter.matchedSet(NotFilter.java:41)
   at org.dizitart.no2.filters.NotFilter.apply(NotFilter.java:52)
   at org.dizitart.no2.objects.filters.NotObjectFilter.apply(NotObjectFilter.java:51)
   at org.dizitart.no2.internals.SearchService.find(SearchService.java:67)
   at org.dizitart.no2.internals.DataService.remove(DataService.java:211)
   at org.dizitart.no2.internals.NitriteService.remove(NitriteService.java:384)
   at org.dizitart.no2.internals.DefaultNitriteCollection.remove(DefaultNitriteCollection.java:360)
   at org.dizitart.no2.objects.DefaultObjectRepository.remove(DefaultObjectRepository.java:176)
   at org.dizitart.no2.objects.DefaultObjectRepository.remove(DefaultObjectRepository.java:170)
   at com.my.app.DatabaseHelper.removeReceipts(DatabaseHelper.java:666)
   ...
   ...

I reported this issue in h2-database in following issue. The response from them was this could be due to not using registerVersionUsage() and deregisterVersionUsage(). I couldn't find these methods when I searched nitrite code, so this is a possibility.

h2database/h2database#2590 (comment)

If using registerVersionUsage() and deregisterVersionUsage() could affect performance, let the uses of nitrite configure whether it could be used or not.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Status

Done

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions