-
Bug
-
Resolution: Done
-
Critical
-
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?
- causes
-
JBEAP-19001 [GSS](7.2.z) Messages are being added to topic even if there are no subscribers
- Closed
-
JBEAP-19004 [GSS]Messages are being added to topic even if there are no subscribers
- Closed
- clones
-
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)
- Closed
- incorporates
-
JBEAP-18317 [GSS](7.2.z) After messaging migration from EAP 6 to 7 it's impossible to remove sf.* queues
- Closed
- is cloned by
-
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