[ 
https://issues.apache.org/jira/browse/ARTEMIS-4365?focusedWorklogId=871616&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-871616
 ]

ASF GitHub Bot logged work on ARTEMIS-4365:
-------------------------------------------

                Author: ASF GitHub Bot
            Created on: 18/Jul/23 19:26
            Start Date: 18/Jul/23 19:26
    Worklog Time Spent: 10m 
      Work Description: jbertram commented on code in PR #4556:
URL: https://github.com/apache/activemq-artemis/pull/4556#discussion_r1267222798


##########
artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTPublishManager.java:
##########
@@ -404,12 +406,15 @@ private boolean publishToClient(int messageId, 
ICoreMessage message, int deliver
       // [MQTT-3.3.1-2] The DUP flag MUST be set to 0 for all QoS 0 messages.
       boolean redelivery = qos == 0 ? false : (deliveryCount > 1);
 
-      boolean isRetain = message.getBooleanProperty(MQTT_MESSAGE_RETAIN_KEY);
+      boolean isRetain = 
message.containsProperty(MQTT_MESSAGE_RETAIN_INITIAL_DISTRIBUTION_KEY);
       MqttProperties mqttProperties = getPublishProperties(message);
 
       if (session.getVersion() == MQTTVersion.MQTT_5) {
-         if (session.getState().getSubscription(message.getAddress()) != null 
&& 
!session.getState().getSubscription(message.getAddress()).option().isRetainAsPublished())
 {
-            isRetain = false;
+         if (message.getBooleanProperty(MQTT_MESSAGE_RETAIN_KEY) && 
!message.containsProperty(MQTT_MESSAGE_RETAIN_INITIAL_DISTRIBUTION_KEY)) {

Review Comment:
   I considered doing that, but it didn't seem as clear as I wanted it to be at 
the time. Taking another look I think it's fine.





Issue Time Tracking
-------------------

    Worklog Id:     (was: 871616)
    Time Spent: 1.5h  (was: 1h 20m)

> MQTT retain flag not set correctly
> ----------------------------------
>
>                 Key: ARTEMIS-4365
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-4365
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>            Reporter: Justin Bertram
>            Assignee: Justin Bertram
>            Priority: Major
>          Time Spent: 1.5h
>  Remaining Estimate: 0h
>
> The {{retain}} flag set on MQTT messages dispatched to clients is incorrect 
> in certain circumstances. This is demonstrated by using the {{test}} command 
> from the [MQTT CLI tool|https://hivemq.github.io/mqtt-cli/docs/test/], e.g.:
> {noformat}
> $ mqtt test --all
> MQTT 3: OK
>     - Maximum topic length: 65535 bytes
>     - QoS 0: Received 100000/100000 publishes in 4847.01ms
>     - QoS 1: Received 100000/100000 publishes in 27413.45ms
>     - QoS 2: Received 100000/100000 publishes in 49551.40ms
>     - Retain: OK
>     - Wildcard subscriptions: OK
>     - Shared subscriptions: OK
>     - Payload size: >= 100000 bytes
>     - Maximum client id length: 65535 bytes
>     - Unsupported Ascii Chars: ALL SUPPORTED
> MQTT 5: OK
>     - Connect restrictions: 
>         > Retain: OK
>         > Wildcard subscriptions: OK
>         > Shared subscriptions: OK
>         > Subscription identifiers: OK
>         > Maximum QoS: 2
>         > Receive maximum: 65535
>         > Maximum packet size: 268435455 bytes
>         > Topic alias maximum: 65535
>         > Session expiry interval: Client-based
>         > Server keep alive: Client-based
>     - Maximum topic length: 65535 bytes
>     - QoS 0: Received 100000/100000 publishes in 706.21ms
>     - QoS 1: Received 100000/100000 publishes in 805.38ms
>     - QoS 2: Received 100000/100000 publishes in 972.98ms
>     - Retain: TIME_OUT
>     - Wildcard subscriptions: OK
>     - Shared subscriptions: OK
>     - Payload size: >= 100000 bytes
>     - Maximum client id length: 65535 bytes
>     - Unsupported Ascii Chars: ALL SUPPORTED{noformat}
> Notice the result of {{TIME_OUT}} when testing retain functionality for MQTT 
> 5.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to