[
https://issues.apache.org/jira/browse/ARTEMIS-2206?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16724078#comment-16724078
]
ASF GitHub Bot commented on ARTEMIS-2206:
-----------------------------------------
Github user clebertsuconic commented on a diff in the pull request:
https://github.com/apache/activemq-artemis/pull/2466#discussion_r242541448
--- Diff:
artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTSubscriptionManager.java
---
@@ -194,12 +191,13 @@ private synchronized void removeSubscription(String
address) throws Exception {
SimpleString internalQueueName =
getQueueNameForTopic(internalAddress);
session.getSessionState().removeSubscription(address);
-
- ServerConsumer consumer = consumers.get(address);
+ Set<Consumer> queueConsumers =
session.getServer().queueConsumersQuery(internalQueueName);
--- End diff --
I think this is wrong. You should only check for consumers on this Session.
Your logic is closing every consumer to the same address. You keep multiple
connections and you have a failure.
> 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
>
>
> *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)