Webinar
EMQ「技术之夏」直播季火热来袭!| 立即报名
enterprise 5.0.1 更新日志
增强
- #10019 为 QUIC 监听器添加更多底层调优选项。
- #10059 规则引擎 API 在出错时返回用户可读的错误信息而不是原始的异常堆栈信息。
- #9213 在 Helm Chart 中支持 PodDisruptionBudget。
- #9949 QUIC 支持多流传输与 TLS。
- #9932 添加 TDengine 数据桥接。
- #9967 新增 TLS 配置项
hibernate_after
,通过在闲置一段时间后休眠 TLS 进程以减少其内存占用,默认: 5s 。
修复
- #10009
GET /trace/:name/log
API 添加 bytes
参数校验,长度不超过 32 位有符号整数。
- #10015 执行 CLI 时,如果节点 cookie 配置错误则快速抛出错误。
在此修复前,即使 cookie 配置错误,EMQX 命令仍然会尝试去 ping EMQX 节点,
并得到一个 'Node xxx not responding to pings' 的错误。
修复后,如果发现 cookie 不一致,立即打印不一致的错误信息并退出。
- #10020 修复使用异步和批量配置的桥接计数不准确的问题。
- #10021 修正执行
emqx_ctl cluster join
命令时,目标节点未运行时的错误信息。
- #10032 当集群中某些节点上的资源仍处于 初始化/连接中 状态时,调用
/bridges
API 获取 metrics 时将因为没有 metrics 数据而崩溃,此修复将忽略没有 metrics 数据的资源。
- #10041 为 InfluxDB 桥接配置项
write_syntax
描述文档添加了整数占位符注释说明。
另外在配置中支持 timestamp
使用一个常量。
- #10042 当 core 节点离开集群时,改进 replicant 节点的行为。
以前,直到所有 core 节点全部起来前, replicant 节点无法重新平衡与 core 节点的连接。
该情况会打印以下日志:
[error] line: 182, mfa: mria_lb:list_core_nodes/1, msg: mria_lb_core_discovery divergent cluster
。
- #10054 修复了对于已有的Data Bridge进行测试连接时需要手工输入一遍密码的问题。
- #10058 优化未使用的 QUIC TLS 选项。
QUIC 监听器只保留以下 TLS 选项:
- cacertfile
- certfile
- keyfile
- verify
- #10076 修复 Webhook 桥接的一个异常处理:连接超时错误发生后,发生错误的请求可以被重试。
在此修复前,连接超时后,被当作不可重试类型的错误处理,导致请求被丢弃。
- #10078 修复了无效的 QUIC 监听器设置可能导致 segfault 的问题。
- #10084 修正将运行不同 EMQX 版本的core节点加入集群的问题。
- #10086 HTTP 客户端库
ehttpc
升级到 0.4.7。
在升级前,如果 HTTP 客户端,例如 认证,授权,webhook 等配置中使用了content-type HTTP 头,但是没有配置 body,则可能会发生异常。
详情见 ehttpc PR#44。
- #9939 允许
emqx ctl cluster join
命令在 Mnesia 启动前调用。
在此修复前, EMQX 的 replicant
类型节点无法使用 manual
集群发现策略。
- #9958 修复
clients
API 在 Client ID 不存在时返回的错误码和错误提示。
- #9961 在 bin/emqx 脚本中,避免在运行非启动命令时解析 emqx.conf 来获取节点名称和 cookie。
- #9974 Statsd 和 prometheus 使用跟 Dashboard 相同的内存用量数据源。
在此修复前,内存的总量和用量统计使用了过时的(在容器环境中不准确)的数据源。
- #9997 修复生成 Swagger API 时没有遵循标准将元数据字段
deprecated
设置为布尔值的问题。
- #10007 Kafka 桥接的配置参数
memory_overload_protection
默认值从 true
改成了 false
。
尽管内存过载后消息被丢弃会产生日志和计数,如果没有基于这些日志或计数的告警,系统管理员可能无法及时发现消息被丢弃。
当前更好的选择是:让管理员显式的配置该项,迫使他们理解这个配置的好处以及风险。
- #10087 往 InfluxDB 中插入数据时,如果时间戳为空(未定义),则使用默认的占位符
${timestamp}
。
在此修复前,如果时间戳字段没有设置,InfluxDB 桥接使用了一个错误的时间戳。