]
Emmanuel Hugonnet moved JBEAP-18238 to WFLY-12859:
--------------------------------------------------
Project: WildFly (was: JBoss Enterprise Application Platform)
Key: WFLY-12859 (was: JBEAP-18238)
Workflow: GIT Pull Request workflow (was: CDW with loose statuses v1)
Component/s: JMS
(was: ActiveMQ)
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)
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Key: WFLY-12859
URL:
https://issues.redhat.com/browse/WFLY-12859
Project: WildFly
Issue Type: Bug
Components: JMS
Environment: EAP 7 with EAP 6 clients
Reporter: Emmanuel Hugonnet
Assignee: Emmanuel Hugonnet
Priority: Critical
The Customer reports that they intermittently see error in server log file.
{noformat}
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)
{noformat}
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:
{noformat}
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
{noformat}
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?