emqx/changes/e5.0.3.zh.md

139 lines
11 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.3
## 优化
- [#10128](https://github.com/emqx/emqx/pull/10128) SSL MQTT监听器增加对 OCSP Stapling 的支持。
- [#10156](https://github.com/emqx/emqx/pull/10156) 调整配置文件覆盖顺序机制
对于新安装的 EMQXemqx.conf 和环境变量中的配置会覆盖 API 传入的配置(即 `cluster.hocon` 中的配置)
对于从旧版本升级的 EMQX`data` 文件夹中包含 `cluster-override.conf` 文件),保留之前的覆盖规则, 即 `cluster-override.conf` 中的配置会覆盖 `emqx.conf` 和环境变量的配置。
注意:`data/configs/cluster-override.conf` 已弃用。升级后,建议您在 `emqx.conf` 中重新配置之前被 `cluster-override.conf` 覆盖的配置项,并将 cluster-override.conf 中的配置迁移到 `cluster.hocon` 中。
升级后EMQX将像以前一样继续读取 `local-override.conf` (如果存在的话),但建议您将配置合并到 `emqx.conf` 中。
- [#10164](https://github.com/emqx/emqx/pull/10164) TLS MQTT 监听器增加对 CRL 检查的支持。
- [#10207](https://github.com/emqx/emqx/pull/10207) 提高 OpenAPI (swagger) 文档的可读性。 在此更改之前,文档中有一些 `Summary` 字段冗长且缺乏翻译,现在使用了 i18n 数据库中更简洁的 `label` 字段。
- [#10210](https://github.com/emqx/emqx/pull/10210) 解决停止/重启 Mria 时 Mnesia callback 可能出现的问题。优化后,当 Mria 被停止前会取消 Mnesia callback 的注册。详情见 Mria PR
- [#10224](https://github.com/emqx/emqx/pull/10224) 在 Helm 图表中增加自定义 `clusterIP` 选项,用户可以将其设置为固定 IP。
- [#10263](https://github.com/emqx/emqx/pull/10263) 添加用于评估 Elixir 表达式的命令 `eval-ex`
- [#10278](https://github.com/emqx/emqx/pull/10278) 重构所有网关的目录结构。
- [#10206](https://github.com/emqx/emqx/pull/10206) 所有数据桥接支持异步查询模式。
优化前,如将某项资源(如数据桥接)的查询模式设为 sync同步模式缓存将以同步的模式调用底层连接器即使它支持异步调用。
- [#10306](https://github.com/emqx/emqx/pull/10306) 大多数数据桥接支持 async 查询模式。
这是 [#10206](https://github.com/emqx/emqx/pull/10206) 的后续优化, 优化前Cassandra、MongoDB、MySQL、Postgres、Redis、RocketMQ、TDengine 等数据桥接只支持同步查询模式。
- [#10318](https://github.com/emqx/emqx/pull/10318) 规则引擎中的 FROM 语句新增支持由引号(')包裹的字符串。
- [#10336](https://github.com/emqx/emqx/pull/10336) 添加 API Endpoint `/rule_engine`,用以管理规则引擎的配置。
- [#10354](https://github.com/emqx/emqx/pull/10354) 优化 `max_heap_size` 配置错误时的报错信息。当发生 `message_queue_too_long` 报错时,会在日志文件中记录当前值和最大值。
- [#10358](https://github.com/emqx/emqx/pull/10358) 隐藏 `flapping_detect/conn_congestion/stats` 配置。弃用 `flapping_detect.enable` 配置项。
- [#10359](https://github.com/emqx/emqx/pull/10359) 通过独立的 RPC 收集针对集群级别的指标,不再隐式收集不被 API 调用的指标。
- [#10373](https://github.com/emqx/emqx/pull/10373) 废弃 `trace.payload_encode` 配置项。可以在通过 HTTP API 创建的日志追踪时使用 `trace.payload_encode = [text, hidden, hex]` 字段替代。
- [#10381](https://github.com/emqx/emqx/pull/10381) 隐藏 `auto_subscribe` 配置项,后续将只能通过 HTTP API 来修改自动订阅规则。
- [#10391](https://github.com/emqx/emqx/pull/10391) 简化配置文件并隐藏大量的配置项,包括 `rewrite`、`topic_metric`、`persistent_session_store`、`overload_protection`、`flapping_detect`、`conn_congestion`、`stats`、`auto_subscribe`、`broker_perf`、`shared_subscription_group`、`slow_subs`、`ssl_options.user_lookup_fun`、 `node``dashboard` 相关的部分高级配置项,[#10358](https://github.com/emqx/emqx/pull/10358), [#10381](https://github.com/emqx/emqx/pull/10381), [#10385](https://github.com/emqx/emqx/pull/10385)。
- [#10404](https://github.com/emqx/emqx/pull/10404) 将缓冲区工作线程的默认队列模式更改为 `memory_only`。在此优化前,默认队列模式为 `volatile_offload`,当消息速率很高,资源无法满足该需求时,缓冲区性能会由于频繁的磁盘操作而受影响。
- [#10140](https://github.com/emqx/emqx/pull/10140) 新增 Cassandra 数据桥接,目前仅支持 Cassandra 3.x 版本,暂不支持 4.x 版本。
- [#10143](https://github.com/emqx/emqx/pull/10143) 新增 RocketMQ 数据桥接。
- [#10165](https://github.com/emqx/emqx/pull/10165) InfluxDB 数据桥接中的 `write_syntax` 中支持转义特殊字符。优化后,用户可根据 InfluxDB Line Protocol 在字符串中使用经转义的特殊字符。
- [#10211](https://github.com/emqx/emqx/pull/10211) 隐藏 `broker.broker_perf` 配置和相关 API 文档。其中的两个配置项 `route_lock_type``trie_compaction` 很少使用而且需要重新启动整个集群才能生效不必要暴露给用户。更多信息可阅读https://gist.github.com/zmstone/01ad5754b9beaeaf3f5b86d14d49a0b7/revisions 。
- [#10294](https://github.com/emqx/emqx/pull/10294) 配置 MongoDB 数据桥接时,现支持通过占位符 `${field}` 语法来引用消息中的字段,从而动态地选择要插入的数据集合。
- [#10363](https://github.com/emqx/emqx/pull/10363) 新增 Microsoft SQL Server 数桥接。
- [#10573](https://github.com/emqx/emqx/pull/10573) 提升了 WebHook 在同步请求模式下的性能表现,以及其他数据桥接在未配置批处理时的性能表现。
## 修复
- [#10145](https://github.com/emqx/emqx/pull/10145) 在针对 `GET /bridges/:id` 的API 调用响应中,如桥接的状态为断开,且内部健康检查返回错误,添加 `status_reason` 字段说明错误原因。在相应的告警信息中,同样增加 `status_reason` 字段说明断开原因。
- [#10172](https://github.com/emqx/emqx/pull/10172) 修复默认ACL规则中不正确的正则表达式从而允许 dashboard 用户名订阅 `$SYS/#` 主题
- [#10174](https://github.com/emqx/emqx/pull/10174) 将库 `esockd` 从 5.9.4 升级至 5.9.6。如连接在代理发送代理协议头之前关闭,将不再产生的一条错误级别日志。
- [#10195](https://github.com/emqx/emqx/pull/10195) 对包含 HTML 的 API Schema 添加标签,解决之前会破坏生成文档格式的问题。
- [#10196](https://github.com/emqx/emqx/pull/10196) 针对用于生成在线文档菜单中的模式摘要和描述,使用小写字母。
- [#10209](https://github.com/emqx/emqx/pull/10209) 修复在断开禁用客户端时,此类客户端仍可发布遗嘱消息的错误。
- [#10225](https://github.com/emqx/emqx/pull/10225) 对于名称与已安装的插件开头相同的插件,用户仍可继续安装。例如:如果插件 `emqx_plugin_template_a` 已安装,用户仍可安装名为 `emqx_plugin_template` 的插件。
- [#10226](https://github.com/emqx/emqx/pull/10226) 在 `/bridges` API 验证错误时,返回 `400` 而非 `500`
- [#10242](https://github.com/emqx/emqx/pull/10242) 修复日志中数据字段名称冲突。修复前,一些调试日志可能会报告错误的 Erlang PID影响解决会话接管类问题。
- [#10257](https://github.com/emqx/emqx/pull/10257) 修复 LwM2M 网关中 `auto_observe` 无法正常工作的问题。
修复前,在发送 `OBSERVE` 请求时没有发送 token导致 LwM2M 网关无法处理客户端请求。
修复后LwM2M 网关可以正确观察到客户端携带的资源列表,此外,未知资源将被忽并打印以下警告日志:
```
2023-03-28T18:50:27.771123+08:00 [warning] msg: ignore_observer_resource, mfa: emqx_lwm2m_session:observe_object_list/3, line: 522, peername: 127.0.0.1:56830, clientid: testlwm2mclient, object_id: 31024, reason: no_xml_definition
```
- [#10286](https://github.com/emqx/emqx/pull/10286) 优化 EMQX 启动失败时的日志记录行为。当 EMQX 由于配置文件破坏无法启动时,不会再产生过多的日志记录,也不会再产生崩溃转储文件。
- [#10297](https://github.com/emqx/emqx/pull/10297) 通过仅评估 Erlang 表达式实现 `eval` 命令与 v4 版本的向后兼容,该更新同样适用于 Elixir 节点。对于 Elixir 表达式,请使用 `eval-ex` 命令。
- [#10300](https://github.com/emqx/emqx/pull/10300) 针对通过 Elixir 构建的项目,修复无法通过环境变量配置插件的问题。
- [#10315](https://github.com/emqx/emqx/pull/10315) 修复在 `/mqtt/delayed/messages` API 调用中,在检查 `limit``page` 参数时的崩溃问题。
- [#10317](https://github.com/emqx/emqx/pull/10317) 在经过充分验证前,隐藏监听器级别的认证信息。
- [#10323](https://github.com/emqx/emqx/pull/10323) 出于安全原因API 示例中 `password` 字段的值被替换为 `******`
- [#10410](https://github.com/emqx/emqx/pull/10410) 针对由`emqx.conf` 配置的网关,修复配置检查失败问题。
此问题最早在 v5.0.22版本中由 [#10278](https://github.com/emqx/emqx/pull/10278)引入,启动时缺少配置检查。
- [#10533](https://github.com/emqx/emqx/pull/10533) 修复可能导致日志中的出现无害的噪音的问题。
在对数据桥接进行同步调用时,一些迟到的回复可能会发送到不再期待回复的连接进程,导致产生错误日志,如:
```
2023-04-19T18:24:35.350233+00:00 [error] msg: unexpected_info, mfa: emqx_channel:handle_info/2, line: 1278, peername: 172.22.0.1:36384, clientid: caribdis_bench_sub_1137967633_4788, info: {#Ref<0.408802983.1941504010.189402>,{ok,200,[{<<"cache-control">>,<<"max-age=0, ...">>}}
```
这些日志是无害的,但它们可能会泛滥成灾,引起用户不必要的担心。
- [#10449](https://github.com/emqx/emqx/pull/10449) 在通过 HTTP 服务(`authn_http`)创建身份验证时,将进行 `ssl_options``header` 配置验证。在此修复前,用户通过错误的 ssl 配置也可成功创建身份验证,但该验证整体不生效。
- [#10548](https://github.com/emqx/emqx/pull/10548) 修复了 HTTP 驱动程序在竞争条件下会导致错误而不去重试的问题。
相关的驱动程序修复:[emqx/ehttpc#45](https://github.com/emqx/ehttpc/pull/45)
- [#10201](https://github.com/emqx/emqx/pull/10201) 在 TDengine 数据桥接中,移除 SQL 模板中冗余的数据库名称。
- [#10270](https://github.com/emqx/emqx/pull/10270) 在创建 ClickHouse 数据桥接时,优化用户点击测试按钮时的错误信息
- [#10324](https://github.com/emqx/emqx/pull/10324) 针对配置有误的 ClickHouse 数据桥接,当用户尝试通过 Dashboard 重连时,将收到报错。修复前,用户不会收到报错。
- [#10438](https://github.com/emqx/emqx/pull/10438) 修复 DynamoDB 数据桥接中的部分术语使用错误:
-`database` 修改为 `table`
-`username` 修改为 `aws_access_key_id`
-`password` 修改为 `aws_secret_access_key`