Hi all,
Has anyone experienced ArrayIndexOutOfBoundsException? It happens randomly and I cannot find a pattern to recreate the same issue. Therefore I have no clue about the potential reason which can cause it.
I use a tree map to store logs with keys in integer and values in custom class with combination of integers, strings, dates and byte arrays. Two secondary keys are also created to index types and timestamps. The database is initialized as follows, which is pretty straightforward in my opinion...
db = DBMaker.fileDB(dbFile).closeOnJvmShutdown().transactionDisable().make();
logMap = db.treeMap("log");
properties = db.hashMap("properties");
triggerIndex = db.treeSetCreate("triggerIndex").comparator(Fun.COMPARABLE_ARRAY_COMPARATOR).makeOrGet();
Bind.secondaryKey(logMap, triggerIndex, new Fun.Function2<SearchTrigger, Integer, Log>() {
@Override
public SearchTrigger run(Integer key, Log value) {
return value.getSearchTrigger();
}
});
dateIndex = db.treeSetCreate("dateIndex").comparator(Fun.COMPARABLE_ARRAY_COMPARATOR).makeOrGet();
Bind.secondaryKey(logMap, dateIndex, new Fun.Function2<Long, Integer, Log>() {
@Override
public Long run(Integer key, Log value) {
return value.getTimestamp().getTime();
}
});
I cannot put new data into the map:
java.lang.ArrayIndexOutOfBoundsException: 1
at org.mapdb.DataIO$DataInputByteArray.readChar(DataIO.java:475)
at org.mapdb.DataIO$DataInputByteArray.readUnsignedShort(DataIO.java:469)
at org.mapdb.BTreeMap$NodeSerializer.deserialize(BTreeMap.java:847)
at org.mapdb.BTreeMap$NodeSerializer.deserialize(BTreeMap.java:760)
at org.mapdb.Store.deserialize(Store.java:415)
at org.mapdb.StoreDirect.getFromOffset(StoreDirect.java:328)
at org.mapdb.StoreDirect.get2(StoreDirect.java:312)
at org.mapdb.Store.get(Store.java:253)
at org.mapdb.Engine$CloseOnJVMShutdown.get(Engine.java:455)
at org.mapdb.BTreeMap.put2(BTreeMap.java:1098)
at org.mapdb.BTreeMap.put(BTreeMap.java:1086)
I cannot get the size of a map:
java.lang.ArrayIndexOutOfBoundsException: 1
org.mapdb.DataIO$DataInputByteArray.readChar(DataIO.java:475)
org.mapdb.DataIO$DataInputByteArray.readUnsignedShort(DataIO.java:469)
org.mapdb.BTreeMap$NodeSerializer.deserialize(BTreeMap.java:847)
org.mapdb.BTreeMap$NodeSerializer.deserialize(BTreeMap.java:760)
org.mapdb.Store.deserialize(Store.java:415)
org.mapdb.StoreDirect.getFromOffset(StoreDirect.java:328)
org.mapdb.StoreDirect.get2(StoreDirect.java:312)
org.mapdb.Store.get(Store.java:253)
org.mapdb.Engine$CloseOnJVMShutdown.get(Engine.java:455)
org.mapdb.BTreeMap$BTreeIterator.pointToStart(BTreeMap.java:1347)
org.mapdb.BTreeMap$BTreeIterator.<init>(BTreeMap.java:1312)
org.mapdb.BTreeMap.sizeLong(BTreeMap.java:1858)
org.mapdb.BTreeMap.size(BTreeMap.java:1849)
I cannot iterate the map:
java.lang.ArrayIndexOutOfBoundsException: 1
org.mapdb.DataIO$DataInputByteArray.readChar(DataIO.java:475)
org.mapdb.DataIO$DataInputByteArray.readUnsignedShort(DataIO.java:469)
org.mapdb.BTreeMap$NodeSerializer.deserialize(BTreeMap.java:847)
org.mapdb.BTreeMap$NodeSerializer.deserialize(BTreeMap.java:760)
org.mapdb.Store.deserialize(Store.java:415)
org.mapdb.StoreDirect.getFromOffset(StoreDirect.java:328)
org.mapdb.StoreDirect.get2(StoreDirect.java:312)
org.mapdb.Store.get(Store.java:253)
org.mapdb.Engine$CloseOnJVMShutdown.get(Engine.java:455)
org.mapdb.BTreeMap.findLargerNode(BTreeMap.java:2203)
org.mapdb.BTreeMap$BTreeIterator.<init>(BTreeMap.java:1323)
org.mapdb.BTreeMap$BTreeEntryIterator.<init>(BTreeMap.java:1759)
org.mapdb.BTreeMap$SubMap.entryIterator(BTreeMap.java:3053)
org.mapdb.BTreeMap$EntrySet.iterator(BTreeMap.java:2569)
java.util.AbstractMap$2$1.<init>(AbstractMap.java:378)
java.util.AbstractMap$2.iterator(AbstractMap.java:377)
I cannot reopen the map:
java.lang.ArrayIndexOutOfBoundsException: 1
at org.mapdb.DataIO$DataInputByteArray.readChar(DataIO.java:475)
at org.mapdb.DataIO$DataInputByteArray.readUnsignedShort(DataIO.java:469)
at org.mapdb.BTreeMap$NodeSerializer.deserialize(BTreeMap.java:847)
at org.mapdb.BTreeMap$NodeSerializer.deserialize(BTreeMap.java:760)
at org.mapdb.Store.deserialize(Store.java:415)
at org.mapdb.StoreDirect.getFromOffset(StoreDirect.java:328)
at org.mapdb.StoreDirect.get2(StoreDirect.java:312)
at org.mapdb.Store.get(Store.java:253)
at org.mapdb.Engine$CloseOnJVMShutdown.get(Engine.java:455)
at org.mapdb.BTreeMap.<init>(BTreeMap.java:989)
at org.mapdb.DB.treeMap(DB.java:1491)
at org.mapdb.DB.treeMap(DB.java:1445)