Slave db is still in replication slave mode after failover if there was
replication load before failover.
---------------------------------------------------------------------------------------------------------
Key: DERBY-3463
URL: https://issues.apache.org/jira/browse/DERBY-3463
Project: Derby
Issue Type: Bug
Components: Replication
Environment: Trunk, svn r630806
Reporter: Ole Solberg
Fix For: 10.4.0.0
Slave db is still in replication slave mode after failover if there was
replication load before failover.
I.e. connect to slave after failover is refused. Case A) below.
(Connect to master after failover is OK.)
If however there is no replication load on master db before failover connection
to slave succeeds,
but connection to master fails(hang).
Trunk svn r630806
A) Replication load.
-------------------
Master and slave servers started.
Master: create master db.
Master: freeze db
Copy master db to slave.
Master: unfreeze db.
Slave:
jdbc:derby://localhost:4527//home/os136789/Replication/testing/db_slave/wombat;startSlave=true;slaveHost=localhost;slavePort=6666
Master:
jdbc:derby://localhost:1527//home/os136789/Replication/testing/db_master/wombat;startMaster=true;slaveHost=localhost;slavePort=6666
Slave:
SQLException: -1 XRE08 DERBY SQL error: SQLCODE: -1, SQLSTATE: XRE08, SQLERRMC:
Replication slave mode started successfully for database
'/home/os136789/Replication/testing/db_slave/wombat'. Connection refused
because the database is in replication slave mode.
Running tests against master.
Master:
jdbc:derby://localhost:1527//home/os136789/Replication/testing/db_master/wombat;failover=true
SQLException: -1 XRE20 DERBY SQL error: SQLCODE: -1, SQLSTATE: XRE20, SQLERRMC:
Failover performed successfully for database
'/home/os136789/Replication/testing/db_master/wombat', the database has been
shutdown.
Slave:
/usr/local/java/jdk1.6/jre/lib/../bin/java
-Dij.driver=org.apache.derby.jdbc.ClientDriver
-Dij.connection.slave=jdbc:derby://localhost:4527//home/os136789/Replication/testing/db_slave/wombat
-classpath
/home/os136789/Apache/myDerbySandbox/trunk/jars/insane/derbyclient.jar:/home/os136789/Apache/myDerbySandbox/trunk/jars/insane/derbytools.jar
org.apache.derby.tools.ij
/home/os136789/Replication/testing/verify_ReplicationTestRun.sql
ERROR 08004: DERBY SQL error: SQLCODE: -1, SQLSTATE: 08004, SQLERRMC:
Connection refused to database
'/home/os136789/Replication/testing/db_slave/wombat' because it is in
replication slave mode.
Master:
/usr/local/java/jdk1.6/jre/lib/../bin/java
-Dij.driver=org.apache.derby.jdbc.ClientDriver
-Dij.connection.master=jdbc:derby://localhost:1527//home/os136789/Replication/testing/db_master/wombat
-classpath
/home/os136789/Apache/myDerbySandbox/trunk/jars/insane/derbyclient.jar:/home/os136789/Apache/myDerbySandbox/trunk/jars/insane/derbytools.jar
org.apache.derby.tools.ij
/home/os136789/Replication/testing/verify_ReplicationTestRun.sql
(Connection OK)
Test run logfile.out plus derby.log from master and slave:
Attachement: replicationLoad.tar
>From slave derby.log:
ERROR XSLA7: Cannot redo operation null in the log.
at
org.apache.derby.iapi.error.StandardException.newException(StandardException.java:300)
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 XSDFI: Error encountered while trying to write data to disk
during database recovery. Check that the database disk is not full. If it is
then delete unnecessary files, and retry connecting to the database. It is
also possible that the file system is read only, or the disk has failed, or
some other problem with the media. System encountered error while processing
page Page(2,Container(0, 336)).
B) No replication load.
-------------------
Master and slave servers started.
Master: create master db.
Master: freeze db
Copy master db to slave.
Master: unfreeze db.
Slave:
jdbc:derby://localhost:4527//home/os136789/Replication/testing/db_slave/wombat;startSlave=true;slaveHost=localhost;slavePort=6666
Master:
jdbc:derby://localhost:1527//home/os136789/Replication/testing/db_master/wombat;startMaster=true;slaveHost=localhost;slavePort=6666
Slave:
SQLException: -1 XRE08 DERBY SQL error: SQLCODE: -1, SQLSTATE: XRE08, SQLERRMC:
Replication slave mode started successfully for database
'/home/os136789/Replication/testing/db_slave/wombat'. Connection refused
because the database is in replication slave mode.
NOT Running tests against master.
Master:
jdbc:derby://localhost:1527//home/os136789/Replication/testing/db_master/wombat;failover=true
failOver_direct Got SQLException: -1 XRE20 DERBY SQL error: SQLCODE: -1,
SQLSTATE: XRE20, SQLERRMC: Failover performed successfully for database
'/home/os136789/Replication/testing/db_master/wombat', the database has been
shutdown.
Slave:
/usr/local/java/jdk1.6/jre/lib/../bin/java
-Dij.driver=org.apache.derby.jdbc.ClientDriver
-Dij.connection.slave=jdbc:derby://localhost:4527//home/os136789/Replication/testing/db_slave/wombat
-classpath
/home/os136789/Apache/myDerbySandbox/trunk/jars/insane/derbyclient.jar:/home/os136789/Apache/myDerbySandbox/trunk/jars/insane/derbytools.jar
org.apache.derby.tools.ij
/home/os136789/Replication/testing/verify_ReplicationTestRun.sql
(Connection OK)
Master:
/usr/local/java/jdk1.6/jre/lib/../bin/java
-Dij.driver=org.apache.derby.jdbc.ClientDriver
-Dij.connection.master=jdbc:derby://localhost:1527//home/os136789/Replication/testing/db_master/wombat
-classpath
/home/os136789/Apache/myDerbySandbox/trunk/jars/insane/derbyclient.jar:/home/os136789/Apache/myDerbySandbox/trunk/jars/insane/derbytools.jar
org.apache.derby.tools.ij
/home/os136789/Replication/testing/verify_ReplicationTestRun.sql
Failure: Hangs! (On 'show schemas;')
Test run logfile.out plus derby.log from master and slave:
Attachement: NOreplicationLoad.tar
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.