[ 
https://issues.apache.org/jira/browse/DERBY-3607?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mike Matrigali updated DERBY-3607:
----------------------------------


Thanks for the info, without a repro I have been inspecting the code and 
anything that you can tell me about the app
helps direct that effort.  Of course if you can come up with a repro that could 
be run it is much more likely someone will
be able to find the issue.  If you can't give a repro I am going to continue to 
ask questions about the app in your environment, 
and maybe something will come of that.

How big is a zipped copy of the db?  Getting a copy of it may help as it would 
be interesting to look at the state of page 0 in
the 2 corrupted tables.  jira will allow up to 10mb of a zipped attachment.  
there may be other places at a apache we could 
load a bigger file, just not sure right now.  depending on when you enabled 
online backup the log may include a complete
update history of the db and looking at it or more likely comparing it with a 
few other examples of the bug may lead to what
kinds of things lead to the problem.

My current assumption is that the problem is caused by some I/O interaction 
similar to DERBY-3347.  Could you describe 
the concurrency in the simplest case that you have been able to reproduce this 
problem.  Basically how many threads
are involved and do they run concurrently?  Things like are the 
startup/shutdown of the 2 db's done independently on different
threads?  While running how many threads/connections are done doing work in the 
2 db's.  

Can you describe when and how often you execute the command that "enables" 
online backup?  It is at this point that derby
copies a number of database files from the original db to your backup location 
and it does have some code that insures that
the page 0 is up to date before the copy.  Is it possible to run your test 
without online backup ever being called just to see it
the bug still reproduces?  

You mentioned "jvm hook", does this mean you are also shutting down the jvm 
durring the test run?  If so can you describe
how often, ie. for every shutdown in the derby.log is there also a jvm 
shutdown?  I think this is what you mean by your
services comment.  Is the following what is going on:
o You start a service and what it does is start up a jvm, it opens the 2 
databases, and some set of work is somehow done
in both the db's (is this work different or the same for each try).  Then you 
stop the service sometime later which shuts down
the jvm and as part of jvm hooks your specific shutdown stuff happens.

How are clients shutdown?  Is it possible that in progress clients are shutdown 
by "killing" them somehow?  I am not 
familar with hibernate so this could be a part of "the seesion factories 
(hibernate level)  shutdown" ?

Is any of the work that is done during the tests include deletes, updates to 
fields included in any index/contraint, or inserts which fail due to duplicate 
key errors, ddl after the initial create of the database?  This is interesting 
as it may queue background work to reclaim deleted space and thus add another 
point of concurrency to the work being done.  

Does each startup/shutdown phase always access the same tables, looking to 
verify that when you get an error on a particular
table whether it is guaranteed that the table was working in the previous 
startup/shutdown test phase.  

Another thing I am looking at is a possiblity that exaustion of resources is 
coming into play, which would explain why it takes multiple db's.  Do you set 
any derby properties as part of your application, if so could you post all the 
ones that you change.  Can you estimate about how many different derby tables 
might be accessed during one of the startup/shutdown phases of your test?   I 
know this is hard as it should also include how many indexes may be referenced. 
 The 2 resources I am mostly thinking about are the page cache and the open 
container cache.  The page cache defaults to 1000 and the open container cache 
defaults to 100.  Depending on your application (basically concurrent user 
threads and the background thread used for post commit and checkpoints) we may 
have multiple open "channels" on each container in the open container cache - i 
am not exactly sure what
resource this maps to on windows.  

> Invalid checksum error in Derby 10.3.2.1
> ----------------------------------------
>
>                 Key: DERBY-3607
>                 URL: https://issues.apache.org/jira/browse/DERBY-3607
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.3.2.1, 10.4.1.3
>         Environment: OS-WIN XP SP2, 1.86GHz, 2GB, JVM 1.5, disk caching 
> disabled, Hibernate 3.1.1.RC3,c3p0
>            Reporter: Shahbaz
>            Priority: Critical
>         Attachments: DB_10.4logs.zip, derby.log, derby.log, 
> hibernate.cfg.xml, hibernate.cfg.xml, hibernate.cfg.xml
>
>
> I am getting this execption when ever I try to restart my application
> java.sql.SQLException: Invalid checksum on Page Page(0,Container(0, 2033)), 
> expected=2,731,401,932, on-disk version=2,375,776,513, page dump follows: Hex 
> dump:
> 00000000: 0076 0000 0001 0000 0000 0000 0002 0000  .v..............
> 00000010: 0000 0006 0000 0000 0000 0000 0000 0000  ................
> 00000020: 0000 0000 0001 0000 0000 0000 0000 0000  ................
> 00000030: 0000 0000 0000 0000 0000 0000 ffff ffff  ................
> 00000040: ffff ffff 0000 0000 0000 0000 0000 0000  ................
> 00000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
> 00000060: 0000 0000 0000 0000 0000 0000 5000 0000  ............P...
> at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown 
> Source)
>       at 
> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown 
> Source)
>       at 
> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown 
> Source)
>       at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown 
> Source)
>       at 
> org.apache.derby.impl.jdbc.EmbedCallableStatement.executeStatement(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(Unknown 
> Source)
>       at 
> com.mchange.v2.c3p0.impl.NewProxyCallableStatement.execute(NewProxyCallableStatement.java:3044)
>       at 
> ae.sphere.arena.database.management.backup.BackupStategy.createBackup(BackupStategy.java:56)
>       at 
> ae.sphere.arena.database.management.backup.BackupStategy.doSchedulerJob(BackupStategy.java:41)
>       at 
> ae.sphere.arena.common.jobscheduler.Scheduler$1.run(Scheduler.java:49)
>       at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)
> 00000070: 0000 0000 0000 0000 0000 0000 0000 0000  ................
> 00000080: 0000 0000 0000 0000 0000 0000 0000 0000  ................
> 00000090: 0000 0000 0000 0000 0000 0000 0000 0000  ................
> 000000a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
> 000000b0: 0000 0

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to