Skip to content

Comments

[FIXED] MQTT: QoS2 subscription not getting messages after restart#7643

Merged
neilalexander merged 2 commits intomainfrom
mqtt_fix_qos2_sub_restart
Dec 15, 2025
Merged

[FIXED] MQTT: QoS2 subscription not getting messages after restart#7643
neilalexander merged 2 commits intomainfrom
mqtt_fix_qos2_sub_restart

Conversation

@kozlovic
Copy link
Member

@kozlovic kozlovic commented Dec 13, 2025

When a QoS2 subscription was restarted, it would not receive any of the message persisted while offline or even new incoming messages.

The reason was that when the subscription was started, the internal subscription on the "$MQTT_out" stream was started only once for a given session.

Added a test that demonstrated the original issue and verifies the fix.

Update some tests to prevent flapping.

Signed-off-by: Ivan Kozlovic ivan@synadia.com

@kozlovic kozlovic requested a review from a team as a code owner December 13, 2025 02:22
@kozlovic kozlovic force-pushed the mqtt_fix_qos2_sub_restart branch from a09fde7 to e408a99 Compare December 13, 2025 03:48
@kozlovic kozlovic marked this pull request as draft December 13, 2025 14:20
@kozlovic
Copy link
Member Author

I made changes to the tests seeing some failures in other runs, but I am not sure these changes are correct. Will investigate further and update this PR when I get to the bottom of it. Switched to Draft in the meantime.

When a QoS2 subscription was restarted, it would not receive any
of the message persisted while offline or even new incoming messages.

The reason was that when the subscription was started, the internal
subscription on the "$MQTT_out" stream was started only once for
a given session.

Added a test that demonstrated the original issue and verifies
the fix.

Update some tests to prevent flapping

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
@kozlovic kozlovic force-pushed the mqtt_fix_qos2_sub_restart branch from e408a99 to c35e97b Compare December 13, 2025 16:14
@kozlovic kozlovic marked this pull request as ready for review December 13, 2025 16:53
@kozlovic
Copy link
Member Author

@derekcollison Ok, ready for review.

Restored the boolean to subscribe only once per session but clear
it when session is reused on a new connect.

Note that c.processSub() would not duplicate the subscription since
that function would look for existing SID and found that it already
exists. Still, added a test to make sure we have a single NATS
subscription on the JS consumer's delivery subject.

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
@kozlovic kozlovic force-pushed the mqtt_fix_qos2_sub_restart branch from 5d64683 to 6833ea2 Compare December 14, 2025 18:33
@kozlovic
Copy link
Member Author

@derekcollison Changes made, ready for review.

Copy link
Member

@neilalexander neilalexander left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@neilalexander neilalexander merged commit 71591e5 into main Dec 15, 2025
48 checks passed
@neilalexander neilalexander deleted the mqtt_fix_qos2_sub_restart branch December 15, 2025 09:52
Copy link
Member

@derekcollison derekcollison left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

neilalexander added a commit that referenced this pull request Dec 15, 2025
Includes the following:

- #7636
- #7637
- #7643
- #7639
- #7648
- #7634
- #7649

Signed-off-by: Neil Twigg <neil@nats.io>
neilalexander added a commit that referenced this pull request Dec 18, 2025
Includes the following:

- #7553
- #7555
- #7579
- #7578
- #7581
- #7585
- #7586
- #7588
- #7593
- #7594
- #7595
- #7596
- #7597
- #7598
- #7601
- #7604
- #7605
- #7610
- #7616
- #7614
- #7622
- #7619
- #7624
- #7625
- #7627
- #7636
- #7637
- #7643
- #7648
- #7634
- #7655
- #7656

Signed-off-by: Neil Twigg <neil@nats.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants