You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Suresh Thalamati (JIRA)" <de...@db.apache.org> on 2006/04/17 19:11:18 UTC

[jira] Updated: (DERBY-1113) transaction logs files requried for recovery are getting deleted when backup and checkpointas are running in parallel.

     [ http://issues.apache.org/jira/browse/DERBY-1113?page=all ]

Suresh Thalamati updated DERBY-1113:
------------------------------------

    Attachment: derby-1113.diff

The reason for missing log files is truncation logic at checkpoint was 
incorrectly deleting the log files that were needed for crash recovery 
if the backup is progress at the same time; The first log file that should 
not be deleted was incorrectly assigned to the log file number that is yet 
to be written to the backup. 

Attached patch  changes the logic, so that  all the log files that are required for both crash recovery and the backup are not deleted. Basically the first log file that should not be deleted is the lowest of first log needed for crash recovery or the log file that is yet to be copied to the backup.  

TESTS: derbyall test suite passed on jdk142/Windows XP.

It would be great if some one can review and commit this patch. 

svn stat:
M      java\engine\org\apache\derby\impl\store\raw\log\LogToFile.java



> transaction logs files requried for recovery are getting deleted when backup and checkpointas are running in parallel.
> ----------------------------------------------------------------------------------------------------------------------
>
>          Key: DERBY-1113
>          URL: http://issues.apache.org/jira/browse/DERBY-1113
>      Project: Derby
>         Type: Bug

>   Components: Store
>     Versions: 10.2.0.0
>     Reporter: Suresh Thalamati
>     Assignee: Suresh Thalamati
>     Priority: Critical
>  Attachments: derby-1113.diff
>
> ----------------------------------------------------------------
> 2006-03-14 19:45:40.573 GMT:
>  Booting Derby version The Apache Software Foundation - Apache Derby - 10.2.0.0 alpha - (1): instance c013800d-0109-fa4a-bf58-0000001078a0
> on database directory E:\suresht\backuptests\wombat  
> DEBUG LogTrace OUTPUT: log control file ckp instance = (328,1153619)
> DEBUG LogTrace OUTPUT: log control file, was derby.system.durability set to test = false
> DEBUG LogTrace OUTPUT: Found checkpoint at (328,1153619) Checkpoint : 	redoLWM (328,17661)
> 		undoLWM (327,2986503)
> **************************
> org.apache.derby.impl.store.raw.xact.TransactionTable@1a52fdf
> Transaction Table: size = 2 largestUpdateXactId = 59155
> Xid=59155 gid=null firstLog=(328,1153581) lastLog=null transactionStatus=0 myxact=null update=true recovery=true prepare=false needExclusion=true
> Xid=59154 gid=null firstLog=(327,3151974) lastLog=(328,1153500) transactionStatus=0 myxact=null update=true recovery=true prepare=false needExclusion=true
> ---------------------------
> DEBUG LogTrace OUTPUT: E:\suresht\backuptests\wombat\log\log327.dat does not exist
> Exception trace: 
> org.apache.derby.iapi.services.sanity.AssertFailure: ASSERT FAILED scan null at (327,2986503)
> 	at org.apache.derby.iapi.services.sanity.SanityManager.THROWASSERT(SanityManager.java:150)
> 	at org.apache.derby.impl.store.raw.log.Scan.<init>(Scan.java:141)
> 	at org.apache.derby.impl.store.raw.log.LogToFile.openForwardsScan(LogToFile.java:2655)
> 	at org.apache.derby.impl.store.raw.log.LogToFile.recover(LogToFile.java:758)
> 	at org.apache.derby.impl.store.raw.RawStore.boot(RawStore.java:336)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1993)
> 	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:290)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:542)
> 	at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:418)
> 	at org.apache.derby.impl.store.access.RAMAccessManager.boot(RAMAccessManager.java:987)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1993)
> 	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:290)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:542)
> 	at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:418)
> 	at org.apache.derby.impl.db.BasicDatabase.bootStore(BasicDatabase.java:738)
> 	at org.apache.derby.impl.db.BasicDatabase.boot(BasicDatabase.java:178)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1993)
> 	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:290)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1831)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.startProviderService(BaseMonitor.java:1697)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.findProviderAndStartService(BaseMonitor.java:1577)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.startPersistentService(BaseMonitor.java:990)
> 	at org.apache.derby.iapi.services.monitor.Monitor.startPersistentService(Monitor.java:541)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(EmbedConnection.java:1583)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java:213)
> 	at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(EmbedConnection30.java:72)
> 	at org.apache.derby.jdbc.Driver30.getNewEmbedConnection(Driver30.java:73)
> 	at org.apache.derby.jdbc.InternalDriver.connect(InternalDriver.java:199)
> 	at java.sql.DriverManager.getConnection(DriverManager.java:512)
> 	at java.sql.DriverManager.getConnection(DriverManager.java:140)
> 	at org.apache.derby.impl.tools.ij.ij.dynamicConnection(ij.java:873)
> 	at org.apache.derby.impl.tools.ij.ij.ConnectStatement(ij.java:723)
> 	at org.apache.derby.impl.tools.ij.ij.ijStatement(ij.java:553)
> 	at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:289)
> 	at org.apache.derby.impl.tools.ij.Main.go(Main.java:203)
> 	at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:169)
> 	at org.apache.derby.impl.tools.ij.Main14.main(Main14.java:55)
> 	at org.apache.derby.tools.ij.main(ij.java:60)
> ------------  BEGIN SHUTDOWN ERROR STACK -------------
> ERROR XSLA6: Cannot recover the database.
> 	at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:304)
> 	at org.apache.derby.impl.store.raw.log.LogToFile.recover(LogToFile.java:1219)
> 	at org.apache.derby.impl.store.raw.RawStore.boot(RawStore.java:336)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1993)
> 	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:290)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:542)
> 	at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:418)
> 	at org.apache.derby.impl.store.access.RAMAccessManager.boot(RAMAccessManager.java:987)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1993)
> 	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:290)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:542)
> 	at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:418)
> 	at org.apache.derby.impl.db.BasicDatabase.bootStore(BasicDatabase.java:738)
> 	at org.apache.derby.impl.db.BasicDatabase.boot(BasicDatabase.java:178)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1993)
> 	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:290)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1831)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.startProviderService(BaseMonitor.java:1697)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.findProviderAndStartService(BaseMonitor.java:1577)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.startPersistentService(BaseMonitor.java:990)
> 	at org.apache.derby.iapi.services.monitor.Monitor.startPersistentService(Monitor.java:541)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(EmbedConnection.java:1583)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java:213)
> 	at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(EmbedConnection30.java:72)
> 	at org.apache.derby.jdbc.Driver30.getNewEmbedConnection(Driver30.java:73)
> 	at org.apache.derby.jdbc.InternalDriver.connect(InternalDriver.java:199)
> 	at java.sql.DriverManager.getConnection(DriverManager.java:512)
> 	at java.sql.DriverManager.getConnection(DriverManager.java:140)
> 	at org.apache.derby.impl.tools.ij.ij.dynamicConnection(ij.java:873)
> 	at org.apache.derby.impl.tools.ij.ij.ConnectStatement(ij.java:723)
> 	at org.apache.derby.impl.tools.ij.ij.ijStatement(ij.java:553)
> 	at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:289)
> 	at org.apache.derby.impl.tools.ij.Main.go(Main.java:203)
> 	at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:169)
> 	at org.apache.derby.impl.tools.ij.Main14.main(Main14.java:55)
> 	at org.apache.derby.tools.ij.main(ij.java:60)
> ============= begin nested exception, level (1) ===========
> org.apache.derby.iapi.services.sanity.AssertFailure: ASSERT FAILED scan null at (327,2986503)
> 	at org.apache.derby.iapi.services.sanity.SanityManager.THROWASSERT(SanityManager.java:150)
> 	at org.apache.derby.impl.store.raw.log.Scan.<init>(Scan.java:141)
> 	at org.apache.derby.impl.store.raw.log.LogToFile.openForwardsScan(LogToFile.java:2655)
> 	at org.apache.derby.impl.store.raw.log.LogToFile.recover(LogToFile.java:758)
> 	at org.apache.derby.impl.store.raw.RawStore.boot(RawStore.java:336)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1993)
> 	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:290)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:542)
> 	at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:418)
> 	at org.apache.derby.impl.store.access.RAMAccessManager.boot(RAMAccessManager.java:987)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1993)
> 	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:290)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:542)
> 	at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:418)
> 	at org.apache.derby.impl.db.BasicDatabase.bootStore(BasicDatabase.java:738)
> 	at org.apache.derby.impl.db.BasicDatabase.boot(BasicDatabase.java:178)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1993)
> 	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:290)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1831)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.startProviderService(BaseMonitor.java:1697)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.findProviderAndStartService(BaseMonitor.java:1577)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.startPersistentService(BaseMonitor.java:990)
> 	at org.apache.derby.iapi.services.monitor.Monitor.startPersistentService(Monitor.java:541)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(EmbedConnection.java:1583)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java:213)
> 	at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(EmbedConnection30.java:72)
> 	at org.apache.derby.jdbc.Driver30.getNewEmbedConnection(Driver30.java:73)
> 	at org.apache.derby.jdbc.InternalDriver.connect(InternalDriver.java:199)
> 	at java.sql.DriverManager.getConnection(DriverManager.java:512)
> 	at java.sql.DriverManager.getConnection(DriverManager.java:140)
> 	at org.apache.derby.impl.tools.ij.ij.dynamicConnection(ij.java:873)
> 	at org.apache.derby.impl.tools.ij.ij.ConnectStatement(ij.java:723)
> 	at org.apache.derby.impl.tools.ij.ij.ijStatement(ij.java:553)
> 	at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:289)
> 	at org.apache.derby.impl.tools.ij.Main.go(Main.java:203)
> 	at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:169)
> 	at org.apache.derby.impl.tools.ij.Main14.main(Main14.java:55)
> 	at org.apache.derby.tools.ij.main(ij.java:60)
> ============= end nested exception, level (1) ===========
> ------------  END SHUTDOWN ERROR STACK -------------
> 2006-03-14 19:45:40.823 GMT:
> Shutting down instance c013800d-0109-fa4a-bf58-0000001078a0
> ----------------------------------------------------------------

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