[ 
https://issues.apache.org/jira/browse/DERBY-3205?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12556838#action_12556838
 ] 

Jørgen Løland commented on DERBY-3205:
--------------------------------------

I had a look at the stopSlave and failover v1 patch.  A few comments:

You cannot get a connection to a database in replication slave mode. This 
implies that:

1) (I have not tried it, but...) I think the new method 
EmbedConnection#handleStopReplicationSlave will not work because the call to 
getLanguageConnection() will throw an exception (cannot connect...). See 
DERBY-2872 discussion and funcspec for more details why authorization cannot be 
performed on a database in slave mode.

2) Since you cannot get a connection to the database, tr.getDatabase().<method> 
will not work. The stopSlave command must be handed to the slave database 
through connect, i.e. by setting a value in the Properties object and calling 
tr.getDatabase(). Instead of tr.getDatabase().stopReplicationSlave(), you need 
to do:

p.setProperty(SlaveFactory.REPLICATION_MODE, SlaveFactory.STOP);
tr.getDatabase();

And in SlaveDatabase.setupConnection, you will need:

String isStop = p.getProperty(SlaveFactory.REPLICATION_MODE);
if (isStop.equals(SlaveFactory.STOP)) {
  slaveFac.stopReplicationSlave();
}

> Replication: Add connection url command options for starting and stopping 
> slave
> -------------------------------------------------------------------------------
>
>                 Key: DERBY-3205
>                 URL: https://issues.apache.org/jira/browse/DERBY-3205
>             Project: Derby
>          Issue Type: Sub-task
>          Components: JDBC
>    Affects Versions: 10.4.0.0
>            Reporter: Jørgen Løland
>            Assignee: V.Narayanan
>         Attachments: derby-3205_startslave_dontcommit.diff, 
> derby-3205_startslave_dontcommit.stat, 
> failover_impl_3205_NotForCommit_v1.diff, 
> failover_impl_3205_NotForCommit_v1.stat, startSlave_1a.diff, 
> startSlave_1a.stat, StopSlave_impl_3205_NotForCommit_v1.diff, 
> StopSlave_impl_3205_NotForCommit_v1.stat
>
>
> Add commands to start and stop the replication slave using properties or 
> connection url. Example:
> 'jdbc:derby:<host><dbname>;startSlave=true';
> 'jdbc:derby:<host><dbname>;stopSlave=true';
> 'jdbc:derby:<host><dbname>;failover=true;
> Connection url options that must be recognized:
> startSlave=true
> stopSlave=true
> failover=true
> slaveHost=<host> (optional, defaults to localhost) (only for startSlave)
> slavePort=<port> (optional, defaults to 8001) (only for startSlave)
> See functional specification on Derby-2872 for further details.

-- 
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