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

    https://github.com/apache/activemq-artemis/pull/2491#discussion_r245879352
  
    --- 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 --
    
    It is necessary to call the "clean()" method to clean up old session 
information when creating a connection.
    If it is not cleaned up, when the cleanSession of the last MQTT consumer is 
false, and the cleanSession of the connected MQTT consumer is true, the message 
in the old queue will be consumed, which is actually not allowed.
    I think this is why calling "clean()" in the "setIsClean(boolean isClean)" 
method


---

Reply via email to