# v5.0.21 ## 增强 - [#10022](https://github.com/emqx/emqx/pull/10022) 开始发布Rocky Linux 9(与Enterprise Linux 9兼容)和 MacOS 12 软件包。 - [#10139](https://github.com/emqx/emqx/pull/10139) 将 `extraVolumeMounts` 添加到 EMQX Helm Chart 中,它将能够挂载用户自己的文件到 EMQX 实例中,例如在 [#9052](https://github.com/emqx/emqx/issues/9052) 中提到的 ACL 规则文件。 修复了 issue [#10116](https://github.com/emqx/emqx/issues/10116) - [#9893](https://github.com/emqx/emqx/pull/9893) 当使用 `clean_start=false` 标志连接时,EMQX 将会从消息队列中过滤出被封禁客户端发出的消息,使它们不能被下发给订阅者。 此前被封禁客户端发出的消息仍可能在这一场景下被下发给订阅者。 - [#9986](https://github.com/emqx/emqx/pull/9986) 在 helm chart 中新增了 MQTT 桥接 ingress 的配置参数;并删除了旧版本遗留的 `mgmt` 配置。 - [#10123](https://github.com/emqx/emqx/pull/10123) 改进 `/bridges` API 的性能。 此前,当集群中节点数目较多或节点忙时,该 API 可能出现请求超时的情况。 - [#9998](https://github.com/emqx/emqx/pull/9998) 出于安全原因,在身份验证错误日志中模糊 HTTP 请求正文。 ## 修复 - [#10013](https://github.com/emqx/emqx/pull/10013) 修复 API `/gateways/:name/clients` 返回值的类型结构错误。 - [#10014](https://github.com/emqx/emqx/pull/10014) 如果 API 查询的节点不存在,将会返回 404 而不再是 400。 - [#10026](https://github.com/emqx/emqx/pull/10026) 现在只有显式调用 `/bridges/:id/metrics` 接口时才可以获得指标数据,而其他 API 接口将不再返回相关数据。 - [#10027](https://github.com/emqx/emqx/pull/10027) 在 docker 中启动时,允许使用 `EMQX_NODE__NAME` 环境变量来配置节点名。 在此修复前,只能使 `EMQX_NODE_NAME`。 - [#10050](https://github.com/emqx/emqx/pull/10050) 确保 Bridge API 对不存在的资源一致返回 `404` 状态代码。 - [#10052](https://github.com/emqx/emqx/pull/10052) 优化 EMQX daemon 模式启动启动失败的日志。 在进行此更改之前,当 EMQX 用 `start` 命令启动失败时,用户很难理解出错的原因。 所知道的仅仅是节点未能在预期时间内启动,然后被指示以 `console` 式引导节点以获取一些日志。 然而,节点实际上可能正在运行,这可能会导致 `console` 模式因不同的原因而失败。 此次修复后,启动脚本会发出诊断: * 如果无法从 `ps -ef` 中找到节点,则指示用户在 `erlang.log.*` 中查找信息。 * 如果发现节点正在运行但不响应 ping,则建议用户检查节点主机名是否有效并可达。 * 如果节点响应 ping 但 EMQX 应用程序未运行,则很可能是一个错误。在这种情况下,建议用户报告一个Github issue。 - [#10055](https://github.com/emqx/emqx/pull/10055) 修复配置项 `mqtt.max_awaiting_rel` 更新不生效问题。 - [#10056](https://github.com/emqx/emqx/pull/10056) 修复 `/bridges` API 的 HTTP 状态码。 - 当删除被活动中的规则依赖的数据桥接时,将返回 `400` 而不是 `403` 。 - 当数据桥接未启用时,调用操作(启动|停止|重启)将返回 `400` 而不是 `403`。 - [#10066](https://github.com/emqx/emqx/pull/10066) 改进 `/briges_probe` 和 `[/node/:node]/bridges/:id/:operation` API 调用的错误信息,使之更加易读。并将 HTTP 状态代码设置为 `400` 而不是 `500`。 - [#10074](https://github.com/emqx/emqx/pull/10074) 检查 `PUT /authorization/sources/:type` 中的类型是否与请求正文中的 `type` 相符。 - [#10079](https://github.com/emqx/emqx/pull/10079) 修正对 `shared_subscription_strategy` 的描述。 - [#10085](https://github.com/emqx/emqx/pull/10085) 如果向 `/authorization/sources/:source[/*]` 请求的 `source` 不存在,将一致地返回 `404`。 - [#10098](https://github.com/emqx/emqx/pull/10098) 当 MongoDB 授权模块查询数据库时,在日志文件中发生的崩溃与错误已经被修复。 - [#10100](https://github.com/emqx/emqx/pull/10100) 修复响应较慢的客户端在使用增强认证时可能出现崩溃的问题。 此前,当客户端使用增强认证功能,但发送 Auth 报文较慢或 Auth 报文丢失时会导致客户端进程崩溃。 - [#10107](https://github.com/emqx/emqx/pull/10107) 现在对桥接的 API 进行调用时,如果 `bridge-id` 不存在,将会返回 `404`,而不再是`400`。 然后,还修复了这种情况下,在节点级别上进行 API 调用时,可能导致崩溃的问题。 另外,在启动某个桥接时,会先检查指定桥接是否已启用。 受影响的接口有: * [cluster] `/bridges/:id/:operation`, * [node] `/nodes/:node/bridges/:id/:operation`, 其中 `operation` 是 `[start|stop|restart]` 之一。 此外,对于节点操作,EMQX 将检查节点是否存在于集群中,如果不在,则会返回`404`,而不再是`501`。 - [#10117](https://github.com/emqx/emqx/pull/10117) 修复节点加入集群时,由于缺少集其它节点已安装的插件所导致的错误。 在此修复后,加入集群的节点将从其它节点复制所有必须的插件。 - [#10118](https://github.com/emqx/emqx/pull/10118) 修复 `replicant` 节点因为手动加入 EMQX 集群导致的相关问题。 此前,手动执行 `加入集群-离开集群` 后,`replicant` 节点再次加入集群后只有重启节点才能正常运行。 [Mria PR](https://github.com/emqx/mria/pull/128) - [#10119](https://github.com/emqx/emqx/pull/10119) 修复 `statsd.server` 配置为空字符串时启动崩溃的问题。 - [#10124](https://github.com/emqx/emqx/pull/10124) 增加了 MongoDB 的默认心跳周期,以减少 MongoDB 日志文件记录过多的风险。 - [#10130](https://github.com/emqx/emqx/pull/10130) 修复通过环境变量配置启动的 EMQX 节点无法通过HTTP API获取到正确的配置信息。 比如:`EMQX_STATSD__SERVER='127.0.0.1:8124' ./bin/emqx start` 后通过 Dashboard看到的 Statsd 配置信息是乱码。 相关 PR: [HOCON:234](https://github.com/emqx/hocon/pull/234). - [#10132](https://github.com/emqx/emqx/pull/10132) 修复 `systemctl stop emqx` 命令没有正常停止 jq、os_mon 组件所产生一些错误日志。 - [#10144](https://github.com/emqx/emqx/pull/10144) 为 emqx 可执行文件加入 `-setcookie` 标志,以避免由于 home 目录只读,导致 emqx cli 所提供的 `emqx ctl` 等命令在执行时出现的一些问题。修复 [#10142](https://github.com/emqx/emqx/issues/10142)。 - [#10157](https://github.com/emqx/emqx/pull/10157) 修复在创建新的监听器时,没有正确应用速率限制默认配置的问题。