db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jørgen Løland (JIRA) <j...@apache.org>
Subject [jira] Updated: (DERBY-3475) Replication: Slave reports ERROR XSLA7: Cannot redo operation null in the log.
Date Fri, 29 Feb 2008 12:40:51 GMT

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

Jørgen Løland updated DERBY-3475:
---------------------------------

    Attachment: derby-3475-1a.diff
                derby-3475-1a.stat

As expected, the problem was caused by the log.ctrl file pointing to the wrong place in the
log. Patch 1a ensures that the control file is not updated when the database is booted in
slave pre mode.

Without the patch, the error can be reproduced by using any master database where some old
log files have been deleted.

All tests passed. Request for review.

> Replication:  Slave reports ERROR XSLA7: Cannot redo operation null in the log.
> -------------------------------------------------------------------------------
>
>                 Key: DERBY-3475
>                 URL: https://issues.apache.org/jira/browse/DERBY-3475
>             Project: Derby
>          Issue Type: Bug
>          Components: Replication
>    Affects Versions: 10.4.0.0
>         Environment: Derby trunk revision 631534 + DERBY 3205 patch failover-slave-2a.
>            Reporter: Øystein Grøvlen
>            Assignee: Jørgen Løland
>         Attachments: derby-3475-1a.diff, derby-3475-1a.stat, slaveDB.zip
>
>
> Master:
> ij> connect 'jdbc:derby:masterDB;user=oystein;password=pass;startMaster=true;slaveHost=localhost';
> ij(CONNECTION1)> delete from t where i > 8192;
> 253952 rows inserted/updated/deleted
> ij(CONNECTION1)> connect 'jdbc:derby:masterDB;user=oystein;password=pass;failover=true';
> ERROR XJ001: Java exception: ': java.lang.NullPointerException'.
> Slave reports in the log:
> ------------  BEGIN SHUTDOWN ERROR STACK -------------
> ERROR XSLA7: Cannot redo operation null in the log.
> 	at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:296)
> 	at org.apache.derby.impl.store.raw.log.FileLogger.redo(FileLogger.java:1525)
> 	at org.apache.derby.impl.store.raw.log.LogToFile.recover(LogToFile.java:920)
> 	at org.apache.derby.impl.store.raw.RawStore.boot(RawStore.java:334)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1999)
> 	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:291)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:553)
> 	at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:419)
> 	at org.apache.derby.impl.store.access.RAMAccessManager.boot(RAMAccessManager.java:1019)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1999)
> 	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:291)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:553)
> 	at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:419)
> 	at org.apache.derby.impl.db.BasicDatabase.bootStore(BasicDatabase.java:793)
> 	at org.apache.derby.impl.db.BasicDatabase.boot(BasicDatabase.java:205)
> 	at org.apache.derby.impl.db.SlaveDatabase.bootBasicDatabase(SlaveDatabase.java:425)
> 	at org.apache.derby.impl.db.SlaveDatabase.access$000(SlaveDatabase.java:70)
> 	at org.apache.derby.impl.db.SlaveDatabase$SlaveDatabaseBootThread.run(SlaveDatabase.java:312)
> 	at java.lang.Thread.run(Thread.java:619)
> Caused by: ERROR XSLAO: Recovery failed unexpected problem log record is Not first but
transaction is not in transaction table : 58625.
> 	at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:286)
> 	at org.apache.derby.impl.store.raw.log.FileLogger.redo(FileLogger.java:1289)
> 	... 17 more
> ============= begin nested exception, level (1) ===========
> ERROR XSLAO: Recovery failed unexpected problem log record is Not first but transaction
is not in transaction table : 58625.
> 	at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:286)
> 	at org.apache.derby.impl.store.raw.log.FileLogger.redo(FileLogger.java:1289)
> 	at org.apache.derby.impl.store.raw.log.LogToFile.recover(LogToFile.java:920)
> 	at org.apache.derby.impl.store.raw.RawStore.boot(RawStore.java:334)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1999)
> 	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:291)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:553)
> 	at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:419)
> 	at org.apache.derby.impl.store.access.RAMAccessManager.boot(RAMAccessManager.java:1019)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1999)
> 	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:291)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:553)
> 	at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:419)
> 	at org.apache.derby.impl.db.BasicDatabase.bootStore(BasicDatabase.java:793)
> 	at org.apache.derby.impl.db.BasicDatabase.boot(BasicDatabase.java:205)
> 	at org.apache.derby.impl.db.SlaveDatabase.bootBasicDatabase(SlaveDatabase.java:425)
> 	at org.apache.derby.impl.db.SlaveDatabase.access$000(SlaveDatabase.java:70)
> 	at org.apache.derby.impl.db.SlaveDatabase$SlaveDatabaseBootThread.run(SlaveDatabase.java:312)
> 	at java.lang.Thread.run(Thread.java:619)
> ============= end nested exception, level (1) ===========
> ------------  END SHUTDOWN ERROR STACK -------------
> --------  BEGIN REPLICATION ERROR MESSAGE ---------
> Replication slave got a fatal error for database 'slaveDB'. Replication will be stopped.
> Replication slave role was stopped for database 'slaveDB'.
> 2008-02-27 12:03:00.830 GMT:
> Shutting down instance a816c00e-0118-5ac5-f06b-000003e6d478
> ----------------------------------------------------------------
> ERROR XSLAA: The store has been marked for shutdown by an earlier exception.
> 	at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:279)
> 	at org.apache.derby.impl.store.raw.log.LogToFile.appendLogRecord(LogToFile.java:3696)
> 	at org.apache.derby.impl.services.replication.slave.SlaveController$SlaveLogReceiverThread.handleLogChunk(SlaveController.java:540)
> 	at org.apache.derby.impl.services.replication.slave.SlaveController$SlaveLogReceiverThread.run(SlaveController.java:486)
> Caused by: ERROR XSLA7: Cannot redo operation null in the log.
> 	at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:296)
> 	at org.apache.derby.impl.store.raw.log.FileLogger.redo(FileLogger.java:1525)
> 	at org.apache.derby.impl.store.raw.log.LogToFile.recover(LogToFile.java:920)
> 	at org.apache.derby.impl.store.raw.RawStore.boot(RawStore.java:334)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1999)
> 	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:291)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:553)
> 	at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:419)
> 	at org.apache.derby.impl.store.access.RAMAccessManager.boot(RAMAccessManager.java:1019)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1999)
> 	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:291)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:553)
> 	at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:419)
> 	at org.apache.derby.impl.db.BasicDatabase.bootStore(BasicDatabase.java:793)
> 	at org.apache.derby.impl.db.BasicDatabase.boot(BasicDatabase.java:205)
> 	at org.apache.derby.impl.db.SlaveDatabase.bootBasicDatabase(SlaveDatabase.java:425)
> 	at org.apache.derby.impl.db.SlaveDatabase.access$000(SlaveDatabase.java:70)
> 	at org.apache.derby.impl.db.SlaveDatabase$SlaveDatabaseBootThread.run(SlaveDatabase.java:312)
> 	at java.lang.Thread.run(Thread.java:619)
> Caused by: ERROR XSLAO: Recovery failed unexpected problem log record is Not first but
transaction is not in transaction table : 58625.
> 	at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:286)
> 	at org.apache.derby.impl.store.raw.log.FileLogger.redo(FileLogger.java:1289)
> 	... 17 more
> ============= begin nested exception, level (1) ===========
> ERROR XSLA7: Cannot redo operation null in the log.
> 	at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:296)
> 	at org.apache.derby.impl.store.raw.log.FileLogger.redo(FileLogger.java:1525)
> 	at org.apache.derby.impl.store.raw.log.LogToFile.recover(LogToFile.java:920)
> 	at org.apache.derby.impl.store.raw.RawStore.boot(RawStore.java:334)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1999)
> 	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:291)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:553)
> 	at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:419)
> 	at org.apache.derby.impl.store.access.RAMAccessManager.boot(RAMAccessManager.java:1019)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1999)
> 	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:291)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:553)
> 	at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:419)
> 	at org.apache.derby.impl.db.BasicDatabase.bootStore(BasicDatabase.java:793)
> 	at org.apache.derby.impl.db.BasicDatabase.boot(BasicDatabase.java:205)
> 	at org.apache.derby.impl.db.SlaveDatabase.bootBasicDatabase(SlaveDatabase.java:425)
> 	at org.apache.derby.impl.db.SlaveDatabase.access$000(SlaveDatabase.java:70)
> 	at org.apache.derby.impl.db.SlaveDatabase$SlaveDatabaseBootThread.run(SlaveDatabase.java:312)
> 	at java.lang.Thread.run(Thread.java:619)
> Caused by: ERROR XSLAO: Recovery failed unexpected problem log record is Not first but
transaction is not in transaction table : 58625.
> 	at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:286)
> 	at org.apache.derby.impl.store.raw.log.FileLogger.redo(FileLogger.java:1289)
> 	... 17 more
> ============= end nested exception, level (1) ===========
> ============= begin nested exception, level (2) ===========
> ERROR XSLAO: Recovery failed unexpected problem log record is Not first but transaction
is not in transaction table : 58625.
> 	at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:286)
> 	at org.apache.derby.impl.store.raw.log.FileLogger.redo(FileLogger.java:1289)
> 	at org.apache.derby.impl.store.raw.log.LogToFile.recover(LogToFile.java:920)
> 	at org.apache.derby.impl.store.raw.RawStore.boot(RawStore.java:334)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1999)
> 	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:291)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:553)
> 	at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:419)
> 	at org.apache.derby.impl.store.access.RAMAccessManager.boot(RAMAccessManager.java:1019)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1999)
> 	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:291)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:553)
> 	at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:419)
> 	at org.apache.derby.impl.db.BasicDatabase.bootStore(BasicDatabase.java:793)
> 	at org.apache.derby.impl.db.BasicDatabase.boot(BasicDatabase.java:205)
> 	at org.apache.derby.impl.db.SlaveDatabase.bootBasicDatabase(SlaveDatabase.java:425)
> 	at org.apache.derby.impl.db.SlaveDatabase.access$000(SlaveDatabase.java:70)
> 	at org.apache.derby.impl.db.SlaveDatabase$SlaveDatabaseBootThread.run(SlaveDatabase.java:312)
> 	at java.lang.Thread.run(Thread.java:619)
> ============= end nested exception, level (2) ===========
> ---------  END REPLICATION ERROR MESSAGE ----------
> Replication slave role was stopped for database 'slaveDB'.

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


Mime
View raw message