|
|
|
@ -2,13 +2,6 @@
|
|
|
|
|
|
|
|
|
|
## Enhancements
|
|
|
|
|
|
|
|
|
|
- [#12251](https://github.com/emqx/emqx/pull/12251) Optimized the performance of the RocksDB-based persistent sessions, achieving a reduction in RAM usage and database request frequency. Key improvements include:
|
|
|
|
|
|
|
|
|
|
- Introduced dirty session state to avoid frequent mria transactions.
|
|
|
|
|
- Introduced an intermediate buffer for the persistent messages.
|
|
|
|
|
- Used separate tracks of PacketIds for QoS1 and QoS2 messages.
|
|
|
|
|
- Limited the number of continuous ranges of inflight messages to 1 per stream.
|
|
|
|
|
|
|
|
|
|
- [#12326](https://github.com/emqx/emqx/pull/12326) Enhanced session tracking with registration history. EMQX now has the capability to monitor the history of session registrations, including those that have expired. By configuring `broker.session_history_retain`, EMQX retains records of expired sessions for a specified duration.
|
|
|
|
|
|
|
|
|
|
- **Session count API**: Use the API `GET /api/v5/sessions_count?since=1705682238` to obtain a count of sessions across the cluster that remained active since the given UNIX epoch timestamp (with seconds precision). This enhancement aids in analyzing session activity over time.
|
|
|
|
@ -22,17 +15,15 @@
|
|
|
|
|
|
|
|
|
|
NOTE: Please consider this metric as an approximate estimation. Due to the asynchronous nature of data collection and calculation, exact precision may vary.
|
|
|
|
|
|
|
|
|
|
- [#12338](https://github.com/emqx/emqx/pull/12338) Introduced a time-based garbage collection mechanism to the RocksDB-based persistent session backend. This feature ensures more efficient management of stored messages, optimizing storage utilization and system performance by automatically purging outdated messages.
|
|
|
|
|
|
|
|
|
|
- [#12398](https://github.com/emqx/emqx/pull/12398) Exposed the `swagger_support` option in the Dashboard configuration, allowing for the enabling or disabling of the Swagger API documentation.
|
|
|
|
|
|
|
|
|
|
- [#12467](https://github.com/emqx/emqx/pull/12467) Supported cluster discovery using AAAA DNS record type.
|
|
|
|
|
- [#12467](https://github.com/emqx/emqx/pull/12467) Started supporting cluster discovery using AAAA DNS record type.
|
|
|
|
|
|
|
|
|
|
- [#12483](https://github.com/emqx/emqx/pull/12483) Renamed `emqx ctl conf cluster_sync tnxid ID` to `emqx ctl conf cluster_sync inspect ID`.
|
|
|
|
|
- [#12483](https://github.com/emqx/emqx/pull/12483) Renamed `emqx ctl conf cluster_sync tnxid ID` to `emqx ctl conf cluster_sync inspect ID`.
|
|
|
|
|
|
|
|
|
|
For backward compatibility, `tnxid` is kept, but considered deprecated and will be removed in 5.7.
|
|
|
|
|
|
|
|
|
|
- [#12495](https://github.com/emqx/emqx/pull/12495) Intorduced new AWS S3 connector and action.
|
|
|
|
|
- [#12495](https://github.com/emqx/emqx/pull/12495) Introduced new AWS S3 connector and action.
|
|
|
|
|
|
|
|
|
|
- [#12499](https://github.com/emqx/emqx/pull/12499) Enhanced client banning capabilities with extended rules, including:
|
|
|
|
|
|
|
|
|
@ -99,7 +90,7 @@
|
|
|
|
|
|
|
|
|
|
- [#12679](https://github.com/emqx/emqx/pull/12679) Upgraded docker image base from Debian 11 to Debian 12.
|
|
|
|
|
|
|
|
|
|
- [#12700](https://github.com/emqx/emqx/pull/12700) Supported "b" and "B" unit in bytesize hocon fields.
|
|
|
|
|
- [#12700](https://github.com/emqx/emqx/pull/12700) Started supporting "b" and "B" unit in bytesize hocon fields.
|
|
|
|
|
|
|
|
|
|
For example, all three fields below will have the value of 1024 bytes:
|
|
|
|
|
|
|
|
|
@ -158,7 +149,7 @@
|
|
|
|
|
|
|
|
|
|
- [#12581](https://github.com/emqx/emqx/pull/12581) Added JSON schema to schema registry.
|
|
|
|
|
|
|
|
|
|
JSON Schema supports [Draft 03](http://tools.ietf.org/html/draft-zyp-json-schema-03), [Draft 04](http://tools.ietf.org/html/draft-zyp-json-schema-04) and [Draft 06](https://datatracker.ietf.org/doc/html/draft-wright-json-schema-00).
|
|
|
|
|
JSON Schema supports [Draft 03](http://tools.ietf.org/html/draft-zyp-json-schema-03), [Draft 04](http://tools.ietf.org/html/draft-zyp-json-schema-04) and [Draft 05](https://datatracker.ietf.org/doc/html/draft-wright-json-schema-00).
|
|
|
|
|
|
|
|
|
|
- [#12602](https://github.com/emqx/emqx/pull/12602) Enhanced health checking for IoTDB connector, using its `ping` API instead of just checking for an existing socket connection.
|
|
|
|
|
|
|
|
|
@ -168,7 +159,7 @@
|
|
|
|
|
|
|
|
|
|
- [mongodb-erlang PR](https://github.com/emqx/mongodb-erlang/pull/41)
|
|
|
|
|
|
|
|
|
|
- [#12725](https://github.com/emqx/emqx/pull/12725) Implemented HTTP API to list the available source types.
|
|
|
|
|
- [#12725](https://github.com/emqx/emqx/pull/12725) Implemented REST API to list the available source types.
|
|
|
|
|
|
|
|
|
|
- [#12746](https://github.com/emqx/emqx/pull/12746) Added `username` log field. If MQTT client is connected with a non-empty username the logs and traces will include `username` field.
|
|
|
|
|
|
|
|
|
@ -178,23 +169,23 @@
|
|
|
|
|
|
|
|
|
|
- [#12347](https://github.com/emqx/emqx/pull/12347) Implemented an update to ensure that messages processed by the Rule SQL for the MQTT egress data bridge are always rendered as valid, even in scenarios where the data is incomplete or lacks certain placeholders defined in the bridge configuration. This adjustment prevents messages from being incorrectly deemed invalid and subsequently discarded by the MQTT egress data bridge, as was the case previously.
|
|
|
|
|
|
|
|
|
|
When variables in `payload` and `topic` templates are undefined, they are now rendered as empty strings instead of the literal `undefined` string.
|
|
|
|
|
When variables in `payload` and `topic` templates are undefined, they are now rendered as empty strings instead of the literal `undefined` string.
|
|
|
|
|
|
|
|
|
|
- [#12472](https://github.com/emqx/emqx/pull/12472) Fixed an issue where certain read operations on `/api/v5/actions/` and `/api/v5/sources/` endpoints might result in a `500` error code during the process of rolling upgrades.
|
|
|
|
|
- [#12472](https://github.com/emqx/emqx/pull/12472) Fixed an issue where certain read operations on `/api/v5/actions/` and `/api/v5/sources/` endpoints might result in a `500` error code during the process of rolling upgrades.
|
|
|
|
|
|
|
|
|
|
- [#12492](https://github.com/emqx/emqx/pull/12492) EMQX now returns the `Receive-Maximum` property in the `CONNACK` message for MQTT v5 clients, aligning with protocol expectations. This implementation considers the minimum value of the client's `Receive-Maximum` setting and the server's `max_inflight` configuration as the limit for the number of inflight (unacknowledged) messages permitted. Previously, the determined value was not sent back to the client in the `CONNACK` message.
|
|
|
|
|
|
|
|
|
|
- [#12500](https://github.com/emqx/emqx/pull/12500) The `GET /clients` and `GET /client/:clientid` HTTP APIs have been updated to include disconnected persistent sessions in their responses.
|
|
|
|
|
|
|
|
|
|
NOTE: A current known issue with these enhanced API responses is that the total client count provided may exceed the actual number of clients due to the inclusion of disconnected sessions.
|
|
|
|
|
NOTE: A current known issue with these enhanced API responses is that the total client count provided may exceed the actual number of clients due to the inclusion of disconnected sessions.
|
|
|
|
|
|
|
|
|
|
- [#12505](https://github.com/emqx/emqx/pull/12505) Upgraded the Kafka producer client `wolff` from version 1.10.1 to 1.10.2. This latest version maintains a long-lived metadata connection for each connector, optimizing EMQX's performance by reducing the frequency of establishing new connections for action and connector health checks.
|
|
|
|
|
|
|
|
|
|
- [#12513](https://github.com/emqx/emqx/pull/12513) Changed the level of several flooding log events from `warning` to `info`.
|
|
|
|
|
|
|
|
|
|
- [#12530](https://github.com/emqx/emqx/pull/12530) Improved the error reporting for `frame_too_large` events and malformed `CONNECT` packet parsing failures. These updates now provide additional information, aiding in the troubleshooting process.
|
|
|
|
|
- [#12530](https://github.com/emqx/emqx/pull/12530) Improved the error reporting for `frame_too_large` events and malformed `CONNECT` packet parsing failures. These updates now provide additional information, aiding in the troubleshooting process.
|
|
|
|
|
|
|
|
|
|
- [#12541](https://github.com/emqx/emqx/pull/12541) Introduced a new configuration validation step for autocluster by DNS records to ensure compatibility between `node.name` and `cluster.discover_strategy`. Specifically, when utilizing the `dns` strategy with either `a` or `aaaa` record types, it is mandatory for all nodes to use a (static) IP address as the host name.
|
|
|
|
|
- [#12541](https://github.com/emqx/emqx/pull/12541) Introduced a new configuration validation step for autocluster by DNS records to ensure compatibility between `node.name` and `cluster.discover_strategy`. Specifically, when utilizing the `dns` strategy with either `a` or `aaaa` record types, it is mandatory for all nodes to use a (static) IP address as the host name.
|
|
|
|
|
|
|
|
|
|
- [#12562](https://github.com/emqx/emqx/pull/12562) Added a new configuration root: `durable_storage`. This configuration tree contains the settings related to the new persistent session feature.
|
|
|
|
|
|
|
|
|
@ -204,7 +195,7 @@
|
|
|
|
|
|
|
|
|
|
- API keys specified in the bootstrap file are assigned the highest precedence. In cases where a new key from the bootstrap file conflicts with an existing key, the older key will be automatically removed to ensure that the bootstrap keys take effect without issue.
|
|
|
|
|
|
|
|
|
|
- [#12646](https://github.com/emqx/emqx/pull/12646) Fixed an issue with the rule engine's date-time string parser. Previously, time zone adjustments were only effective for date-time strings specified with second-level precision.
|
|
|
|
|
- [#12646](https://github.com/emqx/emqx/pull/12646) Fixed an issue with the rule engine's date-time string parser. Previously, time zone adjustments were only effective for date-time strings specified with second-level precision.
|
|
|
|
|
|
|
|
|
|
- [#12652](https://github.com/emqx/emqx/pull/12652) Fixed a discrepancy where the subbits functions with 4 and 5 parameters, despite being documented, were missing from the actual implementation. These functions have now been added.
|
|
|
|
|
|
|
|
|
@ -215,7 +206,7 @@
|
|
|
|
|
|
|
|
|
|
- [#12672](https://github.com/emqx/emqx/pull/12672) Changed the process for generating the node boot configuration by incorporating the loading of `{data_dir}/configs/cluster.hocon`. Previously, changes to logging configurations made via the Dashboard and saved in `{data_dir}/configs/cluster.hocon` were only applied after the initial boot configuration was generated using `etc/emqx.conf`, leading to potential loss of some log segment files due to late reconfiguration.
|
|
|
|
|
|
|
|
|
|
Now, both `{data_dir}/configs/cluster.hocon` and `etc/emqx.conf` are loaded concurrently, with settings from `emqx.conf` taking precedence, to create the boot configuration.
|
|
|
|
|
Now, both `{data_dir}/configs/cluster.hocon` and `etc/emqx.conf` are loaded concurrently, with settings from `emqx.conf` taking precedence, to create the boot configuration.
|
|
|
|
|
|
|
|
|
|
- [#12696](https://github.com/emqx/emqx/pull/12696) Fixed an issue where attempting to reconnect an action or source could lead to wrong error messages being returned in the HTTP API.
|
|
|
|
|
|
|
|
|
@ -228,7 +219,7 @@
|
|
|
|
|
- `emqx_subscriptions_shared_count`
|
|
|
|
|
- `emqx_subscriptions_shared_max`
|
|
|
|
|
|
|
|
|
|
Additionally, this fix rectified an issue within the `/stats` endpoint concerning the `subscriptions.shared.count` and `subscriptions.shared.max` fields. Previously, these values failed to update promptly following a client's disconnection or unsubscription from a Shared-Subscription.
|
|
|
|
|
Additionally, this fix rectified an issue within the `/stats` endpoint concerning the `subscriptions.shared.count` and `subscriptions.shared.max` fields. Previously, these values failed to update promptly following a client's disconnection or unsubscription from a Shared-Subscription.
|
|
|
|
|
|
|
|
|
|
- [#12390](https://github.com/emqx/emqx/pull/12390) Fixed an issue where the `/license` API request may crash during cluster joining processes.
|
|
|
|
|
|
|
|
|
@ -246,6 +237,14 @@
|
|
|
|
|
|
|
|
|
|
- [#12740](https://github.com/emqx/emqx/pull/12740) Fixed an issue when durable sessions could not be kicked out.
|
|
|
|
|
|
|
|
|
|
- [#12767](https://github.com/emqx/emqx/pull/12767) Fixed issues encountered during upgrades from 5.0.1 to 5.5.1, specifically related to Kafka Producer configurations that led to upgrade failures. The correction ensures that Kafka Producer configurations are accurately transformed into the new action and connector configuration format required by EMQX version 5.5.1 and beyond.
|
|
|
|
|
|
|
|
|
|
- [#12768](https://github.com/emqx/emqx/pull/12768) Fixed an issue which may occur when performing rolling upgrade, especially when upgrading from a version earlier than 5.4.0.
|
|
|
|
|
|
|
|
|
|
When the cluster is empty (more precisely, routing tables are empty), try to additionally ask the cluster nodes for the routing schema in use, to make more informed decision about routing storage schema upon startup. This should make routing storage schema less likely to diverge across cluster nodes, especially when the cluster is composed of different versions of EMQX.
|
|
|
|
|
|
|
|
|
|
The version also logs instructions for how to manually resolve if conflict is detected in a running cluster.
|
|
|
|
|
|
|
|
|
|
## Breaking Changes
|
|
|
|
|
|
|
|
|
|
- [#12576](https://github.com/emqx/emqx/pull/12576) Starting from 5.6, the "Configuration Manual" document will no longer include the `bridges` config root.
|
|
|
|
|