Hello,

*Context:*
I develop a software (java) with an embedded h2. This software is released 
on multiple customers laptop (windows 7/10).
It's not a server app but I've choosen spring boot to built as we may move 
in the future to a client/Server app.
H2 version is 1.4.196 and URL connection is 
"jdbc:h2:file:db;DB_CLOSE_DELAY=-1" (it creates db.mv.db file).

*Problem:*
One customer was not able to start our app.
Error is:
org.h2.jdbc.JdbcSQLException: File corrupted while reading record: null. 
Possible solution: use the recovery tool [90030-196]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
at org.h2.message.DbException.get(DbException.java:168)
at 
org.h2.mvstore.db.MVTableEngine$Store.convertIllegalStateException(MVTableEngine.java:196)
at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:168)
at org.h2.mvstore.db.MVTableEngine.init(MVTableEngine.java:100)
...
Caused by: java.lang.IllegalStateException: File corrupted in chunk 11896, 
expected page length 4..192, got 538976288 [1.4.196/6]
at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:765)
at org.h2.mvstore.Page.read(Page.java:649)

I've try the recover tools but It doesn't work (I have the same error as in 
the "Caused by" exception).
"Exception in thread "main" java.lang.IllegalStateException: File corrupted 
in chunk 11896, expected page length 4..192, got 538976288"

I've looked at the customer app logs and it really looks like the computer 
stop suddenly (low battery, hard reboot, crash...).

Unfortunately it's customer data so difficult for me to post the corrupted 
database here.

How can I avoid this in the future?
Should I use specific option? I saw that there were some dangerous options 
like LOG=0/1, ... 
Is DB_CLOSE_DELAY=-1 dangerous? Should I remove it for a desktop app?
Is mv reliable? Should I use it for a simple desktop app?
No specific solutions / mechansims I can use to make it more reliable when 
power failure / hard customer?


Thanks!
Loïc

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.

Reply via email to