Uploaded image for project: 'JBoss Enterprise Application Platform'
  1. JBoss Enterprise Application Platform
  2. JBEAP-18342

[GSS](7.3.z) WFLY-12859 - Acceptor is open after broker starts but before queues are created resulting in QUEUE_DOES_NOT_EXIST message=AMQ229017 (the queue is in the standalone.xml file)

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Critical Critical
    • 7.3.1.CR1, 7.3.1.GA
    • None
    • ActiveMQ
    • None
    • Hide

      There is none from an EAP perspective.

      Show
      There is none from an EAP perspective.
    • Hide

      observe log output with TRACE on:

      2019-12-05 16:11:12,090 INFO [org.apache.activemq.artemis.core.server] (ServerService Thread Pool – 78) AMQ221020: Started EPOLL Acceptor at 127.0.0.1:5445 for protocols [CORE,HORNETQ]
      2019-12-05 16:11:12,390 TRACE [org.apache.activemq.artemis.core.server.management.impl.ManagementServiceImpl] (ServerService Thread Pool – 85) Sending Notification = Notification[uid=null, type=QUEUE_CREATED, properties=TypedProperties[message=jms.queue.sourceQueue]], notificationEnabled=true messagingServerControl=org.apache.activemq.artemis.core.management.impl.ActiveMQServerControlImpl@ef980c3
      
      Show
      observe log output with TRACE on: 2019-12-05 16:11:12,090 INFO [org.apache.activemq.artemis.core.server] (ServerService Thread Pool – 78) AMQ221020: Started EPOLL Acceptor at 127.0.0.1:5445 for protocols [CORE,HORNETQ] 2019-12-05 16:11:12,390 TRACE [org.apache.activemq.artemis.core.server.management.impl.ManagementServiceImpl] (ServerService Thread Pool – 85) Sending Notification = Notification[uid=null, type=QUEUE_CREATED, properties=TypedProperties[message=jms.queue.sourceQueue]], notificationEnabled=true messagingServerControl=org.apache.activemq.artemis.core.management.impl.ActiveMQServerControlImpl@ef980c3

      The Customer reports that they intermittently see error in server log file.

      2019-12-03T01:07:38.551+00:00@ieatrcxb4642-1@JMS@ERROR [org.apache.activemq.artemis.core.server] (Thread-23 (ActiveMQ-server-org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl$6@2b450b36)) AMQ224016: Caught exception: ActiveMQNonExistentQueueException[errorType=QUEUE_DOES_NOT_EXIST message=AMQ229017: Queue jms.queue.NetlogRequestQueue does not exist]
          at org.apache.activemq.artemis.core.server.impl.ServerSessionImpl.createConsumer(ServerSessionImpl.java:504)
          at org.apache.activemq.artemis.core.protocol.core.ServerSessionPacketHandler.slowPacketHandler(ServerSessionPacketHandler.java:321)
          at org.apache.activemq.artemis.core.protocol.core.ServerSessionPacketHandler.onMessagePacket(ServerSessionPacketHandler.java:285)
          at org.apache.activemq.artemis.utils.actors.Actor.doTask(Actor.java:33)
          at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:66)
          at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
          at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
          at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:66)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_221]
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_221]
          at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
      

      The use case is as follow:

      EAP 6 clients are running continuously and try to reconnect in case connection is lost. Normally the client does JNDI look for a destination (legacy) and the creates consumer/producer. The destination is cached.

      The EAP 7 instance is start with clean data directory. The queue is defined in EAP config xml file. Once EAP instance is running and accepting connection from clients the client reconnects and tries to create consumer/producer with cached destination. At that point they see the above error in the server log.

      They use legacy port 5445 to connect their client from EAP 6 to EAP 7. When I enabled TRACE logging I can see that the 5445 acceptor gets started before my destinations gets created for example:

      2019-12-05 16:11:12,090 INFO [org.apache.activemq.artemis.core.server] (ServerService Thread Pool – 78) AMQ221020: Started EPOLL Acceptor at 127.0.0.1:5445 for protocols [CORE,HORNETQ]
      2019-12-05 16:11:12,390 TRACE [org.apache.activemq.artemis.core.server.management.impl.ManagementServiceImpl] (ServerService Thread Pool – 85) Sending Notification = Notification[uid=null, type=QUEUE_CREATED, properties=TypedProperties[message=jms.queue.sourceQueue]], notificationEnabled=true messagingServerControl=org.apache.activemq.artemis.core.management.impl.ActiveMQServerControlImpl@ef980c3
      

      So there is a chance that a client can get connected in that 300 millisecond window and could end up with the above exception.

      Is there a way of reverting the order i.e. the queues get created before acceptor is enabled?

              ehugonne1@redhat.com Emmanuel Hugonnet
              rhn-support-ivassile Ilia Vassilev
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated:
                Resolved: