jankotek / mapdb

MapDB provides concurrent Maps, Sets and Queues backed by disk storage or off-heap-memory. It is a fast and easy to use embedded Java database engine.
https://mapdb.org
Apache License 2.0
4.89k stars 873 forks source link

java.lang.IndexOutOfBoundsException while doing Commit for StoreWAL #906

Closed abhishekmaheshwari86 closed 5 years ago

abhishekmaheshwari86 commented 6 years ago

Hi All,

i am facing below issue with MapDB. Below is stacktrace.

Exception in thread "AggregationThread-2" java.lang.IndexOutOfBoundsException at java.nio.Buffer.checkIndex(Buffer.java:540) at java.nio.DirectByteBuffer.get(DirectByteBuffer.java:253) at org.mapdb.volume.ByteBufferVol.getPackedLong(ByteBufferVol.java:289) at org.mapdb.WriteAheadLog.walGetRecord(WriteAheadLog.java:869) at org.mapdb.StoreWAL$commit$4.value(StoreWAL.kt:623) at org.eclipse.collections.impl.map.mutable.primitive.LongLongHashMap.forEachKeyValue(LongLongHashMap.java:998) at org.mapdb.StoreWAL.commit(StoreWAL.kt:622) at org.mapdb.DB.commit(DB.kt:435) at org.colombia.aggbus.api.store.MapDBStore.commit(MapDBStore.java:71) at com.colombia.metrics.MetricsService$AdLogProcessor.onCommit(MetricsService.java:382) at org.colombia.aggbus.api.Aggregator.commit(Aggregator.java:196) at org.colombia.aggbus.api.AggregationBus$AggregationThread.run(AggregationBus.java:526)

Maven Config:

org.mapdb mapdb 3.0.7

Code to create DB: db = DBMaker .fileDB(dir + name) .concurrencyDisable() .fileMmapEnableIfSupported() .fileMmapPreclearDisable() .allocateStartSize(512 10241024) .allocateIncrement(256 10241024) .transactionEnable() .closeOnJvmShutdown() .make();

    store = db
            .hashMap(name, keySerializer, valueSerializer)
            .counterEnable()
            .expireAfterCreate(unit.toMillis(ttl))
            .expireExecutor(Executors.newScheduledThreadPool(1))
            .createOrOpen();
icreator commented 5 years ago

.closeOnJvmShutdown()

maybe you terminate JVM by Ctrl^C and use .close() in code

try remove .closeOnJvmShutdown()