Uploaded image for project: 'JBoss A-MQ'
  1. JBoss A-MQ
  2. ENTMQ-779

ActiveMQConnection.isDeleted() also needs to check against broker

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • None
    • JBoss A-MQ 6.1
    • jms-client
    • None

      If a producer tries to send a msg to a temp destination, it internally calls ActiveMQConnection.isDeleted() to check if the temp destination still exists or not. This method only checks if the temp destination is known locally.

      ActiveMQConnection.java
      public boolean isDeleted(ActiveMQDestination dest) {
              // If we are not watching the advisories.. then
              // we will assume that the temp destination does exist.
              if (advisoryConsumer == null) {
                  return false;
              }
              return !activeTempDestinations.contains(dest);
          }
      

      Now if this connection just got created and if there are many temp destinations, the broker may not have pushed advisories about all temp destinations to this connection when isDeleted() is called.
      As a result this check refuses to send the message to the temp destination although it exists on the broker.

            dejanbosanac Dejan Bosanac
            rhn-support-tmielke Torsten Mielke
            Votes:
            1 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: