Adam Zyzak created ARTEMIS-4370:
-----------------------------------
Summary: Sendig publish message with existing topic alias and
different topic causes message to be sent to incorrect topic
Key: ARTEMIS-4370
URL: https://issues.apache.org/jira/browse/ARTEMIS-4370
Project: ActiveMQ Artemis
Issue Type: Bug
Components: MQTT
Affects Versions: 2.29.0
Reporter: Adam Zyzak
h3. Description
When sending MQTT 5.0 publish message with topic alias number that has existing
mapping for given connection and new topic, Artemis broker will incorrectly
route message to topic from alias mapping instead of topic from publish
message. This is incorrect behavior because broker should route message to
topic from publish message and update alias mapping with new topic.
Section 3.3.2.3.4 Topic Alias in MQTT 5.0 specification states the following:
{code:java}
A sender can modify the Topic Alias mapping by sending another PUBLISH in the
same Network Connection with the same Topic Alias value and a different
non-zero length Topic Name. {code}
h3. Steps to reproduce
# Create 2 MQTT subscribers: first on topic1 and second on topic2
# Create 1 MQTT publisher
# From publisher send publish message on topic1 with MQTT property TOPIC_ALIAS
set to 1
# From publisher send publish message on topic2 with MQTT property TOPIC_ALIAS
set to 1
h3. Current result
First message is correctly routed to topic1, but second message is incorrectly
routed to topic1 instead of topic2
Method
org.apache.activemq.artemis.core.protocol.mqtt.MQTTPublishManager#sendToQueue
adds mapping only if alias does not exist
h3. Expected result
Topic field in MQTT publish should have priority over TOPIC_ALIAS property.
Topic alias stored under existing alias number should be updated.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)