Network of pure master/slave synchronization issue
--------------------------------------------------
Key: AMQ-1841
URL: https://issues.apache.org/activemq/browse/AMQ-1841
Project: ActiveMQ
Issue Type: Bug
Components: Broker
Affects Versions: 5.1.0
Environment: Solaris 9 jdk 1.5
Reporter: ying
Priority: Blocker
The topology is as follows:
Master A
Master B
Slave A
Slave B
configure the client(multiple threads of consumers and producers) to use
failover (failover://(tcp://masterA, tcp://masterB)) so slaves are only used to
replicate data.
Issues:
Start masterA, slaveA, masterB, slaveB then start the client, slaveB will get
IllegalStateException:
ERROR Service - Async error occurred:
java.lang.IllegalStateException: brokerSlave2
Cannot add a consumer to a session that had not been registered:
ID:usaapd1-32873-1215441964305-2:1:1
java.lang.IllegalStateException: brokerSlave2 Cannot add a consumer to a
session that had not been register
ed: ID:usaapd1-32873-1215441964305-2:1:1
at
org.apache.activemq.broker.TransportConnection.processAddConsumer(TransportConnection.java:541)
at org.apache.activemq.command.ConsumerInfo.visit(ConsumerInfo.java:345)
at
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:310)
at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:180)
at
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:104)
at
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)
at
org.apache.activemq.transport.vm.VMTransport.iterate(VMTransport.java:205)
at
org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:98)
at
org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:36)
Comments:
The issue seems that broker masterA and masterB's DemandForwardingBridge
started before slaveB is attached so the commands to adding connections and
sessions are not replicated on slaveB so the exception happens. For a network
of pure master/slave, we kinda want the following to happen in order:
1. master to wait for slave to be attached
2. master to accept demandforwardbridge from other masterī
3. start master transport to serve connections
Is there anyway to enforce the above order?
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.