|
1 | 1 | # EMQX Enterprise Version 5
|
2 | 2 |
|
| 3 | +## 5.8.6 |
| 4 | + |
| 5 | +*Release Date: 2025-03-25* |
| 6 | + |
| 7 | +Make sure to check the breaking changes and known issues before upgrading to EMQX 5.8.6. |
| 8 | + |
| 9 | +### Enhancements |
| 10 | + |
| 11 | +- [#14869](https://github.com/emqx/emqx/pull/14869) Added the `connected_at` timestamp field to the `$events/client_disconnected` event payload. This enhancement enables tracking the original connection session time for disconnected clients, preventing outdated disconnect events from overriding newer connection states. |
| 12 | + |
| 13 | + Previously, when clients frequently reconnected due to unstable networks, delayed disconnect events could lead to incorrect session tracking. With this update, the `connected_at` field is now included in the event payload, aligning its behavior with system topics and ensuring accurate session state management. |
| 14 | + |
| 15 | +- [#14855](https://github.com/emqx/emqx/pull/14855) Added a new configuration option `ignore_unsupported_frames` to the JT/T 808 gateway. This option prevents devices from being disconnected when sending messages that the gateway cannot parse. |
| 16 | + |
| 17 | +- [#14858](https://github.com/emqx/emqx/pull/14858) EMQX supports data integration with TDengine Cloud. The TDengine Cloud requires an additional token parameter for authentication, which is now supported in the TDengine connector. |
| 18 | + |
| 19 | +### Bug Fixes |
| 20 | + |
| 21 | +#### Core MQTT Functionalities |
| 22 | + |
| 23 | +- [#14815](https://github.com/emqx/emqx/pull/14815) Fixed packet ID release for QoS 2 messages. Previously, if a client failed to send a PUBREL for the maximum configured number of pending QoS 2 messages and then disconnected, the packet IDs remained occupied even after exceeding the configured Max Awaiting PUBREL Timeout. |
| 24 | + |
| 25 | +#### Installation and Deployment |
| 26 | + |
| 27 | +- [#14797](https://github.com/emqx/emqx/pull/14797) Fixed macOS release package startup issue due to OpenSSL dynamic linking (backport #14624). |
| 28 | + |
| 29 | + Previously, the EMQX ZIP package on macOS could fail to start because the `quicer` application dynamically linked to the system-installed OpenSSL, which was not signed during the EMQX build process. Now we have disabled dynamic linking for OpenSSL, aligning with the OTP shipped on macOS. This ensures EMQX starts reliably on macOS 13 and later. |
| 30 | + |
| 31 | +#### Authentication |
| 32 | + |
| 33 | +- [#14847](https://github.com/emqx/emqx/pull/14847) Fixed JWKS authentication failure for wildcard HTTPS endpoints. Previously, JWKS authentication failed to retrieve keys from HTTPS endpoints that used wildcard hostnames, preventing successful authentication. |
| 34 | +- [#14786](https://github.com/emqx/emqx/pull/14786) Fixed JWT authentication settings update when using an external JWKS endpoint. Previously, when updating JWT authentication settings with JWKS (key server) enabled in both the old and new configurations, some settings were not correctly applied. |
| 35 | + |
| 36 | + |
| 37 | +#### REST API |
| 38 | + |
| 39 | +- [#14834](https://github.com/emqx/emqx/pull/14834) Fixed incorrect `Content-Type` header when downloading data backup files. Previously, the response header for downloaded backup files incorrectly used `application/json` instead of `application/octet-stream`. |
| 40 | +- [#14863](https://github.com/emqx/emqx/pull/14863) Fixed a problem with `cluster/:node/invite_async` REST API. Previously, this API could attempt to use a down node as the coordinator. |
| 41 | + |
| 42 | + |
| 43 | +#### Rule Engine |
| 44 | + |
| 45 | +- [#14824](https://github.com/emqx/emqx/pull/14824) Fixed an HTTP 500 error in SQL Rule Tester when handling the `details` key in alarm events. Previously, when testing `alarm_activated` or `alarm_deactivated` events in the SQL Rule Tester, certain values in the `details` key could cause an HTTP 500 error due to improper handling of nested map keys. |
| 46 | + |
| 47 | +#### Data Integration |
| 48 | + |
| 49 | +- [#14796](https://github.com/emqx/emqx/pull/14796) Fixed Pulsar producer inflight state leak. Prior to this fix, the Pulsar client's inflight state could leak, preventing the connector’s inflight counter from returning to zero. This fix also included a performance improvement for Pulsar and Kafka producers on x86. |
| 50 | + |
| 51 | + Also, implemented proper support for the `buffer.memory_overload_protection` parameter in Pulsar Action. Previously, this configuration had no effect, leading to uncontrolled memory usage. |
| 52 | + |
| 53 | +- [#14902](https://github.com/emqx/emqx/pull/14902) Improved error handling in the SQL Server action for connection failures by treating `IMC0x` SQLSTATE errors as recoverable. This prevents message loss when the external MSSQL service is temporarily unavailable and ensures messages are properly cached for retry. |
| 54 | + Also enhances connection health checks to correctly detect broken connections and initiate connector reconnection attempts, improving the reliability of the SQL Server connector in unstable network environments. |
| 55 | + |
| 56 | + |
| 57 | +#### Observability |
| 58 | + |
| 59 | +- [#14800](https://github.com/emqx/emqx/pull/14800) Throttled `warning` level log `dropped_qos0_msg`. |
| 60 | + |
| 61 | +- [#14793](https://github.com/emqx/emqx/pull/14793) Added trace log for `protocol_error` in MQTT connections. |
| 62 | + |
| 63 | + Previously, when a client sent invalid or unexpected MQTT packets causing a `protocol_error`, EMQX logs provided limited details, making it difficult to diagnose the issue. |
| 64 | + |
| 65 | + For example, if a client sent a second `CONNECT` packet while already connected, EMQX would log `socket_force_closed` with `protocol_error`, but without indicating the exact cause. |
| 66 | + |
| 67 | + With this update, EMQX now logs `unexpected_connect_packet` with `conn_state=connected` before `socket_force_closed`, providing clearer context for debugging protocol violations. |
| 68 | + |
| 69 | +- [#14813](https://github.com/emqx/emqx/pull/14813) Fixed the issue that the outgoing messages sent to the WebSocket clients were not traced in end-to-end tracing. |
| 70 | + |
| 71 | +- [#14880](https://github.com/emqx/emqx/pull/14880) Improved logging for SQL Server connector health-check failures. With this update, the logs now provide more precise failure reasons, such as `timeout errors` or `unexpected_SELECT_1_result`, along with detailed diagnostic information to aid in troubleshooting. |
| 72 | + |
| 73 | +#### Plugin |
| 74 | + |
| 75 | +- [#14802](https://github.com/emqx/emqx/pull/14802) Introduced a new CLI command for plugins: |
| 76 | + |
| 77 | + ```bash |
| 78 | + emqx ctl plugins allow NAME-VSN |
| 79 | + ``` |
| 80 | + |
| 81 | + Before installing a plugin via the HTTP API or Dashboard, this command must be executed to explicitly allow the package, improving security and preventing unauthorized installations. |
| 82 | + |
| 83 | +#### Gateway |
| 84 | + |
| 85 | +- [#14756](https://github.com/emqx/emqx/pull/14756) Improved the JT/T 808 gateway so that when anonymous authentication is enabled, the registration response will carry the default authentication code `anonymous`. This is used to avoid the issue where some clients are unable to parse an empty authentication code. |
| 86 | + |
3 | 87 | ## 5.8.5
|
4 | 88 |
|
5 | 89 | *Release Date: 2025-02-25*
|
|
0 commit comments