Uploaded image for project: 'ActiveMQ Classic'
  1. ActiveMQ Classic
  2. AMQ-221

Missing queue messages

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Blocker
    • Resolution: Fixed
    • 3.0
    • 3.0
    • Transport
    • None
    • w2k java 1.4.2_05

    Description

      In the method NetworkChannel.removeConsumerInfo(ConsumerInfo info) the following test must evaluate TRUE for in ordre for a NetworkMessageBridge to be stopped.

      if (currefcnt <= 0 && !bridge.isDurableTopic() &&
      (bridge.getDestination().isTopic() || bridge.getDestination().isTemporary()))

      I do not think this test is correct. If a consumer creates a subscription on a queue, an then disconnects, the above expression evaluates false and the NetworkMessageBridge is left open. I put out a log statement showing the values tested for the closure of a queue subscriber:

      RefCnt=0 isDurableTopic=false isTopic=false isTemp=false

      I do not understand the last condition of the above test. Why only stop the bridge if the destation is a Topic or Temporary Queue? Why would it not be appropriate to stop the bridge a non-temporary queue when the subscriber is gone. It seems contrary to the documentation that indicates messages are only transfered between brokers when a subcriber is attached. I think this is the reason that it appears that messages go missing. The messages are not missing, they just end up on a broker that has not subscriber to receive them. If you start up the subcriber process again, the missing messages reapear.

      Attachments

        Activity

          People

            jstrachan James Strachan
            dennis@bevocal.com Dennis Cook
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: