Slave starts connectors before master fails
-------------------------------------------
Key: AMQ-1511
URL: https://issues.apache.org/activemq/browse/AMQ-1511
Project: ActiveMQ
Issue Type: Bug
Components: Broker
Affects Versions: 4.1.1
Reporter: Howard Orner
A broker configured as a slave starts its connectors before the the master
fails. This is bad because a) The documentation states that this is not the
case. b) it shouldn't be the case because you don't want clients to be able to
connect to the slave until it takes over as master.
In looking at source, it would appear that the MasterConnector of BrokerService
is not started until after all the connections are started in
startAllConnection(). Unfortunately, to determine if connections should be
started, isSlave() is called which relies on the MasterConnector.start() method
being called.
The MasterConnector service start() method needs to be called first before
isSlave will work.
See broken code snippet from BrokerService below:
protected void startAllConnectors() throws Exception{
if (!isSlave()){ // OOPS!!! isSlave asks the MasterConnector if the master
is active, but can't until its started
...
if (services != null) {
for (int i = 0; i < services.length; i++) {
Service service = services[i]; //OOPS, MasterConnector is
in this list and the surrounding if relies on it to be started
configureService(service);
service.start(); //OOPS!!!! this should have been
called for isSlave() to return the right answer.
}
}
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.