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]>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].
> 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.
>
>
>

-- 
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.


Reply via email to