Skip to content

Releases: mochi-mqtt/server

v2.2.1

10 Feb 23:50
Compare
Choose a tag to compare

What's Changed

  • Add PublishDropped metrics by @thedevop in #167
    • Record statistics about the number of publish packets dropped in the event that a client is too slow to respond (following changes in v2.2.0).
  • Expose dropped publish messages count in sys info by @mochi-co in #170
    • Renamed PublishDropped to MessagesDropped for alignment with MessagesSent and MessagesReceived, which are limited to publish packets, and exposes this information in a new $SYS topic, $SYS/broker/messages/dropped.
  • Fix potential NextPacketID endless loop, expand tests by @mochi-co in #169 per #168
    • Refactors client.NextPacketID to fix a potential edge-case in next packet ID acquisition which could cause an infinite loop. Additionally, replaces some instances of 65535 with math.MaxUint16 and adds an unexported field, client.maximumPacketID to assist with testing (eg. populate 10 messages instead of 65535 in order to generate an overflow in certain unit tests). With thanks to @thedevop for suggestions and reviews.

Full Changelog: v2.2.0...v2.2.1

Tests

  • Builds
  • Unit Tests Passing
  • Paho Interoperability Passing

v2.2.0

10 Feb 00:05
aac2454
Compare
Choose a tag to compare

What's Changed

  • Add Clone to system.Info by @thedevop in #163
    • Adds a new Clone method to system.Info to make a copy of the system info values.
  • Client write buffers by @mochi-co in #165
    • Removes the fixed fanpool worker pool in exchange for writing directly to the clients via client-specific buffered write channels. In the event that a client's write buffer is full, in such an event as a slow reading client, the message is dropped and the new OnPublishDropped hook is called. If the message was QoS 1 or 2, the inflight is rolled back and the message is treated as unattempted.
    • Adds a new OnPublishDropped hook which is called when message delivery was not attempted or rolled back due to irregular client behaviour (such as slow reads on the client side).
    • Improves performance for mid-level throughput.
  • Removes refreshDeadline call from client write, which caused some disconnected clients to remain online indefinitely, by @mochi-co per #156
  • No longer issue retained messages on session takeover by @mochi-co in #166
    • After an investigation into the issues seen in #153, the cause is determined to be a misreading of the specification regarding the issuance of retained messages on session takeover, confirmed in this comment by Andy Stanford-Clark As such, we will no longer issue retained messages when a session takeover occurs. QoS Inflight queueing continues to behave as expected.

Full Changelog: v2.1.8...v2.2.0

Tests

  • Builds
  • Unit Tests Passing
  • Paho Interoperability Passing

v2.1.8

05 Feb 11:09
Compare
Choose a tag to compare

What's Changed

  • Failed to delete inflight data by @wind-c in #162
    • Adds missing OnQosPublish hooks, and corrects an input to a OnQosComplete hook call.

Full Changelog: v2.1.7...v2.1.8

Tests

  • Builds
  • Unit Tests Passing
  • Paho Interoperability Passing

v2.1.7

04 Feb 11:07
Compare
Choose a tag to compare

What's Changed

  • Fix an issue where example configs for persistence were incorrectly not pointers, and fixes an issue where the Qos flow quotas were not being correctly reset when a client session is inherited by a new connection; by @wind-c in #152
  • Adds a new listener which accepts an existing net.Listener, by @jeroenrinzema in #155
  • Moves refreshDeadline to only trigger on successful transmission, per issue #156 by @mochi-co in #157
  • Rename quota methods for clarity by @mochi-co in #159
    • Previously these were Take and Return, now they are Increase and Decrease.

New Contributors

Full Changelog: v2.1.6...v2.1.7

Tests

  • Builds
  • Unit Tests Passing
  • Paho Interoperability Passing

v2.1.6

16 Jan 20:11
Compare
Choose a tag to compare

What's Changed

  • Use Atomic instead of RWMutex for Hooks concurrency by @mochi-co and @thedevop in #148
    • Per #145, converts RWMutex on []Hook slice to use atomics for better performance.
  • Publish retained messages only after connack by @mochi-co in #147
    • Fixes an issue (#144) in which retained messages on subscriptions inherited in session takeovers were issued before the connack packet.

Full Changelog: v2.1.5...v2.1.6

Tests

  • Builds
  • Unit Tests Passing
  • Paho Interoperability Passing

v2.1.5

13 Jan 23:46
3001524
Compare
Choose a tag to compare

What's Changed

  • Ignore retain as published v3 by @mochi-co in #142
    • Per #141, RetainAsPublished no longer is applied for v3 clients. Retain flag for v3 clients is delivered as-is.
  • Optimizes field alignment for mqtt.Capabilities struct.

Full Changelog: v2.1.4...v2.1.5

Tests

  • Builds
  • Unit Tests Passing
  • Paho Interoperability Passing

v2.1.4

10 Jan 00:04
Compare
Choose a tag to compare

What's Changed

  • Use correct connack return codes for MQTTv3 by @mochi-co in #140
    • As identified by @bkupidura in #134, v3 clients were not acknowledging connack reason codes. This issue occurred because the MQTTv3 specification provides different byte codes for 4 return codes than are provided in the v5 specification. This has been corrected through the implementation of a v5 to v3 code map.

Full Changelog: v2.1.3...v2.1.4

Tests

  • Builds
  • Unit Tests Passing
  • Paho Interoperability Passing

v2.1.3

09 Jan 23:09
Compare
Choose a tag to compare

What's Changed

  • Make hooks safe for concurrency by @thedevop and @mochi-co as per discussion in #139
    • Due to unexpected usage, the slice containing hooks was not safe for concurrent reading and writing. This has been fixed.
  • Export Client.Net.Conn for easier developer access by @mochi-co
    • To assist those trying to gain more control over the client connection, the client conn is now exposed as Net.Conn, as per #87 (comment)
  • Fixed the quickstart code on the README to add necessary import statements and port example, by @BarriBarri20, as per #137
  • Small code cleanups by @mochi-co

Full Changelog: v2.1.2...v2.1.3

Tests

  • Builds
  • Unit Tests Passing
  • Paho Interoperability Passing

v2.1.2

07 Jan 20:11
b895d68
Compare
Choose a tag to compare

What's Changed

  • Change the order of inline client check by @thedevop in #133
    • As per #132, optimizes the sequence of logic statements to ensure inline client is checked first, preventing unnecessary calls to other logic such as ACL or getting inflight messages by key.

Full Changelog: v2.1.1...v2.1.2

Tests

  • Builds
  • Unit Tests Passing
  • Paho Interoperability Passing

v2.1.1

07 Jan 17:55
Compare
Choose a tag to compare

What's Changed

  • Add Client Closed method by @thedevop in #130
    • client.Closed() bool returns true if client connection is closed.
  • Save subscription properties for mqttv5 by @wind-c in #131
    • Fixes an issue where MQTT v5 properties were not correctly stored when using bolt, badger, and redis persistence hooks.

New Contributors

Full Changelog: v2.1.0...v2.1.1

Tests

  • Builds
  • Unit Tests Passing
  • Paho Interoperability Passing