Infinite loop from broker's network connector when using multiple durable
subscribers (topics) with msg selector.
-----------------------------------------------------------------------------------------------------------------
Key: AMQ-1102
URL: https://issues.apache.org/activemq/browse/AMQ-1102
Project: ActiveMQ
Issue Type: Bug
Components: Broker
Affects Versions: 4.1.0
Environment: Linux
Reporter: Samson
The following is the series of messages resulting from the broker (infinite
loop):
INFO DemandForwardingBridge - Network connection between
vm://localhost#0 and tcp://localhost/127.0.0.1:61601 shutdown due to a local
error: javax.jms.JMSException: Durable consumer is in use for client:
NC_SWITCH1BROKER_inboundlocalhost and subscriptionName: localhost_TEST.FOO
INFO TransportConnector - Connector vm://localhost Stopped
INFO NetworkConnector - Establishing network connection between
from vm://localhost?network=true to tcp://switch:61601
INFO TransportConnector - Connector vm://localhost Started
INFO DemandForwardingBridge - Network connection between
vm://localhost#2 and tcp://localhost/127.0.0.1:61601(SWITCH1BROKER) has been
established.
INFO DemandForwardingBridge - Network connection between
vm://localhost#2 and tcp://localhost/127.0.0.1:61601 shutdown due to a local
error: javax.jms.JMSException: Durable consumer is in use for client:
NC_SWITCH1BROKER_inboundlocalhost and subscriptionName: localhost_TEST.FOO
INFO TransportConnector - Connector vm://localhost Stopped
...
EXACT STEPS TO REPRODUCE:
1 -Start standalone broker
-using default conf/activemq.xml file
2 -Start EmbeddedBroker (with network connector specified):
BrokerService broker = new BrokerService();
broker.setUseJmx(true);
broker.setBrokerName("SWITCH1BROKER");
TransportConnector connector =
broker.addConnector(new URI("tcp://localhost:"+61601));
connector.setDiscoveryUri(new URI("multicast://default"));
broker.addNetworkConnector(new URI("multicast://default"));
broker.start();
At this point, I'll get the following output (which looks normal):
INFO NetworkConnector - Establishing network connection between
from vm://localhost?network=true to tcp://switch:61601
INFO TransportConnector - Connector vm://localhost Started
INFO DemandForwardingBridge - Network connection between
vm://localhost#0 and tcp://localhost/127.0.0.1:61601(SWITCH1BROKER) has been
established.
3. -Edit line 105 of ConsumerTool to specify any message selector
consumer = session.createDurableSubscriber((Topic) destination,
consumerName, "BLAH = '1'", false);
4. -Start ConsumerTool with clientID consumer1
-connect to tcp://localhost:61601
-using topics, durable subscription, w/ message selector
5. -Start ConsumerTool with clientID consumer2
-connect to tcp://localhost:61601
-using topics, durable subscription, w/ message selector
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://issues.apache.org/activemq/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira