-
Bug
-
Resolution: Done
-
Critical
-
None
-
None
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?
- clones
-
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)
- Closed
- is caused by
-
JBEAP-18315 [GSS](7.3.z) Upgrade Artemis from 2.9.0.redhat-00005 to 2.9.0.redhat-00010
- Closed
- is cloned by
-
JBEAP-18230 [GSS](7.2.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)
- Closed