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

Dejan Bosanac commented on AMQ-5092:
------------------------------------

Hi Dhiraj,

I ran the tests with the patch and I think I see a regression.

{code}testResendMessageId(org.apache.activemq.transport.mqtt.MQTTSSLTest)  Time 
elapsed: 0.039 sec  <<< ERROR!
java.net.ProtocolException: Command from server contained an invalid message 
id: 2{code}

Wonder if you can reproduce this on your side?

> MQTT uses duplicate packet IDs for PUBLISH messages
> ---------------------------------------------------
>
>                 Key: AMQ-5092
>                 URL: https://issues.apache.org/jira/browse/AMQ-5092
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: MQTT
>    Affects Versions: 5.9.0
>            Reporter: Dhiraj Bokde
>            Assignee: Hadrian Zbarcea
>             Fix For: 5.10.0
>
>         Attachments: AMQ-5092.patch
>
>
> MQTT protocol converters does not correctly generate unique packet ids for 
> retained and non-retained publish messages sent to clients. MQTT requires 
> that all Publish messages with QoS > 0 must have a unique packet id which can 
> be used by clients to coordinate the PUBACK, PUBREC, PUBREL and PUBCOMP 
> messages depending upon the QoS flow. 
> Although retained messages published on creation of client subscriptions are 
> copies of retained messages, they must carry a unique packet id when 
> dispatched to clients. ActiveMQ re-uses the retained message's packet id, 
> which makes it difficult to acknowledge these messages when wildcard topics 
> are used. 
> ActiveMQ also sends the same non-retained message multiple times for every 
> matching subscription for overlapping subscriptions. These messages also 
> re-use the publisher's message id as the packet id, which breaks client 
> acknowledgment. 
> A patch is included, which fixes all the above scenarios. It generates a 
> unique packet id for every publish (retained and non-retained), and also 
> ensures that redelivery on the same connection will re-use message ids, with 
> the dup flag set. The patch also maps JMS redelivery status for a 
> subscription to the MQTT Dup flag to indicate duplicate messages. Unit tests 
> are included to test correct packet id generation. 



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to