-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Description
Unfortunately this happened to me while closing my DB after removal of a large number of LOBs:
Exception in thread "H2-lob-cleaner": email.com.gmail.wburzyns.org.h2.mvstore.MVStoreException: Reading from file split:30:W:/__db/FinSys DB/storage/matfile.mv.db failed at 41526190657 (length 45768523776), read 384, remaining 0 [2.1.214/1]
at email.com.gmail.wburzyns.org.h2.mvstore.DataUtils.newMVStoreException(DataUtils.java:1004)
at email.com.gmail.wburzyns.org.h2.mvstore.DataUtils.readFully(DataUtils.java:470)
at email.com.gmail.wburzyns.org.h2.mvstore.FileStore.readFully(FileStore.java:98)
at email.com.gmail.wburzyns.org.h2.mvstore.Chunk.readBufferForPage(Chunk.java:422)
at email.com.gmail.wburzyns.org.h2.mvstore.MVStore.readPage(MVStore.java:2569)
at email.com.gmail.wburzyns.org.h2.mvstore.MVMap.readPage(MVMap.java:633)
at email.com.gmail.wburzyns.org.h2.mvstore.Page$NonLeaf.getChildPage(Page.java:1125)
at email.com.gmail.wburzyns.org.h2.mvstore.CursorPos.traverseDown(CursorPos.java:61)
at email.com.gmail.wburzyns.org.h2.mvstore.MVMap.operate(MVMap.java:1770)
at email.com.gmail.wburzyns.org.h2.mvstore.MVMap.remove(MVMap.java:518)
at email.com.gmail.wburzyns.org.h2.mvstore.StreamStore.remove(StreamStore.java:301)
at email.com.gmail.wburzyns.org.h2.mvstore.db.LobStorageMap.doRemoveLob(LobStorageMap.java:493)
at email.com.gmail.wburzyns.org.h2.mvstore.db.LobStorageMap.cleanup(LobStorageMap.java:443)
at email.com.gmail.wburzyns.org.h2.mvstore.db.LobStorageMap.lambda$null$0(LobStorageMap.java:122)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.nio.channels.ClosedByInterruptException
at java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202)
at sun.nio.ch.FileChannelImpl.readInternal(FileChannelImpl.java:740)
at sun.nio.ch.FileChannelImpl.read(FileChannelImpl.java:718)
at email.com.gmail.wburzyns.org.h2.store.fs.split.FileSplit.read(FileSplit.java:63)
at email.com.gmail.wburzyns.org.h2.mvstore.DataUtils.readFully(DataUtils.java:456)
... 15 more
So it looks like a race condition is still lurking in the code. This is 100% reproducible but does not happen if the number of LOBs removed is greatly reduced. BTW the removal goes fine as long as the DB is still opened. This happens only on close.