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

Knut Anders Hatlen updated DERBY-4299:
--------------------------------------

    Attachment: assert.sh

I haven't been able to reproduce the database already booted error with insane 
jars, but the attached script (assert.sh) does reproduce an assert error while 
processing the undo log during SLAVE_PRE_MODE. It's not the same assert that 
Dag reported, but it's similar enough that I post it here.

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:1225)
        at org.apache.derby.impl.store.raw.RawStore.boot(RawStore.java:339)

When the slave is booted with this script, there's an uncommitted transaction 
with two inserts and one in-place compress table in the log.

> Slave start fails with message that the database is already booted, even when 
> it is not.
> ----------------------------------------------------------------------------------------
>
>                 Key: DERBY-4299
>                 URL: https://issues.apache.org/jira/browse/DERBY-4299
>             Project: Derby
>          Issue Type: Bug
>          Components: Replication
>    Affects Versions: 10.5.1.1, 10.6.0.0
>         Environment: java version "1.6.0_13"
> Java(TM) SE Runtime Environment (build 1.6.0_13-b03)
> Java HotSpot(TM) Client VM (build 11.3-b02, mixed mode)
> SunOS opensolaris 5.11 snv_117 i86pc i386 i86pc Solaris
>            Reporter: Dag H. Wanvik
>         Attachments: assert.sh, reproscript, workingscript
>
>
> Seen by Alan Burlison, cf. 
> http://mail-archives.apache.org/mod_mbox/db-derby-user/200907.mbox/ajax/%[email protected]%3e
> ij> connect 
> 'jdbc:derby://bleaklow/opensolaris;user=auth;password=CHANGEME;securityMechanism=8;startSlave=true';
> ERROR XRE09: DERBY SQL error: SQLCODE: -1, SQLSTATE: XRE09, SQLERRMC: 
> Cannot start replication slave mode for database 'opensolaris'. The 
> database has already been booted.
> I can reproduce it using Alan's database (thanks, Alan!). When running a 
> debug build of Derby, however, I hit an ASSERT:
> ASSERT FAILED Wrong LogInstant on log record (0,0) version real position 
> (4,3304)
>       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:2030)
>       at 
> org.apache.derby.impl.sql.catalog.DataDictionaryImpl.boot(DataDictionaryImpl.java:802)
>       at 
> org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:2021)
>       at 
> org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:333)
>       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:2021)
>       at 
> org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:333)
>       at 
> org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1858)
>       at 
> org.apache.derby.impl.services.monitor.BaseMonitor.startProviderService(BaseMonitor.java:1724)
>       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:2580)
> so there seems to be an issue with the log. It could be related to 
> DERBY-3896. In Alan's original repre he used client/Server mode, but I can 
> reproduce the error with embedded more, cf. the attached script.

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

Reply via email to