[
https://issues.apache.org/jira/browse/AMQ-5092?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13930863#comment-13930863
]
Dhiraj Bokde commented on AMQ-5092:
-----------------------------------
Hi Dejan,
I was able to reproduce the error, but the failure doesn't happen every time
the tests are run. I investigated a little more and looks like its related to
AMQ-4712. The tests fail when the client apparently reads the same SUBACK
packet twice, even though the server only sends it once.
Since the same tests have no issues in the non-SSL MQTTTest, it seems like an
issue in SslProtocolCodec.secure_read(). But I am not familiar with the code so
can't narrow it down further.
Can we mark the failing test as ignored in MQTTSSLTest for now, and get the fix
in for non-SSL case?
Thanks,
Dhiraj.
> 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)