You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: en_US/changes/breaking-changes-ee-5.9.md
+16
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,22 @@
2
2
3
3
## 5.9.0
4
4
5
+
-[#14865](https://github.com/emqx/emqx/pull/14865) Dropped old LDAP authentication config layout (deprecated since v5.4).
6
+
Move `password_attribute` and `is_superuser_attribute` under the `method` block:
7
+
```hcl
8
+
method {
9
+
type = hash
10
+
password_attribute = "userPassword"
11
+
is_superuser_attribute = "isSuperuser"
12
+
}
13
+
```
14
+
15
+
- [#14765](https://github.com/emqx/emqx/pull/14765) Added extra validation for using Named Instances in SQL Server Connector. Previously, we could not infer when the user furnished an explicit port for SQL Server, and always added the default port if not explicitly defined.
16
+
17
+
For Named Instances, we need to explicitly define a port to connect to when connecting with the ODBC driver. And the driver happily connects to whatever instance is running on that port, completely ignoring the given Instance Name, if any.
18
+
19
+
Now, we impose that the port is to be explicitly defined when an instance name is given, and we also attempt to infer differences between desired and connected instance names during health checks.
20
+
5
21
- [#14773](https://github.com/emqx/emqx/pull/14773) Rate limiting configuration options have been changed.
6
22
- This change is incompatible with versions prior to 5.1.0
7
23
- This change is also incompatible with manually modified limiter configurations that use structures from versions prior to 5.1.0
-[#14976](https://github.com/emqx/emqx/pull/14976) Added support for the precondition configuration for authenticators.
26
+
27
+
This allows selective invocation of authenticators based on client information, helping avoid unnecessary authentication requests.
28
+
For example, to trigger the HTTP authenticator only for clients connected via `tcp:default`, and Postgre authenticators for those on `ssl:default`, you can use preconditions like str_eq(listener, 'tcp:default') or str_eq(listener, 'ssl:default').
29
+
30
+
-[#14966](https://github.com/emqx/emqx/pull/14966) Added the possibility of deleting the default dashboard admin user. For that, at least one other admin user must exist.
-[#14901](https://github.com/emqx/emqx/pull/14901) Added a new type of schema to Schema Registry: `external_http`. With this new schema type, it's possible to setup an external HTTP server that performs arbitrary operations to the payload and return the result to be used in Rules.
35
+
36
+
-[#14892](https://github.com/emqx/emqx/pull/14892) 1. Fix load imbalance in core/replicant cluster.
37
+
Previously, under certain conditions all transactions from the replicants could be sent to a single core node.
38
+
39
+
2. Add CLI commands for rebalancing replicant nodes in relation to core nodes:
40
+
-`emqx_ctl cluster core rebalance plan`
41
+
-`emqx_ctl cluster core rebalance status`
42
+
-`emqx_ctl cluster core rebalance confirm`
43
+
-`emqx_ctl cluster core rebalance abort`
44
+
45
+
-[#14884](https://github.com/emqx/emqx/pull/14884) Added HTTP API to manage multi-tenancy configurations.
46
+
47
+
-[#14876](https://github.com/emqx/emqx/pull/14876) End-to-end tracing support for Rule Engine, including tracing for the following entry:
48
+
49
+
- Client-published messages triggering Rules
50
+
- Client events and alert events triggering Rules
51
+
- Source-triggered Rules
52
+
- Actions executed by Rules
53
+
54
+
Limitations:
55
+
Fallback action tracing is not currently supported.
56
+
57
+
-[#14845](https://github.com/emqx/emqx/pull/14845) Avoid unnecessary restarts of existing listeners when changing gateway configurations and listeners.
58
+
59
+
60
+
-[#14840](https://github.com/emqx/emqx/pull/14840) Added HTTP API endpoints to configure client and tenant rate limiters for multi-tenancy feature.
61
+
62
+
-[#14794](https://github.com/emqx/emqx/pull/14794) Add the `payload_limit` parameter to the HTTP API interface for the Log Trace.
63
+
Previously, the payload print would be truncated if its size exceeded 1024 bytes.
64
+
Now, this limit is configurable.
65
+
66
+
-[#14766](https://github.com/emqx/emqx/pull/14766) Added safeguards to `emqx ctl cluster leave` command to prevent nodes responsible for Durable Storage data replication from leaving the cluster.
67
+
68
+
-[#14642](https://github.com/emqx/emqx/pull/14642) Added new Connector and Action types that allow logging events to local disk in JSON lines format.
69
+
70
+
-[#14629](https://github.com/emqx/emqx/pull/14629) Added support for [JSON Lines](https://jsonlines.org/) container types for S3 and Azure Blob Storage Actions.
71
+
72
+
-[#14590](https://github.com/emqx/emqx/pull/14590) Limit the maximum uptime for a node running under evaluation license to one month. After reaching the uptime limit, the node will reject new connections.
73
+
74
+
-[#14584](https://github.com/emqx/emqx/pull/14584) Support authenticator app for dashboard 2FA (2-factor authentication) login.
75
+
76
+
-[#14261](https://github.com/emqx/emqx/pull/14261) Introduced enhancements to facilitate multi-tenancy in MQTT client management.
77
+
78
+
New features:
79
+
80
+
-**Multi-Tenant Client Recognition**: MQTT clients with a `tns` attribute are now treated as multi-tenant clients.
81
+
-**Namespace Indexing**: Added the MQTT client namespace (`tns`) to the client ID index to support multi-tenancy scenarios.
82
+
83
+
APIs:
84
+
85
+
-**List Namespaces**: Introduced a paginated API to retrieve namespaces:
86
+
Endpoint: `/api/v5/mt/ns_list`
87
+
-**List Client Sessions in a Namespace**: Added a paginated API to fetch client sessions within a specific namespace:
88
+
Endpoint: `/api/v5/mt/:ns/client_list`
89
+
-**Count Live Client Sessions in a Namespace**: New API to retrieve the number of active client sessions in a namespace:
90
+
Endpoint: `/api/v5/mt/:ns/client_count`
91
+
92
+
Configuration:
93
+
94
+
-**Session Limit Per Namespace**: Added the `multi_tenancy.default_max_sessions` configuration to enforce limits on the number of client sessions allowed per namespace.
95
+
96
+
Notes:
97
+
98
+
- Admin multi-tenancy (admin user groups) is not included in this pull request and remains under development.
99
+
100
+
-[#14118](https://github.com/emqx/emqx/pull/14118) Support `ON DUPLICATE KEY UPDATE` in mysql actions.
101
+
102
+
Now the user can specify `ON DUPLICATE KEY UPDATE` in the `mysql` action, e.g.:
103
+
104
+
```
105
+
INSERT INTO t1 (a,b,c) VALUES (${id},${clientid},${qos}) ON DUPLICATE KEY UPDATE a=a;
106
+
```
107
+
108
+
Note that the `ON DUPLICATE KEY UPDATE` clause doesn't support placeholders (`${var}`).
109
+
110
+
-[#14040](https://github.com/emqx/emqx/pull/14040) Added timeouts to the internal RPC calls during node rebalance. Previously, the rebalance process could hang if a node was unresponsive.
111
+
112
+
-[#14017](https://github.com/emqx/emqx/pull/14017) Support for parsing customized types of InfoReport data messages in the GB/T 32960 gateway
113
+
11
114
#### Core MQTT Functionalities
12
115
13
116
-[#14721](https://github.com/emqx/emqx/pull/14721) Delayed publish interval limit changed from 4294967 seconds (49.7 days) to 42949670 seconds (497 days).
@@ -166,6 +269,51 @@ Make sure to check the breaking changes and known issues before upgrading to EMQ
166
269
167
270
### Bug Fixes
168
271
272
+
-[#15087](https://github.com/emqx/emqx/pull/15087) Fixed an issue with `hocon` library in which, if one had any string one-liner field that ended in a lone backslash, the configuration file would fail to be parsed later.
273
+
274
+
-[#15084](https://github.com/emqx/emqx/pull/15084) Client attributes `zone` and `listener` can be used as various string function input.
275
+
276
+
Previously functions like `regex_match` would raise exception because `zone` and `listener` are internally atoms.
277
+
278
+
-[#15067](https://github.com/emqx/emqx/pull/15067) Fixed a couple of issues with Cluster Linking Route Replication.
279
+
* Replication process may enter erratic reconnect loop when the Cluster Link is misconfigured on local or remote side, which will hinder replication once misconfiguration is resolved.
280
+
* Replication process may crash during attempts to close non-existing MQTT client connection.
281
+
* Replication boostrapping may crash if shared subscriptions are present in the routing table.
282
+
283
+
-[#15056](https://github.com/emqx/emqx/pull/15056) For MQTT messages whose payload is a JSON list object, it is no longer necessary to explicitly decode the payload in the `foreach` statement.
284
+
285
+
-[#15051](https://github.com/emqx/emqx/pull/15051) Enhance the TDEngine connector by adding parameter validation and updating the driver version to provide clearer error messages.
286
+
287
+
-[#15018](https://github.com/emqx/emqx/pull/15018) Fixed a bug with Exhook in which attemtping to import an invalid `exhook` configuration via the CLI would result in a crash with a `badarg` error.
288
+
289
+
-[#15012](https://github.com/emqx/emqx/pull/15012) Fixed an issue where the `publish_confirmation_timeout` parameter of RabbitMQ Actions were being multiplied by 1000.
290
+
291
+
-[#14989](https://github.com/emqx/emqx/pull/14989) Reduced the number of API calls that Kinesis Connection and Action do when (re)starting and during health checks.
292
+
293
+
Previously, upon (re)starting the Connector, it would perform one `ListStreams` request for each worker in its connection pool. Additionally, each periodic health check would do `ListStreams` for each worker. The Action health check would do `DescribeStream` for each connection worker in the pool.
294
+
295
+
Now, the Connector no longer performs the initial `ListStreams` upon (re)starting. Both Connector and Action attempt to check if at least one worker has a healthy response from their respective API requests: the request is attempted by each worker serially, and the Connector or Action is considered `connected` upon the first successful response received. Thus, in the best case scenario, each Connector and each Action will do 1 API request each per health check, regardless of pool sizea. In the worst case scenario, each worker in the pool might still perform one request each, if they fail to receive a sucessful response.
296
+
297
+
-[#14988](https://github.com/emqx/emqx/pull/14988) Fixed an issue where schema validation or message transformation configurations could be imported before schema registry when restoring a backup, leading to validation errors.
Previously the node name for new/old config were printed in the other way around.
302
+
303
+
-[#14933](https://github.com/emqx/emqx/pull/14933) Resolved a rare edge case where a Durable Storage backed by DS Raft could be assigned to storage sites that had left the cluster long ago.
304
+
305
+
-[#14767](https://github.com/emqx/emqx/pull/14767) Kafka producer now smoothly handles Kafka topic re-creation with fewer partitions.
306
+
Previously, the lost partition producers may linger behind to retry and write large amount of error logs.
-[#14121](https://github.com/emqx/emqx/pull/14121) Deprecated the `health_check_topic` configuration for Kafka Consumer Connector to avoid further confusion. This parameters was never actually used for this connector type.
311
+
312
+
-[#14906](https://github.com/emqx/emqx/pull/14906) Update Mria to 0.8.12.1 to eliminate occasional warnings caused by unexpected exit signals.
-[#14707](https://github.com/emqx/emqx/pull/14707) Fixed an issue where, in strict_mode, PUBLISH packets with QoS 2 and the DUP flag set were incorrectly considered invalid packets.
0 commit comments