[
https://issues.apache.org/jira/browse/ARTEMIS-2206?focusedWorklogId=186426&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-186426
]
ASF GitHub Bot logged work on ARTEMIS-2206:
-------------------------------------------
Author: ASF GitHub Bot
Created on: 17/Jan/19 17:01
Start Date: 17/Jan/19 17:01
Worklog Time Spent: 10m
Work Description: onlyMIT commented on issue #2466: ARTEMIS-2206 The MQTT
consumer reconnection caused the queue to not be cle…
URL: https://github.com/apache/activemq-artemis/pull/2466#issuecomment-453845902
@jbertram I have a question to consult you and hope you can answer it.
1. Why is there MULTICAST and ANYCAST routing types for Artemis
subscriptions to MQTT.I think there should be only MULTICAST routing type in
the MQTT protocol.
Perhaps the purpose of this design is to enable Artemis' MQTT implementation
to support both publish/subscribe and shared consumption functions.But it
doesn't seem to support that.
Two consumers using the same clientId, defining the same topic on separate
nodes, produce ANYCAST addresses(as
`org.apache.activemq.artemis.tests.integration.mqtt.imported.MqttClusterRemoteSubscribeTest`).However,
two consumers using the same clientId subscribe to the same address in the
same node, and the latter consumer connection will cause the former consumer
connection to be forcibly closed, and no ANYCAST address will be generated.
Even these are not problems. But this will export when using different
keys(use addressName as key or use "clientId+'.'+addressName" as key) to store
the binding, we can't make sure that all calls to the `locateQueue(SimpleString
queueName)` method take this into account(as in `addSubscription` method,only
use "clientId+'.'+addressName" as key to call `locateQueue(SimpleString
queueName)` .I think most people are not aware of this detail when calling the
locateQueue(SimpleString queueName) method or even if it is easy to be ignored,
it is very unsafe.
I hope you can help me identify the problem so that I can determine how to
solve it.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
Issue Time Tracking
-------------------
Worklog Id: (was: 186426)
Time Spent: 1h 50m (was: 1h 40m)
> The MQTT consumer reconnection caused the queue to not be cleared and throw a
> NullPointerException exception
> ------------------------------------------------------------------------------------------------------------
>
> Key: ARTEMIS-2206
> URL: https://issues.apache.org/jira/browse/ARTEMIS-2206
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Components: MQTT
> Affects Versions: 2.6.3
> Environment: # Use 10,000 (9 thousand senders, 1 thousand consumers)
> MQTT connection on one server to test Artemis, set the 'cleanSession'
> property to true;
> # MQTT client: paho 1.2.0;
> # Server: CPU Cores:32, Mem:64G, SSD:250G, HDD:1T
> Reporter: Shiping Liang
> Priority: Major
> Attachments: image-2018-12-18-18-28-59-540.png
>
> Time Spent: 1h 50m
> Remaining Estimate: 0h
>
> *Issue 1*
> Artemis broker has the following exception log:
> {{[Thread-0
> (ActiveMQ-remoting-threads-ActiveMQServerImpl::serverUUID=fb358579-feb3-11e8-bc7c-141877a7fd13-1409545055)]
> 17:27:59,035 WARN [org.apache.activemq.artemis.utils.actors.OrderedExecutor]
> null: java.lang.NullPointerException at
> org.apache.activemq.artemis.core.protocol.mqtt.MQTTProtocolManager.isClientConnected(MQTTProtocolManager.java:182)
> [:] at
> org.apache.activemq.artemis.core.protocol.mqtt.MQTTConnectionManager.disconnect(MQTTConnectionManager.java:150)
> [:] at
> org.apache.activemq.artemis.core.protocol.mqtt.MQTTFailureListener.connectionFailed(MQTTFailureListener.java:37)
> [:] at
> org.apache.activemq.artemis.core.protocol.mqtt.MQTTConnection.fail(MQTTConnection.java:147)
> [:] at
> org.apache.activemq.artemis.core.remoting.server.impl.RemotingServiceImpl.issueFailure(RemotingServiceImpl.java:561)
> [:] at
> org.apache.activemq.artemis.core.remoting.server.impl.RemotingServiceImpl.connectionDestroyed(RemotingServiceImpl.java:542)
> [:] at
> org.apache.activemq.artemis.core.remoting.impl.netty.NettyAcceptor$Listener.connectionDestroyed(NettyAcceptor.java:858)
> [:] at
> org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.lambda$channelInactive$0(ActiveMQChannelHandler.java:83)
> [:] 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:1142)
> [rt.jar:1.8.0_101] at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> [rt.jar:1.8.0_101] at
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
> [:]}}
> *Issue 2*
> After closing all client connections, 64 queues were not cleaned up。
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)