Hi, We are currently using H2 1.4.187 as a small embedded database for one of our product.
Lately, one of our customer has experimented problems with a corrupted database. After investigation, it looks like this customer occasionally "hard reboots" its system, for some reason. The database corruption seems to appear right after some of these hard reboots. We looked at the application logs and observed that all the hard reboots occurred while the application had been idle for several minutes or hours. So the question is: how could an embedded database be corrupted by a reboot if nothing is actually being read or written? That interrogation led us to discover that, even if our application is idle, the database engine might not be. Indeed, as you know, a background thread is running along with the MVStore. Its role seems to be to autocommit pending transactions, and compact the database file. So far so good, but then we observe that the background thread seems to be endlessly compacting the file, even though our application is idle. In other words, almost every time the background thread is triggered (every 50ms), it seems to compute that compacting is needed, and launch a compact process, event our application has not read or write anything. The result is the following while our application is idle: - The database file is continuously rewritten (the timestamp changes); - The size of the database file is continuously changing (alternately increasing and decreasing); - The MVStore's backgroundWriterThread is continuously taking CPU time; - The memory usage is continuously moving, and the garbage collector is continuously working; Now, what are we looking for? Our goal is to avoid database corruption. So our questions are: 1- Is there a way to avoid database corruption when a hard reboot happens? 2- Is there a way to disable the background thread, or the compacting process, to avoid corruption while our application is idle and a hard reboot happens? As for question #2, we thought of disabling the background thread by changing the value of the variables "autoCommitDelay" and "autoCompactFillRate", but we haven't found a way to configure them. Is there a way for us to change the value of these variables? Thanks, Jean-Francois -- 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 h2-database+unsubscr...@googlegroups.com. To post to this group, send email to h2-database@googlegroups.com. Visit this group at https://groups.google.com/group/h2-database. For more options, visit https://groups.google.com/d/optout.