[ 
https://issues.apache.org/jira/browse/ARTEMIS-2217?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16737345#comment-16737345
 ] 

ASF GitHub Bot commented on ARTEMIS-2217:
-----------------------------------------

Github user onlyMIT commented on a diff in the pull request:

    https://github.com/apache/activemq-artemis/pull/2491#discussion_r246095670
  
    --- Diff: 
artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTSession.java
 ---
    @@ -117,14 +118,11 @@ boolean getStopped() {
        }
     
        boolean isClean() {
    -      return isClean;
    +      return clean;
        }
     
    -   void setIsClean(boolean isClean) throws Exception {
    -      this.isClean = isClean;
    -      if (isClean) {
    -         clean();
    -      }
    +   void setClean(boolean clean) throws Exception {
    +      this.clean = clean;
    --- End diff --
    
    @jbertram in the getSessionState method.Only clear state,not call 'clean()' 
method. In fact, the queue is not cleaned up.
    I use the code for the ‘paho’ test. The first consumer 
"cleanSession=false", using a different clientID to open a producer to send a 
message. Close the producer and consumer, use the same clientID and 
cleanSession = true" to open the second consumer and find that the consumer 
will consume the legacy message in the queue。So I suspect that there is a 
problem with the test code.
    I am always looking for why my test results will consume the legacy 
messages in the queue, and your test results will not。
    After seeing your information, I re-reviewed the code and found that the 
test code did not have any problems. What is causing my doubts is that because 
of your change, when cleanSession=true, only the MQTTSessionState is cleaned 
up, the queue still exists, and the legacy messages in the queue are consumed 
when resubscribing.
     Can close [#2493 ](https://github.com/apache/activemq-artemis/pull/2493) . 
I think you need to review your change。 


> ‘MQTTSessionState’ in the ‘SESSIONS ConcurrentHashMap’ never be removed
> -----------------------------------------------------------------------
>
>                 Key: ARTEMIS-2217
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-2217
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: MQTT
>    Affects Versions: 2.7.0
>            Reporter: Shiping Liang
>            Priority: Major
>
> ‘MQTTSessionState’ in the ‘SESSIONS ConcurrentHashMap’ should be removed when 
> the conusmer (cleanSession is true) connection is closed



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to