[ http://issues.apache.org/jira/browse/DERBY-1248?page=all ]
Mike Matrigali updated DERBY-1248: ---------------------------------- After a bit more thought the code can not throw an assert during undo based on page versions. It may be perfectly valid to appy a version 400 undo record to a version 500 page, due to row level locking where 100 changes have committed but the 400th change needs to be undone. So the only issue is that in the recovery case on the backup it is seeing version 579 of the page, but the log is only up to version 476 of the page. I have committed a new test OnlineBackupTest5.sql, which is the same as OnlineBackupTest4.sql except that it restores the backup to a new location, leaving the evidence of the old db. If this one reproduces the problem it should be clear whether this is a backup problem, or a mainline recovery problem. So far I have not been able to reproduce on my hardware/os, would appreciate it if someone can iterate over the new test and post the results if it fails. > Assert failure in BasePage.shiftUp() when running store/onlineBackupTest4.sql > ----------------------------------------------------------------------------- > > Key: DERBY-1248 > URL: http://issues.apache.org/jira/browse/DERBY-1248 > Project: Derby > Type: Bug > Components: Store, Regression Test Failure > Versions: 10.2.0.0 > Environment: Sun JVM 1.5.0_04 on Solaris 10 x86. Derby from trunk (revision > 396285). Sane build. > Reporter: Knut Anders Hatlen > Attachments: derby_335.log, linuxfailure.zip, solaris-singlecpu.zip, > solarisfailure.zip, storemore.zip, test2_379.jar, test335.jar > > I saw this error when I ran derbyall. > ********* Diff file derbyall/storeall/storemore/onlineBackupTest4.diff > *** Start: onlineBackupTest4 jdk1.5.0_04 storeall:storemore 2006-04-24 > 11:51:50 *** > 68 del > < ij(CONNECTION1)> select * from ctest; > 69 del > < ID |NAME > > 70 del > < > -------------------------------------------------------------------------------------------------------------------------------------------- > 71 del > < 1 |derby backup/compress test > & > 72 del > < 2 |derby backup/compress test > & > 73 del > < 300 |derby backup/compress test > & > 74 del > < 509 |derby backup/compress test > & > 75 del > < 510 |derby backup/compress test > & > 76 del > < 511 |derby backup/compress test > & > 77 del > < 512 |derby backup/compress test > & > 78 del > < ij(CONNECTION1)> insert into ctest values(2000, 'restore was successfil') ; > 79 del > < 1 row inserted/updated/deleted > 80 del > < ij(CONNECTION1)> > 80 add > > org.apache.derby.shared.common.sanity.AssertFailure: ASSERT FAILED shiftUp > > failed, low must be between 0 and recordCount. low = 140, recordCount = 2 > > ERROR XJ040: Failed to start database 'wombat', see the next exception for > > details. > > ERROR XJ001: Java exception: 'ASSERT FAILED shiftUp failed, low must be > > between 0 and recordCount. low = 140, recordCount = 2: > > org.apache.derby.shared.common.sanity.AssertFailure'. > > ij> select * from ctest; > > IJ ERROR: Unable to establish connection > > ij> insert into ctest values(2000, 'restore was successfil') ; > > IJ ERROR: Unable to establish connection > > ij> > Test Failed. > *** End: onlineBackupTest4 jdk1.5.0_04 storeall:storemore 2006-04-24 > 11:51:56 *** > The test usually succeeds, but I managed to reproduce the failure by running > this loop in the shell: > touch onlineBackupTest4.pass > while [ -f onlineBackupTest4.pass ]; do > rm onlineBackupTest4.pass > java org.apache.derbyTesting.functionTests.harness.RunTest > store/onlineBackupTest4.sql > done -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
