ActiveMQ
  1. ActiveMQ
  2. AMQ-1548

Mutlicast discovery with persistent topics leads to errors

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Incomplete
    • Affects Version/s: 5.0.0
    • Fix Version/s: NEEDS_REVIEW
    • Component/s: Broker, Connector
    • Labels:
      None
    • Environment:

      2 Ubuntu machines running virualized named activemq1 and activemq2 set up for multicast discovery. Broker names are set to be the same as the host name

      Description

      After bringing the brokers up and down a few times, I'll get the following errors:

      INFO DemandForwardingBridge - Network connection between vm://activemq2#0 and tcp://activemq1/192.168.2.129:61616(activemq1) has been established.
      ERROR Service - Async error occurred: javax.jms.JMSException: Durable consumer is in use for client: NC_activemq1_inboundactivemq2 and subscriptionName: activemq2_fof
      javax.jms.JMSException: Durable consumer is in use for client: NC_activemq1_inboundactivemq2 and subscriptionName: activemq2_fof
      at org.apache.activemq.broker.region.TopicRegion.addConsumer(TopicRegion.java:75)
      at org.apache.activemq.broker.region.RegionBroker.addConsumer(RegionBroker.java:338)
      at org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:85)
      at org.apache.activemq.advisory.AdvisoryBroker.addConsumer(AdvisoryBroker.java:80)
      at org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:85)
      at org.apache.activemq.broker.MutableBrokerFilter.addConsumer(MutableBrokerFilter.java:95)
      at org.apache.activemq.broker.TransportConnection.processAddConsumer(TransportConnection.java:525)
      at org.apache.activemq.command.ConsumerInfo.visit(ConsumerInfo.java:334)
      at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:281)
      at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:178)
      at org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:100)
      at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:67)
      at org.apache.activemq.transport.vm.VMTransport.iterate(VMTransport.java:202)
      at org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:98)
      at org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:36)
      INFO DemandForwardingBridge - Network connection between vm://activemq2#0 and tcp://activemq1/192.168.2.129:61616 shutdown due to a local error: javax.jms.JMSException: Durable consumer is in use for client: NC_activemq1_inboundactivemq2 and subscriptionName: activemq2_fof
      INFO TransportConnector - Connector vm://activemq2 Stopped
      INFO DemandForwardingBridge - activemq2 bridge to activemq1 stopped

      My two servers are activemq1 and activemq2. The queue is specified in the activemq.xml using:
      <destinations>
      <topic physicalName="fof" />
      </destinations>

      Through debugging, I tracked this down to a race condition between the listening port (61616) and the created port (incremental) creating the connection. In the one case, it creates a durable topic, in the other it doesn't (I can't remember which is which). Regardless, when the connection fails (or is shutdown) the durable topic isn't stopped, and thus the reconnection fails.

      1. activemq-broker.xml
        6 kB
        Lekan Omotayo
      2. activemq-broker2.xml
        6 kB
        Lekan Omotayo
      3. jms configuration.txt
        4 kB
        Lekan Omotayo
      4. log.txt
        4 kB
        Lekan Omotayo

        Activity

          People

          • Assignee:
            Unassigned
            Reporter:
            Jeff Ward
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development