Hello, thanks. While working on this application, I sometimes kill the java process directly from eclipse and it's possible I've done this while the database was being written to. It could be related to this. Generally when users close the application, they'll close the JFrame (clicking on the X) which shuts down the JVM more gracefully. Still, there's always a chance for the process to get terminated abruptly.
So have you spent much time looking into the H2 startup time? When I launch my application about half the startup time is getting H2 started. It's not terrible, but perhaps you could figure out ways to improve this. :) On Sunday, April 21, 2013 11:54:54 AM UTC-7, Thomas Mueller wrote: > > Hi, > > Thanks for the database files. Unfortunately, I don't see currently what > the problem could be. There are some very strange error messages in the > .trace.db file just before the problem occurs (see below), but other than > that I don't see anything strange yet. I guess there is something special > to what the application does in your case that triggers the problem, but > I'm not sure what it could be. My current guess is that it is either > related to a query that internally create a temporary table, or it is > related to how the database is closed, maybe some concurrent processing > while the database is being closed. I'm unable to reproduce the problem on > my side so far. > > I see this or a similar exception quite a lot in the .trace.db file: > > 04-16 20:46:13 jdbc[2]: exception > org.h2.jdbc.JdbcSQLException: Database is already closed (to disable > automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db > URL) [90121-171] > at org.h2.message.DbException.getJdbcSQLException(DbException.java:329) > at org.h2.message.DbException.get(DbException.java:169) > at org.h2.message.DbException.get(DbException.java:146) > at org.h2.message.DbException.get(DbException.java:135) > at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1391) > at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1366) > at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:627) > at > com.j256.ormlite.jdbc.JdbcDatabaseConnection.queryForOne(JdbcDatabaseConnection.java:271) > at > com.j256.ormlite.jdbc.JdbcDatabaseConnection.queryForLong(JdbcDatabaseConnection.java:208) > at > com.j256.ormlite.jdbc.JdbcDatabaseConnection.queryForLong(JdbcDatabaseConnection.java:203) > at > com.j256.ormlite.jdbc.JdbcPooledConnectionSource.testConnection(JdbcPooledConnectionSource.java:379) > at > com.j256.ormlite.jdbc.JdbcPooledConnectionSource.access$600(JdbcPooledConnectionSource.java:38) > at > com.j256.ormlite.jdbc.JdbcPooledConnectionSource$ConnectionTester.testConnections(JdbcPooledConnectionSource.java:489) > at > com.j256.ormlite.jdbc.JdbcPooledConnectionSource$ConnectionTester.run(JdbcPooledConnectionSource.java:427) > 04-16 20:46:34 database: close > > This is the really strange message that happens before the database is > corrupt: > > org.h2.message.DbException: Row not found when trying to delete from index > "PUBLIC.SYS_DATA: 62628 62661" [90112-171] > at org.h2.message.DbException.get(DbException.java:169) > at org.h2.message.DbException.get(DbException.java:146) > at org.h2.index.PageDataLeaf.remove(PageDataLeaf.java:411) > at org.h2.index.PageDataNode.remove(PageDataNode.java:240) > at org.h2.index.PageDataIndex.remove(PageDataIndex.java:330) > at org.h2.table.RegularTable.removeRow(RegularTable.java:362) > at org.h2.engine.Database.removeMeta(Database.java:798) > at org.h2.engine.Database.update(Database.java:1431) > at org.h2.schema.Sequence.flush(Sequence.java:127) > at org.h2.schema.Sequence.flushWithoutMargin(Sequence.java:105) > at org.h2.schema.Sequence.close(Sequence.java:143) > at org.h2.engine.Database.close(Database.java:1127) > at org.h2.engine.DatabaseCloser.run(DatabaseCloser.java:80) > Caused by: org.h2.jdbc.JdbcSQLException: Row not found when trying to > delete from index "PUBLIC.SYS_DATA: 62628 62661" [90112-171] > at org.h2.message.DbException.getJdbcSQLException(DbException.java:329) > ... 13 more > 04-16 20:46:34 database: close > java.lang.RuntimeException: log.removeUntil not found: 55439 last 54986 > at org.h2.message.DbException.throwInternalError(DbException.java:228) > at org.h2.store.PageLog.removeUntil(PageLog.java:729) > at org.h2.store.PageLog.removeUntil(PageLog.java:704) > at org.h2.store.PageStore.checkpoint(PageStore.java:434) > at org.h2.engine.Database.closeOpenFilesAndUnlock(Database.java:1195) > at org.h2.engine.Database.close(Database.java:1148) > at org.h2.engine.DatabaseCloser.run(DatabaseCloser.java:80) > 04-16 20:46:52 jdbc[2]: exception > > > > > On Thu, Apr 18, 2013 at 7:44 AM, TrendTimer.com > <[email protected]<javascript:> > > wrote: > >> >> Thomas, you can download my corrupt database here: >> >> http://www.trendtimer.com/db_corrupt/trendtimerdb/trendtimerdb.trace.db >> http://www.trendtimer.com/db_corrupt/trendtimerdb/trendtimerdb.h<http://www.trendtimer.com/db_corrupt/trendtimerdb/trendtimerdb.trace.db> >> 2.db >> >> >> Connection string >> is: Constants.jdbcString="jdbc:h2:file:"+databaseFolder+databaseName; >> >> I'm running on Windows 8. >> I have 16gb ram and haven't seen any memory problems >> It's not a network drive >> and am running h2-1.3.171.jar >> >> I'd appreciate it if you could take a look. thanks a lot! >> >> >> On Wednesday, April 17, 2013 1:22:02 PM UTC-7, TrendTimer.com wrote: >>> >>> Thanks Thomas. I'll post a download link for these tonight. I >>> appreciate your help! I've really been impressed with H2 except for these >>> corruption issues. The start-up time could be improved, but the overall >>> performance is great. >>> >>> On Wednesday, April 17, 2013 12:26:46 AM UTC-7, Thomas Mueller wrote: >>>> >>>> Hi, >>>> >>>> I would be interested in the database files (*.db, including the trace >>>> file if there is one). It would be great if you could send them to me. >>>> >>>> Regards, >>>> Thomas >>>> >>>> >>>> >>>> On Wed, Apr 17, 2013 at 6:17 AM, Ryan How <[email protected]> wrote: >>>> >>>>> Sorry, you might have said in another post, but what connection >>>>> string are you using? >>>>> >>>>> Are you using it over a network drive? >>>>> >>>>> OS? >>>>> >>>>> Any Out of Memory errors on this database? >>>>> >>>>> >>>>> Thanks, Ryan >>>>> >>>>> >>>>> >>>>> On 17/04/2013 12:13 PM, TrendTimer.com wrote: >>>>> >>>>> Also, I'm using version h2-1.3.171.jar >>>>> >>>>> On Tuesday, April 16, 2013 9:05:41 PM UTC-7, TrendTimer.com wrote: >>>>>> >>>>>> >>>>>> I posted another message awhile back about a corrupted H2 database. >>>>>> It happened again for me tonight. I get the following exception. >>>>>> >>>>>> Caused by: org.h2.jdbc.JdbcSQLException: File corrupted while >>>>>> reading record: "page[2255] data leaf table:49 TRE_FUNDINFO entries:6 >>>>>> parent:291 keys:[307394, 307395, 307396, 307397, 307398, 307399] >>>>>> offsets:[1831, 1595, 1325, 1065, 830, 581]". Possible solution: use the >>>>>> recovery tool; SQL statement: >>>>>> DELETE FROM `tre_fundinfo` WHERE `id` = ? [90030-171] >>>>>> at org.h2.message.DbException.**get**JdbcSQLException(**DbException. >>>>>> **java:329) >>>>>> at org.h2.message.DbException.**get**(DbException.java:169) >>>>>> at org.h2.message.DbException.**get**(DbException.java:146) >>>>>> ... >>>>>> >>>>>> I'm not sure what I might have done to cause this. I do routinely >>>>>> shut down my application at different moments. I don't think the >>>>>> application was writing data at the moment of shutdown, but it's >>>>>> possible. >>>>>> Even if it was, I don't think this should corrupt the database. >>>>>> Basically >>>>>> any time this happens my application is completely broken. Given that >>>>>> it >>>>>> has happened to me twice in the last month, I'm concerned that this >>>>>> might >>>>>> be a frequent occurrence. As we all know, data stored in databases can >>>>>> be >>>>>> important, so it is important that it doesn't get lost. I understand >>>>>> there >>>>>> is a database recovery tool of some sort, but end users shouldn't be >>>>>> expected to run this kind of thing. >>>>>> >>>>>> when I select from the table in the H2 Console I get: >>>>>> General error: "java.lang.**ArrayIndexOutOfBoun**dsException**: 0"; >>>>>> SQL statement: >>>>>> select * from tre_fundinfo >>>>>> [50000-171]<http://192.168.1.9:8082/query.do?jsessionid=2d594820d37f9586827884be52b7bb80#> >>>>>> HY000/50000 >>>>>> (Help)<http://h2database.com/javadoc/org/h2/constant/ErrorCode.html#c50000> >>>>>> >>>>>> Thomas, I have saved a copy of the corrupted database. It's about >>>>>> 150MB (before zipping). If you're interested, I could place this >>>>>> somewhere >>>>>> you could download it from. >>>>>> >>>>>> >>>>>> >>>>>> Thanks! >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>> 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...@googlegroups.**com. >>>>> To post to this group, send email to [email protected]. >>>>> Visit this group at >>>>> http://groups.google.com/**group/h2-database?hl=en<http://groups.google.com/group/h2-database?hl=en> >>>>> . >>>>> For more options, visit >>>>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out> >>>>> . >>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> 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...@googlegroups.**com. >>>>> To post to this group, send email to [email protected]. >>>>> Visit this group at >>>>> http://groups.google.com/**group/h2-database?hl=en<http://groups.google.com/group/h2-database?hl=en> >>>>> . >>>>> For more options, visit >>>>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out> >>>>> . >>>>> >>>>> >>>>> >>>> >>>> -- >> 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] <javascript:>. >> To post to this group, send email to [email protected]<javascript:> >> . >> Visit this group at http://groups.google.com/group/h2-database?hl=en. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> > > -- 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 http://groups.google.com/group/h2-database?hl=en. For more options, visit https://groups.google.com/groups/opt_out.
