Hi again,
I've come across another issue trying to debug my earlier issue with
replication. This is with derby 10.4.1.3 & 10.4.2.0, running under java 1.6 on
solaris x86.
I've got database replication working (with a non-encrypted database),
where everything appears to be fine. The master & slave both start ok, and the
actual replication appears to be working fine, so if I perform work on the
master then fail-over, the secondary has all the changes.
However, I've now tried using the derby debug libs (10.4.1.3 and 10.4.2.0),
and when doing this, I'm experiencing the following assertion from the derby
sanity manager:
Caused by: org.apache.derby.shared.common.sanity.AssertFailure: ASSERT FAILED
Wrong LogInstant on log record (0,0) version real position (3215,92720)
at
org.apache.derby.shared.common.sanity.SanityManager.THROWASSERT(SanityManager.java:162)
at
org.apache.derby.shared.common.sanity.SanityManager.THROWASSERT(SanityManager.java:147)
at
org.apache.derby.impl.store.raw.log.Scan.getNextRecordBackward(Scan.java:403)
at org.apache.derby.impl.store.raw.log.Scan.getNextRecord(Scan.java:204)
at
org.apache.derby.impl.store.raw.log.FileLogger.undo(FileLogger.java:939)
at org.apache.derby.impl.store.raw.xact.Xact.abort(Xact.java:949)
at org.apache.derby.impl.store.raw.xact.Xact.destroy(Xact.java:1105)
at
org.apache.derby.impl.store.access.RAMTransaction.destroy(RAMTransaction.java:2033)
at
org.apache.derby.impl.sql.catalog.DataDictionaryImpl.boot(DataDictionaryImpl.java:790)
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.boot(BasicDatabase.java:214)
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:2416)
... 12 more
Now, as far as I'm aware, I'm performing all the steps required of starting
replication:
1) I boot the master database. the slave db should not be started at this
stage.
2) I freeze the database with SYSCS_UTIL.SYSCS_FREEZE_DATABASE()
3) I zip up the database directory, and transfer it to the slave
4) unzip the database on the slave
5) I boot the slave database with
startSlave=true;slaveHost=192.168.0.211;slavePort=6959
6) I restart the master database with
startMaster=true;slaveHost=192.168.0.211;slavePort=6959
This works fine with the production libs, but gets the above error on the slave
(during step 5) when using the debug libs.
So, my question is - am I doing something wrong? Or is this assertion not
really valid when using replication? Any advice?
many thanks in advance,
Andrew Lawrenson