hi Dag,

Thanks for reply.

Currently what I do is the following, in nested try / catch blocks:

I try to execute stopMaster=true which will either work, or will give me an SQL 
Exception:
Error Code: '0', SQL State Code: 'XRE07' and Exception: 'java.sql.SQLException: 
Could not perform operation because the database is not in replication master 
mode.'

I then try to execute stopSlave=true which will either work, or will give me an 
SQL Exception:
Error Code: '0', SQL State Code: 'XRE40' and Exception: 'java.sql.SQLException: 
Could not perform operation because the database is not in replication slave 
mode.'

or

Error Code: '40000', SQL State Code: 'XRE41' and Exception: 
'java.sql.SQLException: Replication operation 'failover' or 'stopSlave' refused 
on the slave database because the connection with the master is working. Issue 
the 'failover' or 'stopMaster' operation on the master database instead.'


I then try to execute remote call stopMaster=true which will either work, or 
will give me an SQL Exception:
Error Code: '0', SQL State Code: 'XRE07' and Exception: 'java.sql.SQLException: 
Could not perform operation because the database is not in replication master 
mode.'

or

Error Code: '40000', SQL State Code: '08001' and Exception: 
'java.sql.SQLNonTransientConnectionException: java.net.ConnectException : Error 
connecting to server romelab.it.ibm.com on port 1527 with message Connection 
refused.'

I also execute remote call stopSlave=true, which probably will never get 
executed anyway.

So this approach seems to work reliably.


Regards,
Oskar



________________________________
 From: Dag Wanvik <[email protected]>
To: [email protected] 
Sent: Tuesday, February 26, 2013 10:37 PM
Subject: Re: Finding a role of Derby pair in Replication (Master or Slave)
 

The replication feature in Derby is pretty much bare bones still. I don't 
believe there is an easy API to enquire about the
state as you request. I think you should be able to detect if the
    slave has failed over, by seeing you can now connect to it (when it
    is still a slave it isn't fully booted an normal connection attempt
    will fail).

As for an active Derby db instance being master, I think you can
    inspect the log file to detect that state. Trying a startMaster
    would fail if it is already a master, but that could have side
    effects you don't want of course.

Hope this helps,
Dag



On 27.02.2013 00:44, Oskar Zinger wrote:

Is there a way to find out if a replicating pair of Derby is either master or 
slave? Or if the derby pair is participating in replication (mode)?
>
>
>It would be nice to have a way to find out a role and if its in replicating 
>mode.
>
>
>This would be useful and easy way to determine which stopMaster=true or 
>stopSlave=true attribute to use.
>
>
>
>Thanks,
>Oskar
>

Reply via email to