chore: 5.6.0-rc.3

This commit is contained in:
Ivan Dyachkov 2024-03-21 17:43:02 +01:00
parent c39f6a8265
commit 93c80bc912
5 changed files with 173 additions and 219 deletions

View File

@ -32,7 +32,7 @@
%% `apps/emqx/src/bpapi/README.md'
%% Opensource edition
-define(EMQX_RELEASE_CE, "5.6.0-rc.2").
-define(EMQX_RELEASE_CE, "5.6.0-rc.3").
%% Enterprise edition
-define(EMQX_RELEASE_EE, "5.6.0-rc.2").
-define(EMQX_RELEASE_EE, "5.6.0-rc.3").

View File

@ -2,50 +2,49 @@
## Enhancements
- [#12251](https://github.com/emqx/emqx/pull/12251) Optimize performance of the RocksDB-based persistent session.
Reduce RAM usage and frequency of database requests.
- [#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:
- Introduce dirty session state to avoid frequent mria transactions
- Introduce an intermediate buffer for the persistent messages
- Use separate tracks of PacketIds for QoS1 and QoS2 messages
- Limit the number of continuous ranges of inflight messages to one per stream
- 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) Add session registration history.
- [#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.
Setting config `broker.session_history_retain` allows EMQX to keep track of expired sessions for the retained period.
- **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.
API `GET /api/v5/sessions_count?since=1705682238` can be called to count the cluster-wide sessions which were alive (unexpired) since the provided timestamp (UNIX epoch at seconds precision).
- **Metrics expansion with cluster sessions gauge**: A new gauge metric, `cluster_sessions`, is added to better track the number of sessions within the cluster. This metric is also integrated into Prometheus for easy monitoring:
A new gauge `cluster_sessions` is added to the metrics collection. Exposed to prometheus as
```
# TYPE emqx_cluster_sessions_count gauge
emqx_cluster_sessions_count 1234
```
```
# TYPE emqx_cluster_sessions_count gauge
emqx_cluster_sessions_count 1234
```
NOTE: Please consider this metric as an approximate estimation. Due to the asynchronous nature of data collection and calculation, exact precision may vary.
NOTE: The counter can only be used for an approximate estimation as the collection and calculations are async.
- [#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.
- [#12338](https://github.com/emqx/emqx/pull/12338) Added time-based message garbage collection to the RocksDB-based persistent session backend.
- [#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.
- [#12398](https://github.com/emqx/emqx/pull/12398) Exposed the `swagger_support` option in configuration for Dashboard to disable the swagger API document.
- [#12467](https://github.com/emqx/emqx/pull/12467) Supported cluster discovery using AAAA DNS record type.
- [#12467](https://github.com/emqx/emqx/pull/12467) Support 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.
- [#12499](https://github.com/emqx/emqx/pull/12499) Added ability to ban clients by extended rules:
* by matching `clientid`s to a regular expression;
* by matching client's `username` to a regular expression;
* by matching client's peer address to an CIDR range.
- [#12495](https://github.com/emqx/emqx/pull/12495) Intorduced new AWS S3 connector and action.
Warning: large number of matching rules (not tied to a concrete clientid, username or host) will impact performance.
- [#12499](https://github.com/emqx/emqx/pull/12499) Enhanced client banning capabilities with extended rules, including:
- [#12509](https://github.com/emqx/emqx/pull/12509) Implement API to re-order all authenticators / authorization sources.
* Matching `clientid` against a specified regular expression.
* Matching client's `username` against a specified regular expression.
* Matching client's peer address against a CIDR range.
- [#12517](https://github.com/emqx/emqx/pull/12517) Congifuration files now support multi-line string values with indentation.
**Important Notice**: Implementing a large number of broad matching rules (not specific to an individual clientid, username, or host) may affect system performance. It's advised to use these extended ban rules judiciously to maintain optimal system efficiency.
Introduced the `"""~` and `~"""` to quote indented lines. For example:
- [#12509](https://github.com/emqx/emqx/pull/12509) Implemented API to re-order all authenticators / authorization sources.
- [#12517](https://github.com/emqx/emqx/pull/12517) Configuration files have been upgraded to accommodate multi-line string values, preserving indentation for enhanced readability and maintainability. This improvement utilizes `"""~` and `~"""` markers to quote indented lines, offering a structured and clear way to define complex configurations. For example:
```
rule_xlu4 {
@ -57,10 +56,11 @@
~"""
}
```
See [HOCON 0.42.0](https://github.com/emqx/hocon/releases/tag/0.42.0) release notes for more details.
See [HOCON 0.42.0](https://github.com/emqx/hocon/releases/tag/0.42.0) release notes for details.
- [#12520](https://github.com/emqx/emqx/pull/12520) Implemented log throttling. The feature reduces the volume of logged events that could potentially flood the system by dropping all but the first occurance of an event within a configured time window.
Log throttling is applied to the following log events that are critical yet prone to repetition:
- [#12520](https://github.com/emqx/emqx/pull/12520) Implement log throttling. The feature reduces the number of potentially flooding logged events by dropping all but the first event within a configured time window.
Throttling is applied to the following log events:
- `authentication_failure`
- `authorization_permission_denied`
- `cannot_publish_to_topic_due_to_not_authorized`
@ -68,13 +68,13 @@
- `connection_rejected_due_to_license_limit_reached`
- `dropped_msg_due_to_mqueue_is_full`
- [#12561](https://github.com/emqx/emqx/pull/12561) Implement HTTP APIs to get the list of client's in-flight and mqueue messages.
- [#12561](https://github.com/emqx/emqx/pull/12561) Implemented HTTP APIs to get the list of client's in-flight and message queue (mqueue) messages. These APIs facilitate detailed insights and effective control over message queues and in-flight messaging, ensuring efficient message handling and monitoring.
To get the first chunk of data:
- `GET /clients/{clientid}/mqueue_messages?limit=100`
- `GET /clients/{clientid}/inflight_messages?limit=100`
Alternatively:
Alternatively, for the first chunks without specifying a start position:
- `GET /clients/{clientid}/mqueue_messages?limit=100&position=none`
- `GET /clients/{clientid}/inflight_messages?limit=100&position=none`
@ -84,22 +84,22 @@
Where `{position}` is a value (opaque string token) of `meta.position` field from the previous response.
Mqueue messages are ordered according to their priority and queue (FIFO) order: from higher priority to lower priority.
By default, all messages in Mqueue have the same priority of 0.
Ordering and Prioritization:
In-flight messages are ordered by time at which they were inserted to the in-flight storage (from older to newer messages).
- **Mqueue Messages**: These are prioritized and sequenced based on their queue order (FIFO), from higher to lower priority. By default, mqueue messages carry a uniform priority level of 0.
- **In-Flight Messages**: Sequenced by the timestamp of their insertion into the in-flight storage, from oldest to newest.
- [#12590](https://github.com/emqx/emqx/pull/12590) Removed `mfa` meta data from log messages to improve clarity.
- [#12641](https://github.com/emqx/emqx/pull/12641) Improve text log formatter fields order.
- [#12641](https://github.com/emqx/emqx/pull/12641) Improved text log formatter fields order. The new fields order is as follows:
`tag` > `clientid` > `msg` > `peername` > `username` > `topic` > [other fields]
- [#12670](https://github.com/emqx/emqx/pull/12670) Add field `shared_subscriptions` to endpoint `/monitor_current` and `/monitor_current/nodes/:node`.
- [#12670](https://github.com/emqx/emqx/pull/12670) Added field `shared_subscriptions` to endpoint `/monitor_current` and `/monitor_current/nodes/:node`.
- [#12679](https://github.com/emqx/emqx/pull/12679) Upgrade docker image base from Debian 11 to Debian 12
- [#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) Support "b" and "B" unit in bytesize hocon fields.
- [#12700](https://github.com/emqx/emqx/pull/12700) Supported "b" and "B" unit in bytesize hocon fields.
For example, all three fields below will have the value of 1024 bytes:
@ -109,16 +109,18 @@
bytesize_field2 = 1024
```
- [#12719](https://github.com/emqx/emqx/pull/12719) Support multiple clientid and username Query string parameters in `/clients` API, and make it possible to specify which client info fields must be included in the response.
- [#12719](https://github.com/emqx/emqx/pull/12719) The `/clients` API has been upgraded to accommodate queries for multiple `clientid`s and `username`s simultaneously, offering a more flexible and powerful tool for monitoring client connections. Additionally, this update introduces the capability to customize which client information fields are included in the API response, optimizing for specific monitoring needs.
Multi clientid/username queries examples:
- `/clients?clientid=client1&clientid=client2`
- `/clients?username=user11&username=user2`
- `/clients?clientid=client1&clientid=client2&username=user1&username=user2`
Examples of Multi-Client/Username Queries:
Selecting which fields to include in response examples:
- `/clients?fields=all` (omitting `fields` query string parameter defaults to returning all fields)
- `/clients?fields=clientid,username`
- To query multiple clients by ID: `/clients?clientid=client1&clientid=client2`
- To query multiple users: `/clients?username=user11&username=user2`
- To combine multiple client IDs and usernames in one query: `/clients?clientid=client1&clientid=client2&username=user1&username=user2`
Examples of Selecting Fields for the Response:
- To include all fields in the response: `/clients?fields=all` (Note: Omitting the `fields` parameter defaults to returning all fields.)
- To specify only certain fields: `/clients?fields=clientid,username`
- [#12330](https://github.com/emqx/emqx/pull/12330) The Cassandra bridge has been split into connector and action components. They are backwards compatible with the bridge HTTP API. Configuration will be upgraded automatically.
@ -138,7 +140,7 @@
- [#12488](https://github.com/emqx/emqx/pull/12488) The RocketMQ bridge has been split into connector and action components. They are backwards compatible with the bridge HTTP API. Configuration will be upgraded automatically.
- [#12512](https://github.com/emqx/emqx/pull/12512) The HSTreamDB bridge has been split into connector and action components. They are backwards compatible with the bridge HTTP API. Configuration will be upgraded automatically, however, it is recommended to do the upgrade manually as new fields have been added to the configuration.
- [#12512](https://github.com/emqx/emqx/pull/12512) The HStreamDB bridge has been split into connector and action components. They are backwards compatible with the bridge HTTP API. Configuration will be upgraded automatically, however, it is recommended to do the upgrade manually as new fields have been added to the configuration.
- [#12543](https://github.com/emqx/emqx/pull/12543) The DynamoDB bridge has been split into connector and action components. They are backwards compatible with the bridge HTTP API. Configuration will be upgraded automatically.
@ -148,100 +150,77 @@
- [#12381](https://github.com/emqx/emqx/pull/12381) Added new SQL functions: `map_keys()`, `map_values()`, `map_to_entries()`, `join_to_string()`, `join_to_string()`, `join_to_sql_values_string()`, `is_null_var()`, `is_not_null_var()`.
For more information on the functions and their usage, refer to the documentation.
For more information on the functions and their usage, refer to [Built-in SQL Functions](../data-integration/rule-sql-builtin-functions) the documentation.
- [#12427](https://github.com/emqx/emqx/pull/12427) Made possible to limit the number of Kafka partitions to utilize for Kafka data integration.
- [#12427](https://github.com/emqx/emqx/pull/12427) Introduced the capability to specify a limit on the number of Kafka partitions that can be used for Kafka data integration.
- [#12577](https://github.com/emqx/emqx/pull/12577) Changed the type of `service_account_json` of both GCP PubSub Producer and Consumer connectors to a string. Now, it's possible to set this field to a JSON-encoded string. Using the previous format (a HOCON map) is still supported but not encouraged.
- [#12577](https://github.com/emqx/emqx/pull/12577) Updated the `service_account_json` field for both the GCP PubSub Producer and Consumer connectors to accept JSON-encoded strings. Now, it's possible to set this field to a JSON-encoded string. Using the previous format (a HOCON map) is still supported but not encouraged.
- [#12581](https://github.com/emqx/emqx/pull/12581) Add JSON schema to schema registry.
- [#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).
- [#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.
- [#12336](https://github.com/emqx/emqx/pull/12336) Isolate channels cleanup from other async tasks (like routes cleanup) by using a dedicated pool,
as this task can be quite slow under high network latency conditions.
- [#12336](https://github.com/emqx/emqx/pull/12336) Refined the approach to managing asynchronous tasks by segregating the cleanup of channels into its own dedicated pool. This separation addresses performance issues encountered during channels cleanup under conditions of high network latency, ensuring that such tasks do not impede the efficiency of other asynchronous operations, such as route cleanup.
- [#12494](https://github.com/emqx/emqx/pull/12494) Improve MongoDB connector performance.
- [#12494](https://github.com/emqx/emqx/pull/12494) Improved MongoDB connector performance.
- [mongodb-erlang PR](https://github.com/emqx/mongodb-erlang/pull/41)
- [#12746](https://github.com/emqx/emqx/pull/12746) Add `username` log field.
- [#12725](https://github.com/emqx/emqx/pull/12725) Implemented HTTP API to list the available source types.
If MQTT client is connected with a non-empty username the logs and traces will include `username` field.
- [#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.
## Bug Fixes
- [#11868](https://github.com/emqx/emqx/pull/11868) Fix a bug when will message was not published after session takeover.
- [#11868](https://github.com/emqx/emqx/pull/11868) Fixed a bug where will messages were not published after session takeover.
- [#12347](https://github.com/emqx/emqx/pull/12347) Always render valid messages for egress MQTT data bridge from the data fetched by Rule SQL, even if the data is incomplete and placeholders used in the bridge configuration are missing.
Previously, some messages were rendered as invalid and were discarded by the MQTT egress data bridge.
- [#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.
Render undefined variables as empty strings in `payload` and `topic` templates of the MQTT egress data bridge. Previously, undefined variables were rendered as `undefined` strings.
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 that could lead to some read operations on `/api/v5/actions/` and `/api/v5/sources/` to return 500 while rolling upgrades are underway.
- [#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) Return `Receive-Maximum` in `CONNACK` for MQTT v5 clients.
- [#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.
EMQX takes the min value of client's `Receive-Maximum` and server's `max_inflight` config as the max number of inflight (unacknowledged) messages allowed.
Prior to this fix, the value was not sent back to the client in `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.
- [#12500](https://github.com/emqx/emqx/pull/12500) Now disconnected persistent sessions are returned in the `GET /clients` and `GET /client/:clientid` HTTP APIs.
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.
Known issue: the total count returned by this API may overestimate the total number of clients.
- [#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.
- [#12505](https://github.com/emqx/emqx/pull/12505) Upgrade Kafka producer client `wolff` from version 1.10.1 to 1.10.2
- [#12513](https://github.com/emqx/emqx/pull/12513) Changed the level of several flooding log events from `warning` to `info`.
The new version client keeps a long-lived metadata connection for each connector.
This makes EMQX perform less new connection establishment for
action and connector healchecks.
- [#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.
- [#12513](https://github.com/emqx/emqx/pull/12513) Change level of several flooding log events from warning to info.
- [#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.
- [#12530](https://github.com/emqx/emqx/pull/12530) Enhanced `frame_too_large` and malformed CONNECT packet parse failures to include more information to help troubleshooting.
- [#12541](https://github.com/emqx/emqx/pull/12541) Added a config validation to check if `node.name` is compatible with `cluster.discover_strategy`.
For `dns` strategy with `a` or `aaaa` record types, all nodes must use (static) IP address as host name.
- [#12562](https://github.com/emqx/emqx/pull/12562) Add a new configuration root: `durable_storage`.
This configuration tree contains the settings related to the new persistent session feature.
- [#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.
- [#12566](https://github.com/emqx/emqx/pull/12566) Enhanced the bootstrap file for REST API keys:
- now the empty line will be skipped instead of throwing an error
- Empty lines within the file are now skipped, eliminating the previous behavior of generating an error.
- keys from bootstrap file now have highest priority, if one of them conflicts with an old key, the old key will be deleted
- 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) Fix rule engine date time string parser.
- [#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.
Prior to this fix, time zone shift can only work when date time string is at 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.
- [#12652](https://github.com/emqx/emqx/pull/12652) The subbits functions with 4 and 5 parameters are documented but did not exist in the implementation. These functions have now been added.
- [#12663](https://github.com/emqx/emqx/pull/12663) Fixed an issue where the `emqx_vm_cpu_use` and `emqx_vm_cpu_idle` metrics, accessible via the Prometheus endpoint `/prometheus/stats`, were inaccurately reflecting the average CPU usage since the operating system boot. This fix ensures that these metrics now accurately represent the current CPU usage and idle, providing more relevant and timely data for monitoring purposes.
- [#12663](https://github.com/emqx/emqx/pull/12663) Fixed an issue where `emqx_vm_cpu_use` and `emqx_vm_cpu_idle` metrics in Prometheus endpoint `/prometheus/stats` are always calculating average usage since operating system boot.
- [#12668](https://github.com/emqx/emqx/pull/12668) Refactor the SQL function: `date_to_unix_ts()` by using `calendar:datetime_to_gregorian_seconds/1`.
- [#12668](https://github.com/emqx/emqx/pull/12668) Refactored the SQL function `date_to_unix_ts()` by using `calendar:datetime_to_gregorian_seconds/1`.
This change also added validation for the input date format.
- [#12672](https://github.com/emqx/emqx/pull/12672) Load `{data_dir}/configs/cluster.hocon` when generating node boot config.
- [#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.
Logging related config changes made from the dashboard are persisted in `{data_dir}/configs/cluster.hocon`.
Prior to this change, it only takes `etc/emqx.conf` to generate the boot config (including the logger part),
then `{data_dir}/configs/cluster.hocon` is loaded to reconfigure the logger after boot is complete.
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.
This late reconfigure may cause some log segment files to be lost.
- [#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.
Now `{data_dir}/configs/cluster.hocon` and `etc/emqx.conf` are both loaded (`emqx.conf` overlaying on top)
to generate boot config.
- [#12714](https://github.com/emqx/emqx/pull/12714) Fixed inaccuracies in several metrics reported by the `/prometheus/stats` endpoint of the Prometheus API. The correction applies to the following metrics:
- [#12696](https://github.com/emqx/emqx/pull/12696) Fixed an issue where attempting to reconnect an action or source could lead to the wrong error message being returned in the HTTP API.
- [#12714](https://github.com/emqx/emqx/pull/12714) Fixed some field errors in prometheus api `/prometheus/stats`.
Related metrics names:
- `emqx_cluster_sessions_count`
- `emqx_cluster_sessions_max`
- `emqx_cluster_nodes_running`
@ -249,27 +228,23 @@
- `emqx_subscriptions_shared_count`
- `emqx_subscriptions_shared_max`
Fixed the issue in endpoint: `/stats` that the values of fields `subscriptions.shared.count` and `subscriptions.shared.max`
can not be updated in time when the client disconnected or unsubscribed the 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 /license API request maybe crash during cluster join processes.
- [#12390](https://github.com/emqx/emqx/pull/12390) Fixed an issue where the `/license` API request may crash during cluster joining processes.
- [#12411](https://github.com/emqx/emqx/pull/12411) Fixed a bug where `null` values would be inserted as `1853189228` in `int` columns in Cassandra data integration.
- [#12522](https://github.com/emqx/emqx/pull/12522) Improved parsing for Kafka bootstrap hosts.
- [#12522](https://github.com/emqx/emqx/pull/12522) Refined the parsing process for Kafka bootstrap hosts to exclude spaces following commas, addressing connection timeouts and DNS resolution failures due to malformed host entries.
Previously, spaces following commas in the Kafka bootstrap hosts list were included in the parsing result.
This inclusion led to connection timeouts or DNS resolution failures due to the malformed host entries.
- [#12656](https://github.com/emqx/emqx/pull/12656) Implemented a topic verification step for creating GCP PubSub Producer actions, ensuring failure notifications when the topic doesn't exist or provided credentials lack sufficient permissions.
- [#12656](https://github.com/emqx/emqx/pull/12656) Added a topic check when creating a GCP PubSub Producer action, so it now fails when the topic does not exist or the provided credentials do not have enough permissions to use it.
- [#12678](https://github.com/emqx/emqx/pull/12678) Enhanced the DynamoDB connector to clearly report the reason for connection failures, improving upon the previous lack of error insights.
- [#12678](https://github.com/emqx/emqx/pull/12678) The DynamoDB connector now explicitly reports the error reason upon connection failure. This update addresses the previous limitation where connection failures did not result in any explanation.
- [#12681](https://github.com/emqx/emqx/pull/12681) Fixed a security issue where secrets could be logged at debug level when sending messages to a RocketMQ bridge/action.
- [#12681](https://github.com/emqx/emqx/pull/12681) When sending messages to a RocketMQ bridge/action while debug level logging was activated, secrets could be emitted in debug level log messages. This has now been fixed.
- [#12715](https://github.com/emqx/emqx/pull/12715) Fixed a crash that could occur during configuration updates if the connector for the ingress data integration source had active channels.
- [#12715](https://github.com/emqx/emqx/pull/12715) Fixed an issue when configuration update could crash if connector for corresponding ingress data integration source has active channels.
- [#12740](https://github.com/emqx/emqx/pull/12740) Fixed an issue when durable session could not be kicked out.
- [#12740](https://github.com/emqx/emqx/pull/12740) Fixed an issue when durable sessions could not be kicked out.
## Breaking Changes
@ -288,7 +263,3 @@
- For user hand-crafted configs (such as `emqx.conf`) a thorough review is needed
to inspect if escape sequences are used (such as `\n`, `\r`, `\t` and `\\`), if yes,
such strings should be changed to regular quotes (one pair of `"`) instead of triple-quotes.
- [#12715](https://github.com/emqx/emqx/pull/12715) Fixed an issue when configuration update could crash if connector for corresponding ingress data integration source has active channels.
- [#12740](https://github.com/emqx/emqx/pull/12740) Fixed an issue when durable session could not be kicked out.

View File

@ -2,50 +2,47 @@
## Enhancements
- [#12251](https://github.com/emqx/emqx/pull/12251) Optimize performance of the RocksDB-based persistent session.
Reduce RAM usage and frequency of database requests.
- [#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:
- Introduce dirty session state to avoid frequent mria transactions
- Introduce an intermediate buffer for the persistent messages
- Use separate tracks of PacketIds for QoS1 and QoS2 messages
- Limit the number of continuous ranges of inflight messages to one per stream
- 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) Add session registration history.
- [#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.
Setting config `broker.session_history_retain` allows EMQX to keep track of expired sessions for the retained period.
- **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.
API `GET /api/v5/sessions_count?since=1705682238` can be called to count the cluster-wide sessions which were alive (unexpired) since the provided timestamp (UNIX epoch at seconds precision).
- **Metrics expansion with cluster sessions gauge**: A new gauge metric, `cluster_sessions`, is added to better track the number of sessions within the cluster. This metric is also integrated into Prometheus for easy monitoring:
A new gauge `cluster_sessions` is added to the metrics collection. Exposed to prometheus as
```
# TYPE emqx_cluster_sessions_count gauge
emqx_cluster_sessions_count 1234
```
```
# TYPE emqx_cluster_sessions_count gauge
emqx_cluster_sessions_count 1234
```
NOTE: Please consider this metric as an approximate estimation. Due to the asynchronous nature of data collection and calculation, exact precision may vary.
NOTE: The counter can only be used for an approximate estimation as the collection and calculations are async.
- [#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.
- [#12338](https://github.com/emqx/emqx/pull/12338) Added time-based message garbage collection to the RocksDB-based persistent session backend.
- [#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.
- [#12398](https://github.com/emqx/emqx/pull/12398) Exposed the `swagger_support` option in configuration for Dashboard to disable the swagger API document.
- [#12467](https://github.com/emqx/emqx/pull/12467) Support cluster discovery using AAAA DNS record type.
- [#12467](https://github.com/emqx/emqx/pull/12467) Supported 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`.
For backward compatibility, `tnxid` is kept, but considered deprecated and will be removed in 5.7.
- [#12499](https://github.com/emqx/emqx/pull/12499) Added ability to ban clients by extended rules:
* by matching `clientid`s to a regular expression;
* by matching client's `username` to a regular expression;
* by matching client's peer address to an CIDR range.
- [#12499](https://github.com/emqx/emqx/pull/12499) Enhanced client banning capabilities with extended rules, including:
Warning: large number of matching rules (not tied to a concrete clientid, username or host) will impact performance.
* Matching `clientid` against a specified regular expression.
* Matching client's `username` against a specified regular expression.
* Matching client's peer address against a CIDR range.
- [#12509](https://github.com/emqx/emqx/pull/12509) Implement API to re-order all authenticators / authorization sources.
**Important Notice**: Implementing a large number of broad matching rules (not specific to an individual clientid, username, or host) may affect system performance. It's advised to use these extended ban rules judiciously to maintain optimal system efficiency.
- [#12517](https://github.com/emqx/emqx/pull/12517) Congifuration files now support multi-line string values with indentation.
- [#12509](https://github.com/emqx/emqx/pull/12509) Implemented API to re-order all authenticators / authorization sources.
Introduced the `"""~` and `~"""` to quote indented lines. For example:
- [#12517](https://github.com/emqx/emqx/pull/12517) Configuration files have been upgraded to accommodate multi-line string values, preserving indentation for enhanced readability and maintainability. This improvement utilizes `"""~` and `~"""` markers to quote indented lines, offering a structured and clear way to define complex configurations. For example:
```
rule_xlu4 {
@ -57,11 +54,12 @@
~"""
}
```
See [HOCON 0.42.0](https://github.com/emqx/hocon/releases/tag/0.42.0) release notes for more details.
- [#12520](https://github.com/emqx/emqx/pull/12520) Implement log throttling. The feature reduces the number of potentially flooding logged events by
dropping all but the first event within a configured time window.
Throttling is applied to the following log events:
See [HOCON 0.42.0](https://github.com/emqx/hocon/releases/tag/0.42.0) release notes for details.
- [#12520](https://github.com/emqx/emqx/pull/12520) Implemented log throttling. The feature reduces the volume of logged events that could potentially flood the system by dropping all but the first occurance of an event within a configured time window.
Log throttling is applied to the following log events that are critical yet prone to repetition:
- `authentication_failure`
- `authorization_permission_denied`
- `cannot_publish_to_topic_due_to_not_authorized`
@ -69,38 +67,41 @@
- `connection_rejected_due_to_license_limit_reached`
- `dropped_msg_due_to_mqueue_is_full`
- [#12561](https://github.com/emqx/emqx/pull/12561) Implement HTTP APIs to get the list of client's in-flight and mqueue messages.
- [#12561](https://github.com/emqx/emqx/pull/12561) Implemented HTTP APIs to get the list of client's in-flight and message queue (mqueue) messages. These APIs facilitate detailed insights and effective control over message queues and in-flight messaging, ensuring efficient message handling and monitoring.
To get the first chunk of data:
- `GET /clients/{clientid}/mqueue_messages?limit=100`
- `GET /clients/{clientid}/inflight_messages?limit=100`
Alternatively:
Alternatively, for the first chunks without specifying a start position:
- `GET /clients/{clientid}/mqueue_messages?limit=100&position=none`
- `GET /clients/{clientid}/inflight_messages?limit=100&position=none`
To get the next chunk of data:
- `GET /clients/{clientid}/mqueue_messages?limit=100&position={position}`
- `GET /clients/{clientid}/inflight_messages?limit=100&position={position}`
Where `{position}` is a value (opaque string token) of `meta.position` field from the previous response.
Mqueue messages are ordered according to their priority and queue (FIFO) order: from higher priority to lower priority.
By default, all messages in Mqueue have the same priority of 0.
Ordering and Prioritization:
In-flight messages are ordered by time at which they were inserted to the in-flight storage (from older to newer messages).
- **Mqueue Messages**: These are prioritized and sequenced based on their queue order (FIFO), from higher to lower priority. By default, mqueue messages carry a uniform priority level of 0.
- **In-Flight Messages**: Sequenced by the timestamp of their insertion into the in-flight storage, from oldest to newest.
- [#12590](https://github.com/emqx/emqx/pull/12590) Removed `mfa` meta data from log messages to improve clarity.
- [#12641](https://github.com/emqx/emqx/pull/12641) Improve text log formatter fields order.
- [#12641](https://github.com/emqx/emqx/pull/12641) Improved text log formatter fields order. The new fields order is as follows:
`tag` > `clientid` > `msg` > `peername` > `username` > `topic` > [other fields]
- [#12670](https://github.com/emqx/emqx/pull/12670) Add field `shared_subscriptions` to endpoint `/monitor_current` and `/monitor_current/nodes/:node`.
- [#12670](https://github.com/emqx/emqx/pull/12670) Added field `shared_subscriptions` to endpoint `/monitor_current` and `/monitor_current/nodes/:node`.
- [#12679](https://github.com/emqx/emqx/pull/12679) Upgrade docker image base from Debian 11 to Debian 12
- [#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) Support "b" and "B" unit in bytesize hocon fields.
- [#12700](https://github.com/emqx/emqx/pull/12700) Supported "b" and "B" unit in bytesize hocon fields.
For example, all three fields below will have the value of 1024 bytes:
@ -110,93 +111,76 @@
bytesize_field2 = 1024
```
- [#12719](https://github.com/emqx/emqx/pull/12719) Support multiple clientid and username Query string parameters in `/clients` API, and make it possible to specify which client info fields must be included in the response.
- [#12719](https://github.com/emqx/emqx/pull/12719) The `/clients` API has been upgraded to accommodate queries for multiple `clientid`s and `username`s simultaneously, offering a more flexible and powerful tool for monitoring client connections. Additionally, this update introduces the capability to customize which client information fields are included in the API response, optimizing for specific monitoring needs.
Multi clientid/username queries examples:
- `/clients?clientid=client1&clientid=client2`
- `/clients?username=user11&username=user2`
- `/clients?clientid=client1&clientid=client2&username=user1&username=user2`
Examples of Multi-Client/Username Queries:
Selecting which fields to include in response examples:
- `/clients?fields=all` (omitting `fields` query string parameter defaults to returning all fields)
- `/clients?fields=clientid,username`
- To query multiple clients by ID: `/clients?clientid=client1&clientid=client2`
- To query multiple users: `/clients?username=user11&username=user2`
- To combine multiple client IDs and usernames in one query: `/clients?clientid=client1&clientid=client2&username=user1&username=user2`
Examples of Selecting Fields for the Response:
- To include all fields in the response: `/clients?fields=all` (Note: Omitting the `fields` parameter defaults to returning all fields.)
- To specify only certain fields: `/clients?fields=clientid,username`
- [#12381](https://github.com/emqx/emqx/pull/12381) Added new SQL functions: `map_keys()`, `map_values()`, `map_to_entries()`, `join_to_string()`, `join_to_string()`, `join_to_sql_values_string()`, `is_null_var()`, `is_not_null_var()`.
For more information on the functions and their usage, refer to the documentation.
For more information on the functions and their usage, refer to [Built-in SQL Functions](../data-integration/rule-sql-builtin-functions) the documentation.
- [#12336](https://github.com/emqx/emqx/pull/12336) Isolate channels cleanup from other async tasks (like routes cleanup) by using a dedicated pool,
as this task can be quite slow under high network latency conditions.
- [#12336](https://github.com/emqx/emqx/pull/12336) Refined the approach to managing asynchronous tasks by segregating the cleanup of channels into its own dedicated pool. This separation addresses performance issues encountered during channels cleanup under conditions of high network latency, ensuring that such tasks do not impede the efficiency of other asynchronous operations, such as route cleanup.
- [#12746](https://github.com/emqx/emqx/pull/12746) Add `username` log field.
- [#12725](https://github.com/emqx/emqx/pull/12725) Implemented HTTP API to list the available source types.
If MQTT client is connected with a non-empty username the logs and traces will include `username` field.
- [#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.
## Bug Fixes
- [#11868](https://github.com/emqx/emqx/pull/11868) Fix a bug when will message was not published after session takeover.
- [#11868](https://github.com/emqx/emqx/pull/11868) Fixed a bug where will messages were not published after session takeover.
- [#12347](https://github.com/emqx/emqx/pull/12347) Always render valid messages for egress MQTT data bridge from the data fetched by Rule SQL, even if the data is incomplete and placeholders used in the bridge configuration are missing.
Previously, some messages were rendered as invalid and were discarded by the MQTT egress data bridge.
- [#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.
Render undefined variables as empty strings in `payload` and `topic` templates of the MQTT egress data bridge. Previously, undefined variables were rendered as `undefined` strings.
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 that could lead to some read operations on `/api/v5/actions/` and `/api/v5/sources/` to return 500 while rolling upgrades are underway.
- [#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) Return `Receive-Maximum` in `CONNACK` for MQTT v5 clients.
- [#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.
EMQX takes the min value of client's `Receive-Maximum` and server's `max_inflight` config as the max number of inflight (unacknowledged) messages allowed.
Prior to this fix, the value was not sent back to the client in `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.
- [#12500](https://github.com/emqx/emqx/pull/12500) Now disconnected persistent sessions are returned in the `GET /clients` and `GET /client/:clientid` HTTP APIs.
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.
Known issue: the total count returned by this API may overestimate the total number of clients.
- [#12513](https://github.com/emqx/emqx/pull/12513) Changed the level of several flooding log events from `warning` to `info`.
- [#12513](https://github.com/emqx/emqx/pull/12513) Change 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) Enhanced `frame_too_large` and malformed CONNECT packet parse failures to include more information to help troubleshooting.
- [#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) Added a config validation to check if `node.name` is compatible with `cluster.discover_strategy`.
For `dns` strategy with `a` or `aaaa` record types, all nodes must use (static) IP address as host name.
- [#12562](https://github.com/emqx/emqx/pull/12562) Add a new configuration root: `durable_storage`.
This configuration tree contains the settings related to the new persistent session feature.
- [#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.
- [#12566](https://github.com/emqx/emqx/pull/12566) Enhanced the bootstrap file for REST API keys:
- now the empty line will be skipped instead of throwing an error
- Empty lines within the file are now skipped, eliminating the previous behavior of generating an error.
- keys from bootstrap file now have highest priority, if one of them conflicts with an old key, the old key will be deleted
- 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) Fix rule engine date time string parser.
- [#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.
Prior to this fix, time zone shift can only work when date time string is at 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.
- [#12652](https://github.com/emqx/emqx/pull/12652) The subbits functions with 4 and 5 parameters are documented but did not exist in the implementation. These functions have now been added.
- [#12663](https://github.com/emqx/emqx/pull/12663) Fixed an issue where the `emqx_vm_cpu_use` and `emqx_vm_cpu_idle` metrics, accessible via the Prometheus endpoint `/prometheus/stats`, were inaccurately reflecting the average CPU usage since the operating system boot. This fix ensures that these metrics now accurately represent the current CPU usage and idle, providing more relevant and timely data for monitoring purposes.
- [#12663](https://github.com/emqx/emqx/pull/12663) Fixed an issue where `emqx_vm_cpu_use` and `emqx_vm_cpu_idle` metrics in Prometheus endpoint `/prometheus/stats` are always calculating average usage since operating system boot.
- [#12668](https://github.com/emqx/emqx/pull/12668) Refactor the SQL function: `date_to_unix_ts()` by using `calendar:datetime_to_gregorian_seconds/1`.
- [#12668](https://github.com/emqx/emqx/pull/12668) Refactored the SQL function `date_to_unix_ts()` by using `calendar:datetime_to_gregorian_seconds/1`.
This change also added validation for the input date format.
- [#12672](https://github.com/emqx/emqx/pull/12672) Load `{data_dir}/configs/cluster.hocon` when generating node boot config.
- [#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.
Logging related config changes made from the dashboard are persisted in `{data_dir}/configs/cluster.hocon`.
Prior to this change, it only takes `etc/emqx.conf` to generate the boot config (including the logger part),
then `{data_dir}/configs/cluster.hocon` is loaded to reconfigure the logger after boot is complete.
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.
This late reconfigure may cause some log segment files to be lost.
- [#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.
Now `{data_dir}/configs/cluster.hocon` and `etc/emqx.conf` are both loaded (`emqx.conf` overlaying on top)
to generate boot config.
- [#12714](https://github.com/emqx/emqx/pull/12714) Fixed inaccuracies in several metrics reported by the `/prometheus/stats` endpoint of the Prometheus API. The correction applies to the following metrics:
- [#12696](https://github.com/emqx/emqx/pull/12696) Fixed an issue where attempting to reconnect an action or source could lead to the wrong error message being returned in the HTTP API.
- [#12714](https://github.com/emqx/emqx/pull/12714) Fixed some field errors in prometheus api `/prometheus/stats`.
Related metrics names:
- `emqx_cluster_sessions_count`
- `emqx_cluster_sessions_max`
- `emqx_cluster_nodes_running`
@ -204,12 +188,11 @@
- `emqx_subscriptions_shared_count`
- `emqx_subscriptions_shared_max`
Fixed the issue in endpoint: `/stats` that the values of fields `subscriptions.shared.count` and `subscriptions.shared.max`
can not be updated in time when the client disconnected or unsubscribed the 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.
- [#12715](https://github.com/emqx/emqx/pull/12715) Fixed an issue when configuration update could crash if connector for corresponding ingress data integration source has active channels.
- [#12715](https://github.com/emqx/emqx/pull/12715) Fixed a crash that could occur during configuration updates if the connector for the ingress data integration source had active channels.
- [#12740](https://github.com/emqx/emqx/pull/12740) Fixed an issue when durable session could not be kicked out.
- [#12740](https://github.com/emqx/emqx/pull/12740) Fixed an issue when durable sessions could not be kicked out.
## Breaking Changes

View File

@ -14,8 +14,8 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
version: 5.6.0-rc.2
version: 5.6.0-rc.3
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application.
appVersion: 5.6.0-rc.2
appVersion: 5.6.0-rc.3

View File

@ -14,8 +14,8 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
version: 5.6.0-rc.2
version: 5.6.0-rc.3
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application.
appVersion: 5.6.0-rc.2
appVersion: 5.6.0-rc.3