Uploaded image for project: 'WildFly'
  1. WildFly
  2. 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)

    Details

    • Type: Bug
    • Status: Resolved (View Workflow)
    • Priority: Critical
    • Resolution: Done
    • Affects Version/s: None
    • Fix Version/s: 19.0.0.Beta1
    • Component/s: JMS
    • Labels:
      None
    • Steps to Reproduce:
      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
    • Workaround Description:
      Hide

      There is none from an EAP perspective.

      Show
      There is none from an EAP perspective.

      Description

      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?

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  ehugonnet Emmanuel Hugonnet
                  Reporter:
                  ehugonnet Emmanuel Hugonnet
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  2 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: