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