[
https://issues.apache.org/jira/browse/DERBY-3896?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12698330#action_12698330
]
V.Narayanan commented on DERBY-3896:
------------------------------------
Knut said:
"I think the problem is that if you have uncommitted transactions when you
freeze the
database, the log file is not switched. so you continue for a while writing to
the old log
file on the master, but don't ship log to the slave until the log file is
actually switched.
so you miss the log between freeze and switch on the slave."
I will try to look at this bug when I find some time, I will not be working on
this issue
regularly hence am not assigning it to myself.
> Assert failure in LogicalUndoOperation.doMe() when starting slave with
> uncommitted transactions on the master
> -------------------------------------------------------------------------------------------------------------
>
> Key: DERBY-3896
> URL: https://issues.apache.org/jira/browse/DERBY-3896
> Project: Derby
> Issue Type: Bug
> Components: Replication
> Affects Versions: 10.4.1.3, 10.5.0.0
> Environment: Solaris Express Community Edition snv_99 X86
> Derby trunk, svn revision 701061, sane build
> java version "1.6.0_07"
> Java(TM) Platform, Standard Edition for Business (build 1.6.0_07-b06)
> Java HotSpot(TM) Server VM (build 10.0-b23, mixed mode)
> Reporter: Knut Anders Hatlen
>
> I created and froze the master database like this:
> /tmp/master % java -jar /code/derby/trunk1/jars/sane/derbyrun.jar ij
> ij version 10.5
> ij> connect 'jdbc:derby:db;create=true';
> ij> autocommit off;
> ij> create table t1(x int);
> 0 rows inserted/updated/deleted
> ij> insert into t1 values 1,2,3,4;
> 4 rows inserted/updated/deleted
> ij> connect 'jdbc:derby:db';
> ij(CONNECTION1)> call syscs_util.syscs_freeze_database();
> 0 rows inserted/updated/deleted
> ij(CONNECTION1)>
> Then in another terminal window I copied the database with "cp -rp" and
> booted the copy as a slave:
> /tmp/slave % java -jar /code/derby/trunk1/jars/sane/derbyrun.jar ij
> ij version 10.5
> ij> connect 'jdbc:derby:db;startSlave=true';
> org.apache.derby.shared.common.sanity.AssertFailure: ASSERT FAILED
> at
> org.apache.derby.shared.common.sanity.SanityManager.ASSERT(SanityManager.java:98)
> at
> org.apache.derby.impl.store.raw.data.LogicalUndoOperation.doMe(LogicalUndoOperation.java:174)
> at
> org.apache.derby.impl.store.raw.log.FileLogger.logAndUndo(FileLogger.java:533)
> at org.apache.derby.impl.store.raw.xact.Xact.logAndUndo(Xact.java:374)
> at
> org.apache.derby.impl.store.raw.log.FileLogger.undo(FileLogger.java:1015)
> at org.apache.derby.impl.store.raw.xact.Xact.abort(Xact.java:949)
> at
> org.apache.derby.impl.store.raw.xact.XactFactory.rollbackAllTransactions(XactFactory.java:529)
> at
> org.apache.derby.impl.store.raw.log.LogToFile.recover(LogToFile.java:1213)
> at org.apache.derby.impl.store.raw.RawStore.boot(RawStore.java:334)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:2019)
> at
> org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:291)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:573)
> at
> org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:427)
> at
> org.apache.derby.impl.store.access.RAMAccessManager.boot(RAMAccessManager.java:1019)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:2019)
> at
> org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:291)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:573)
> at
> org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:427)
> at
> org.apache.derby.impl.db.BasicDatabase.bootStore(BasicDatabase.java:780)
> at org.apache.derby.impl.db.BasicDatabase.boot(BasicDatabase.java:196)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:2019)
> at
> org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:291)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1856)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.startProviderService(BaseMonitor.java:1722)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.findProviderAndStartService(BaseMonitor.java:1602)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.startPersistentService(BaseMonitor.java:1021)
> at
> org.apache.derby.iapi.services.monitor.Monitor.startPersistentService(Monitor.java:550)
> at
> org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(EmbedConnection.java:2572)
> at
> org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java:365)
> at
> org.apache.derby.impl.jdbc.EmbedConnection30.<init>(EmbedConnection30.java:73)
> at
> org.apache.derby.impl.jdbc.EmbedConnection40.<init>(EmbedConnection40.java:54)
> at
> org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Driver40.java:68)
> at
> org.apache.derby.jdbc.InternalDriver.connect(InternalDriver.java:238)
> at
> org.apache.derby.jdbc.AutoloadedDriver.connect(AutoloadedDriver.java:119)
> at java.sql.DriverManager.getConnection(DriverManager.java:582)
> at java.sql.DriverManager.getConnection(DriverManager.java:154)
> at org.apache.derby.impl.tools.ij.ij.dynamicConnection(ij.java:1243)
> at org.apache.derby.impl.tools.ij.ij.ConnectStatement(ij.java:1093)
> at org.apache.derby.impl.tools.ij.ij.ijStatement(ij.java:921)
> at
> org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(utilMain.java:328)
> at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:248)
> at org.apache.derby.impl.tools.ij.Main.go(Main.java:215)
> at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:181)
> at org.apache.derby.impl.tools.ij.Main.main(Main.java:73)
> at org.apache.derby.tools.ij.main(ij.java:59)
> at org.apache.derby.iapi.tools.run.main(run.java:53)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.