emqx/changes/e5.0.1.zh.md

97 lines
6.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# e5.0.1
## 增强
- [#10019](https://github.com/emqx/emqx/pull/10019) 为 QUIC 监听器添加更多底层调优选项。
- [#10059](https://github.com/emqx/emqx/pull/10059) 规则引擎 API 返回用户可读的错误信息而不是原始的栈追踪信息。
- [#9213](https://github.com/emqx/emqx/pull/9213) 在 Helm chart 中添加干扰预算 (disruption budget)。
- [#9949](https://github.com/emqx/emqx/pull/9949) QUIC 传输多流支持和 QUIC TLS cacert 支持。
- [#9932](https://github.com/emqx/emqx/pull/9932) 在 `桥接` 中集成 `TDengine`
- [#9967](https://github.com/emqx/emqx/pull/9967) 新的通用 TLS 选项 'hibernate_after' 以减少空闲连接的内存占用,默认: 5s 。
## 修复
- [#10009](https://github.com/emqx/emqx/pull/10009) 验证 `GET /trace/:name/log``bytes` 参数使其不超过有符号的32位整数。
- [#10015](https://github.com/emqx/emqx/pull/10015) 在 cookie 给错时,快速失败。
在此修复前,即使 cookie 配置错误emqx 命令仍然会尝试去 ping EMQX 节点,
并得到一个 "Node xxx not responding to pings" 的错误。
修复后,如果发现 cookie 不一致,立即打印不一致的错误信息并退出。
- [#10020](https://github.com/emqx/emqx/pull/10020) 修复使用异步和批量配置的桥接计数不准确的问题。
- [#10021](https://github.com/emqx/emqx/pull/10021) 修正当`emqx_ctl cluster join`命令的目标节点未运行时的错误信息。
- [#10032](https://github.com/emqx/emqx/pull/10032) 当集群中某些节点上的资源仍处于 '初始化/连接中' 状态时,`bridges/` API 将由于缺少这些资源的 Metrics 信息而崩溃。此修复后将忽略没有 Metrics 信息的资源。
- [#10037](https://github.com/emqx/emqx/pull/10037) 修复 Swagger API 文档渲染崩溃。
在版本 5.0.18 中,引入了一个错误,导致配置 schema 中出现了重复的配置名称,进而导致生成了无效的 Swagger spec。
- [#10041](https://github.com/emqx/emqx/pull/10041) 为 influxdb 桥接的配置项 `write_syntax` 描述文档增加了类型标识符的提醒。
另外在配置中支持 `timestamp` 使用一个常量。
- [#10042](https://github.com/emqx/emqx/pull/10042) 改进 `core` 集群被分割时 `replicant`节点的行为。
修复前,如果 `core` 集群分裂成两个小集群(例如一个节点离开集群)时,`replicant` 节点无法重新平衡与核心节点的连接,直到核心集群再次变得完整。
这种个问题会导致 replicant 节点出现如下日志:
`[error] line: 182, mfa: mria_lb:list_core_nodes/1, msg: mria_lb_core_discovery divergent cluster`
[Mria PR](https://github.com/emqx/mria/pull/123/files)
- [#10043](https://github.com/emqx/emqx/pull/10043) 修复 v5.0.18 引入的 2 个bug。
* 环境变量 `SSL_DIST_OPTFILE` 的值设置错误导致节点无法为 Erlang distribution 启用 SSL。
* 当节点的 cookie 从环境变量重载 (而不是设置在配置文件中时),节点无法启动的问题。
- [#10044](https://github.com/emqx/emqx/pull/10044) 修复集群中已停止节点的信息序列化问题,该错误由 v5.0.18 引入。
- [#10054](https://github.com/emqx/emqx/pull/10054) 修复数据桥接中使用 `/bridges_probe` API 进行测试连接时密码被混淆的问题。
- [#10058](https://github.com/emqx/emqx/pull/10058) 废弃未使用的 QUIC TLS 选项。
QUIC 监听器只保留以下 TLS 选项:
- cacertfile
- certfile
- keyfile
- verify
- [#10076](https://github.com/emqx/emqx/pull/10076) 修复 HTTP 桥接的一个异常处理:连接超时错误发生后,发生错误的请求可以被重试。
在此修复前,连接超时后,被当作不可重试类型的错误处理,导致请求被丢弃。
- [#10078](https://github.com/emqx/emqx/pull/10078) 修复了无效的 QUIC 监听器设置可能导致 segfault 的问题。
- [#10084](https://github.com/emqx/emqx/pull/10084) 修正将运行不同 EMQX 版本的核心节点加入集群的问题。
[Mria PR](https://github.com/emqx/mria/pull/127)
- [#10086](https://github.com/emqx/emqx/pull/10086) HTTP 客户端库 `ehttpc` 升级到 0.4.7。
在升级前,如果 HTTP 客户端,例如 认证授权webhook 等配置中使用了content-type HTTP 头,但是没有配置 body则可能会发生异常。
详情见 [ehttpc PR#44](https://github.com/emqx/ehttpc/pull/44)。
- [#9939](https://github.com/emqx/emqx/pull/9939) 允许 'emqx ctl cluster join' 命令在 Mnesia 启动前就可以调用。
在此修复前, EMQX 的 `replicant` 类型节点无法使用 `manual` 集群发现策略。
- [#9958](https://github.com/emqx/emqx/pull/9958) 修复 `clients` API 在 Client ID 不存在时返回的错误的 HTTP 应答格式。
- [#9961](https://github.com/emqx/emqx/pull/9961) 在 bin/emqx 脚本中,避免在运行非启动命令时解析 emqx.conf 来获取节点名称和 cookie。
- [#9974](https://github.com/emqx/emqx/pull/9974) Statsd 和 prometheus 使用跟 Dashboard 相同的内存用量数据源。
在此修复前,内存的总量和用量统计使用了过时的(在容器环境中不准确)的数据源。
- [#9978](https://github.com/emqx/emqx/pull/9978) 修正了在Postgres连接中选择使用SSL时的配置问题`authn`, `authz` 和 bridge
从5.0.13升级到较新的EMQX版本后连接可能无法完成之前的配置。
- [#9997](https://github.com/emqx/emqx/pull/9997) 修复 Swagger API 生成时,`deprecated` 元数据字段未按照[标准](https://swagger.io/specification/)建议的那样始终为布尔值的问题。
- [#10007](https://github.com/emqx/emqx/pull/10007) Kafka 桥接的配置参数 `memory_overload_protection` 默认值从 `true` 改成了 `false`
尽管内存过载后消息被丢弃会产生日志和计数,如果没有基于这些日志或计数的告警,系统管理员可能无法及时发现消息被丢弃。
当前更好的选择是:让管理员显式的配置该项,迫使他们理解这个配置的好处以及风险。
- [#10087](https://github.com/emqx/emqx/pull/10087) 在 InfluxDB 中插入数据时,如果时间戳为空(未定义),则使用默认的占位符 `${timestamp}`
在此修复前如果时间戳字段没有设置InfluxDB 桥接使用了一个错误的时间戳。