Skip to content

fix: MQTT v2 callback API and disconnect leak (#15, #16) - #32

Open
xtruan wants to merge 4 commits into
NatLabRockies:mainfrom
xtruan:fix/mqtt-issues-15-16
Open

fix: MQTT v2 callback API and disconnect leak (#15, #16)#32
xtruan wants to merge 4 commits into
NatLabRockies:mainfrom
xtruan:fix/mqtt-issues-15-16

Conversation

@xtruan

@xtruan xtruan commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Issue #15: mqtt_publisher used the deprecated paho-mqtt v1 callback API while pyproject requires paho-mqtt>=2.0.0, producing a DeprecationWarning and future breakage.

  • Construct mqtt.Client with callback_api_version=VERSION2
  • Update _on_connect/_on_disconnect/_on_publish to the v2 signatures, handling ReasonCode objects (is_failure/value)

Issue #16: the MQTT publisher's network-loop thread was never stopped and no DISCONNECT was sent on teardown (resource leak).

  • Add Tracker.disconnect_mqtt() (idempotent) and a stop() override that disconnects in a finally block
  • Route Tracker.exit and track_until_forced_exit through the cleanup
  • Add matching cleanup to TrackerArray for all child trackers

Update the test FakeMQTTModule to the v2 API and add regression tests covering both issues.

xtruan and others added 4 commits September 8, 2026 09:25
…bRockies#16)

Issue NatLabRockies#15: mqtt_publisher used the deprecated paho-mqtt v1 callback API
while pyproject requires paho-mqtt>=2.0.0, producing a DeprecationWarning
and future breakage.
- Construct mqtt.Client with callback_api_version=VERSION2
- Update _on_connect/_on_disconnect/_on_publish to the v2 signatures,
  handling ReasonCode objects (is_failure/value)

Issue NatLabRockies#16: the MQTT publisher's network-loop thread was never stopped and
no DISCONNECT was sent on teardown (resource leak).
- Add Tracker.disconnect_mqtt() (idempotent) and a stop() override that
  disconnects in a finally block
- Route Tracker.__exit__ and track_until_forced_exit through the cleanup
- Add matching cleanup to TrackerArray for all child trackers

Update the test FakeMQTTModule to the v2 API and add regression tests
covering both issues.
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.

2 participants