Skip to content

Commit f415a65

Browse files
authored
Merge pull request #3167 from emqx/release-notes-5.10.1-rc.2
5.10.1 Release Notes
2 parents 3a8e5bd + 9cb6654 commit f415a65

File tree

7 files changed

+224
-64
lines changed

7 files changed

+224
-64
lines changed

en_US/changes/all-changes-ee.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ The release notes page for EMQX Enterprise provides a comprehensive and detailed
44

55
## v5.10
66

7+
- [5.10.1](./changes-ee-v5.md#_5-10-1): 2025-09-18
78
- [5.10.0](./changes-ee-v5.md#_5-10-0): 2025-06-10
89

910
## v5.9

en_US/changes/breaking-changes-5.10.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44

55
- [#15752](https://github.com/emqx/emqx/pull/15752) Listener connection rate limits (`max_conn_rate` and `max_conn_burst`) are now enforced per listener rather than per acceptor, restoring the pre-5.9.0 behavior. As a result, configurations from versions 5.9.0, 5.9.1, and 5.10.0 are incompatible: specified rates must be scaled up by the number of acceptors configured for respective listeners.
66

7-
- [#15753](https://github.com/emqx/emqx/pull/15753) Listener connection rate limits (`max_conn_rate` and `max_conn_burst`) are now enforced per listener rather than per acceptor, restoring the pre-5.9.0 behavior. As a result, configurations from versions 5.9.0 and 5.9.1 are incompatible: specified rates must be scaled up by the number of acceptors configured for respective listeners.
8-
97
## 5.10.0
108

119
- [#15289](https://github.com/emqx/emqx/pull/15289) Added a new `resource_opts.health_check_timeout` configuration to all Connectors, Actions, and Sources, with a default value of 60 seconds. If a health check takes more than this to return a response, the Connector/Action/Source will be deemed `disconnected`.

en_US/changes/breaking-changes-ee-5.10.md

Lines changed: 0 additions & 15 deletions
This file was deleted.

en_US/changes/changes-ee-v5.md

Lines changed: 82 additions & 47 deletions
Large diffs are not rendered by default.

zh_CN/changes/all-changes-ee.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ EMQX 企业版版本发布页面全面详细地记录了 EMQX 企业版每个版
44

55
## v5.10
66

7+
- [5.10.1](./changes-ee-v5.md#_5-10-1): 2025-09-18
78
- [5.10.0](./changes-ee-v5.md#_5-10-0): 2025-06-10
89

910
## v5.9

zh_CN/changes/breaking-changes-5.10.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# EMQX 5.10 中的不兼容变更
22

3+
## 5.10.1
4+
5+
- [#15752](https://github.com/emqx/emqx/pull/15752) 监听器的连接速率限制(`max_conn_rate``max_conn_burst`)现在按监听器维度生效,而非按接收器(acceptor)维度生效,恢复了 5.9.0 之前的行为。因此,来自 5.9.0、5.9.1 和 5.10.0 的配置不兼容:需要将配置的速率乘以对应监听器配置的接收器数量。
6+
37
## 5.10.0
48

59
- [#15289](https://github.com/emqx/emqx/pull/15289) 为所有连接器、动作和数据源新增配置项 `resource_opts.health_check_timeout`,默认值为 60 秒。

zh_CN/changes/changes-ee-v5.md

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,141 @@
11
# EMQX 企业版 v5 版本
22

3+
## 5.10.1
4+
5+
*发布日期:2025-09-18*
6+
7+
升级前请查看已知问题列表和不兼容变更列表。
8+
9+
### 增强
10+
11+
#### 性能
12+
13+
- [#15899](https://github.com/emqx/emqx/pull/15899) 通过确保在客户端断开时立即清除授权(authz)缓存来改进内存管理,减少不必要的内存消耗。
14+
- [#15907](https://github.com/emqx/emqx/pull/15907) 优化了系统内存使用。当客户端 ID、用户名、密码和主题等字段长度超过 64 字节时,这些字段将被复制为新的二进制数据,而不再是原始报文的切片,以减少 Erlang 虚拟机中 “binary” 类型内存的占用。
15+
16+
#### 访问控制
17+
18+
- [#15294](https://github.com/emqx/emqx/pull/15294) 增强了 LDAP 认证和授权功能。LDAP 授权现在支持使用 JSON 格式的扩展 ACL 规则,除了现有的简单主题列表外,还可以在认证过程中基于客户端信息从 LDAP 获取 ACL 规则,并将其缓存在客户端的元数据中,以避免在授权过程中重复进行 LDAP 查询。
19+
- [#15349](https://github.com/emqx/emqx/pull/15349) 优化了认证和授权的外部资源管理。此前,EMQX 在禁用认证或授权源的情况下,仍可能与配置的资源保持连接。
20+
21+
#### 数据集成
22+
23+
- [#15360](https://github.com/emqx/emqx/pull/15360) Amazon S3 Tables 动作现在支持以 Parquet 格式写入数据文件。
24+
- [#15387](https://github.com/emqx/emqx/pull/15387) 为 Kinesis 生产者连接器和动作的健康检查增加了限速机制,以遵守 AWS API 限额并提升集群行为一致性:
25+
-`ListStreams``DescribeStream` 接口的调用分别限制为每个连接器每秒 5 次和 10 次;
26+
- 集群中的核心节点协调分布式限速器,以确保限速一致。
27+
- 若健康检查被限速或超时,连接器或动作将保留原状态,而不是被标记为已断开。
28+
- 新增配置项 `resource_opts.health_check_interval_jitter`,在健康检查间隔基础上引入一个均匀随机延迟,减少同一连接器下多个动作同时发起健康检查的可能性。
29+
- [#15542](https://github.com/emqx/emqx/pull/15542)`erlcloud` 库升级到 `3.8.3.0`。升级后,如果 EMQX 运行的 EC2 实例具有正确的 IAM 权限来读写配置的 S3 存储桶,就可以在不指定访问密钥 ID 和私有访问密钥的情况下配置 S3 连接器。
30+
- [#15845](https://github.com/emqx/emqx/pull/15845) MQTT 连接器的 `static_clientids` 配置项现支持为每个客户端 ID 分别指定用户名和密码,适用于如 Azure IoT Hub 等要求每个设备使用唯一凭证的场景。此增强提升了在集群部署中多节点连接的兼容性与稳定性。
31+
- [#15911](https://github.com/emqx/emqx/pull/15911) HTTP 动作的 HTTP 请求超时时间现在可以通过 `resource_opts.request_ttl` 设置进行配置。此前,此超时时间固定为 30 秒且不可调整。
32+
33+
#### 可观测性
34+
35+
- [#15499](https://github.com/emqx/emqx/pull/15499) 添加了强制停用告警的 API 接口,允许管理员强制停用活动告警。
36+
- [#15364](https://github.com/emqx/emqx/pull/15364) 为 OpenTelemetry 集成添加了 HTTP 头配置项,以适应带有 HTTP 认证的 collector。
37+
- [#15944](https://github.com/emqx/emqx/pull/15944) 改进了以下连接器在资源被标记为 `disconnected` 状态时返回的信息:LDAP、Syskeeper、IoTDB、Snowflake(聚合模式)、JWKS 认证。
38+
- [#15371](https://github.com/emqx/emqx/pull/15371)`GET /actions_summary``GET /sources_summary` 接口的响应以及 `GET /actions/:id` 接口返回的备选动作添加了 `tags` 字段。
39+
40+
#### CLI
41+
42+
- [#15399](https://github.com/emqx/emqx/pull/15399) `node_dump` 工具现在导出当前系统配置为 HOCON 格式,并自动对敏感信息(如密码和密钥)进行脱敏处理,以确保安全。
43+
44+
### 修复
45+
46+
#### 核心 MQTT 功能
47+
48+
- [#15361](https://github.com/emqx/emqx/pull/15361) 修复了在解析格式错误的 `User-Property` 键值对时产生的 `function_clause` 错误,特别是当键值对的长度无效(过短)时。
49+
- [#15396](https://github.com/emqx/emqx/pull/15396) 移除了已断开连接客户端的共享订阅的冗余清理操作。这些操作在高频断开情况下容易导致崩溃,并可能导致全局代理状态不一致。
50+
- [#15416](https://github.com/emqx/emqx/pull/15416) 修复了 WebSocket 连接会话过期时偶尔出现的 warning 级别日志和崩溃问题。该问题由近期的 WebSocket 性能优化引入,虽然不会影响 Broker 的容量,但会在日志中产生如下错误信息:
51+
- `error: {function_clause,[{gen_tcp,send,[closed,[]],[{file,“gen_tcp.erl”},{line,966}]},{cowboy_websocket_linger,commands,3,[{file,“cowboy_websocket_linger.erl”},{line,665}]},...`
52+
- `message: {tcp,#Port<0.364>,<<136,130,...>>}, msg: emqx_session_mem_unknown_message`
53+
- [#15872](https://github.com/emqx/emqx/pull/15872) 消除了在 CONNACK 后因非零原因代码断开连接时的 warning 日志 `unclean_terminate`
54+
- [#15518](https://github.com/emqx/emqx/pull/15518) 修复了一个竞争条件,该问题在大量共享订阅者同时断开连接时,可能导致集群中路由表和共享订阅状态持续出现不一致。
55+
56+
#### 部署
57+
58+
- [#15553](https://github.com/emqx/emqx/pull/15553) 修复了 EMQX Helm chart 的一个问题:在使用默认配置部署 EMQX 时,会启动多个副本,并导致除一个节点外其余节点全部崩溃。现在 Helm chart 默认改为单副本,因为集群部署需要商业 License。
59+
- [#15712](https://github.com/emqx/emqx/pull/15712) 修复了从旧版本(5.9 之前)进行滚动升级时,节点启动失败的问题。在 EMQX 的早期版本中(5.9 之前),ZIP 时间戳编码器中的错误可能会在归档条目中存储无效的 "秒" 值(值对应于 DOS 时间格式中的第 30 或 31 个 2 秒槽)。
60+
- [#15863](https://github.com/emqx/emqx/pull/15863) 修复了许可证配额报警文本。
61+
62+
#### 访问控制
63+
64+
- [#15818](https://github.com/emqx/emqx/pull/15818) 修正了 `{allow|deny, all}` ACL 规则的处理。以前,这些规则被内部转换为匹配 `#`,但由于 MQTT 规范的限制,未能正确匹配以 `$` 为前缀的主题(例如 `$testtopic/1`)。现在,使用了一个特殊的内部值,确保 `{allow|deny, all}` 规则能够正确匹配所有主题,包括以 `$` 为前缀的主题。
65+
66+
- [#15844](https://github.com/emqx/emqx/pull/15844) 添加了验证机制,禁止向内置数据库认证器添加空用户名。此类用户稍后无法通过 HTTP API 删除,因为它们会导致 API 路径混乱。
67+
如果您有此类用户并希望删除,请在 EMQX 控制台中运行以下命令:
68+
69+
```
70+
mria:transaction(emqx_authn_shard, fun() -> mnesia:delete(emqx_authn_mnesia, {'mqtt:global',<<>>}, write) end).
71+
```
72+
73+
#### 集群
74+
75+
- [#15788](https://github.com/emqx/emqx/pull/15788) 修复了 etcd 集群发现问题。解决了使用共享 etcd 服务器时,EMQX 节点可能错误地加入到不同集群中的问题。此问题是由 etcd 客户端库中的 bug 引起的。
76+
77+
#### 智能数据中心
78+
79+
- [#15810](https://github.com/emqx/emqx/pull/15810) 引入了 `spb_{en,de}code` 函数来修正 `bytes_value` 指标的处理。修复了原始的 `sparkplug_{en,de}code` 函数的问题,因为它们没有根据 [Protobuf 规范](https://protobuf.dev/programming-guides/json/)`bytes_value` 指标值进行 base64 编码/解码。为此,引入了新的 `spb_{en,de}code` 函数来正确编码/解码这些字段。旧的 `sparkplug_{en,de}code` 函数已被弃用,以保持向后兼容性。
80+
81+
#### 数据集成
82+
83+
- [#15394](https://github.com/emqx/emqx/pull/15394) 修复了一个罕见的竞争条件,导致动作指标因意外的异步回复而变得不一致。
84+
85+
- [#15603](https://github.com/emqx/emqx/pull/15603) 修复了 MQTT 桥接中的一个问题:过期的连接可能仍显示为 `Connected` 状态,且不会自动重连。
86+
87+
- [#15826](https://github.com/emqx/emqx/pull/15826) 改进了 Kafka 消费者连接器健康检查行为,尤其是在 ACL 限制的情况下。此前,若配置的用户缺少访问内部 `____emqx_consumer_probe` 消费者组的权限,则 Kafka 消费者连接器的健康检查可能会失败。通过此修复,如果 Kafka broker 返回 "ACL denied" 响应,EMQX 将视该连接为健康连接。
88+
89+
- [#15827](https://github.com/emqx/emqx/pull/15827) 修复了 GreptimeDB 驱动中的原子泄漏和进程泄漏问题。同时修复了在 GreptimeDB 动作中使用某些错误的写入语法时可能出现的 `function_clause` 错误。
90+
91+
- [#15836](https://github.com/emqx/emqx/pull/15836) 丰富了 Kafka 消费者源添加失败时的返回信息,例如因主题 ACL 被拒导致的失败。
92+
93+
- [#15866](https://github.com/emqx/emqx/pull/15866) 升级 Kafka 生产者库 `wolff` 到 4.0.12,以改善 Kafka 元数据响应中临时缺失分区的处理。
94+
在罕见的竞争条件下,Kafka 可能返回不完整的分区列表。此前,这种情况仅在主题被重新创建且分区较少时得到处理,而在分区临时缺失时未被处理。此修复解决了此问题,防止分区生产者挂起并无限期阻止关闭。
95+
96+
- [#15906](https://github.com/emqx/emqx/pull/15906) 将 Kafka 生产者库 Wolff 从 `4.0.12` 升级到 `4.0.13`,新增了处理 `ProduceResponse``record_list_too_large` 错误的功能。
97+
98+
- [#15902](https://github.com/emqx/emqx/pull/15902) 将 MQTT 客户端库升级至 1.13.8,提升了 MQTT 桥接的连接稳定性:
99+
100+
- 当对端 Broker 未响应 PINGRESP 时,连接器将自动重连。
101+
- 若在等待 CONNACK 期间连接中断,基于 TLS 的桥接失败将更及时地被处理。
102+
103+
- [#15910](https://github.com/emqx/emqx/pull/15910) 修复了连接器中的一个问题:在较大的工作线程池中,若多个工作线程同时崩溃,可能导致连接器无法正常恢复。
104+
105+
受影响并已修复的连接器包括:
106+
107+
- MySQL
108+
109+
- PostgreSQL
110+
- Oracle
111+
- SQLServer
112+
- TDEngine
113+
- Cassandra
114+
- Dynamo
115+
- HTTP
116+
- Couchbase
117+
- GCP PubSub
118+
- Snowflake
119+
120+
同时将 `gun` 及相关依赖升级至 2.1.0。
121+
122+
#### API
123+
124+
- [#15547](https://github.com/emqx/emqx/pull/15547) 修复了 EMQX 在处理包含大体积请求体(例如 10MB)的 REST API 请求时可能失败的问题。
125+
- [#15797](https://github.com/emqx/emqx/pull/15797) 为了提高与 EMQX 4.x 的兼容性,`batch publish` HTTP API (`/api/v5/publish/bulk`) 中的 `encoding` 参数已重新引入,并作为 `payload_encoding` 的别名。此更改解决了依赖于原始 `encoding` 参数的用户的迁移问题,确保现有的 EMQX v4 API 集成可以继续工作,无需软件级别的更改。
126+
127+
#### 速率限制
128+
129+
- [#15794](https://github.com/emqx/emqx/pull/15794) 改进了连接速率限制更新的行为,确保在监听器配置更新后,速率限制的更改(例如突发速率或速率阈值)会立即生效。此前,内部限速器状态未能正确刷新,可能导致速率限制比配置的严格。
130+
131+
#### 可观测性
132+
133+
- [#15785](https://github.com/emqx/emqx/pull/15785) 修复了在格式化网络拥塞告警消息时,若 MQTT 用户名包含非 ASCII 字符,可能导致崩溃的问题。
134+
135+
#### 网关
136+
137+
- [#15342](https://github.com/emqx/emqx/pull/15342) 修复了 NATS 网关中的崩溃问题,该问题由客户端信息覆盖模板引用了未定义的报文字段引起。系统现在会返回空二进制而非未定义的原子值。
138+
3139
## 5.10.0
4140

5141
*发布日期:2025-06-09*

0 commit comments

Comments
 (0)