增强
#13317 增加了一种新的针对授权源的指标类型:
ignore
。当授权源尝试对请求进行授权但遇到授权源不适用或出现错误导致无法决定结果的情况时,此指标计数将递增。#13336 使用 CSV 或 JSON 格式的引导文件在空的 EMQX 节点或集群的内置数据库中初始化认证数据。此功能引入了新的配置项
bootstrap_file
和bootstrap_type
。#13348 在日志配置中新增字段
payload_encode
,用于确定日志数据中 payload 的格式。#13436 在 JWKS 请求中添加了自定义请求头的选项。
#13507 在规则引擎和变量表达式中引入了新的内置函数
getenv
,用于访问环境变量。此函数遵循以下限制:- 在从操作系统环境变量读取之前,会添加前缀
EMQXVAR_
。例如,getenv('FOO_BAR')
将读取EMQXVAR_FOO_BAR
。 - 一旦从操作系统环境加载,这些值就是不可变的。
- 在从操作系统环境变量读取之前,会添加前缀
#13521 解决了 LDAP 查询超时将导致底层连接不可用的问题,该问题可能会导致后续查询返回过时结果的情况。此修复确保系统在超时情况下能够自动重新连接。
#13528 对数据集成中导致不可恢复错误的事件应用了日志截流。
#13548 现在 EMQX 可以选择在通过 REST API 更新插件配置时调用
on_config_changed/2
回调函数。预期该回调函数由<PluginName>_app
模块导出。 例如,如果插件名称和版本为my_plugin-1.0.0
,则回调函数为my_plugin_app:on_config_changed/2
。#13386 支持在空的 EMQX 节点或集群上使用CSV 格式的引导文件初始化封禁客户端列表。用于指定文件路径的相应配置条目是
banned.bootstrap_file
。该文件是一个以,
为分隔符的CSV文件,第一行必须是标题行。所有有效的标题如下:- as :: 必需
- who :: 必需
- by :: 可选
- reason :: 可选
- at :: 可选
- until :: 可选
详细信息请参阅配置手册中关于每个字段的说明。
除标题行外,文件中的每一行必须包含与标题行相同数量的列,且列可以省略,其值为
undefined
。#13518 支持在 Kafka 生产者动作的
topic
配置中使用模板。需确保在 Kafka 中预先存在这些主题。如果消息发送到一个不存在的主题(如果 Kafka 禁用了主题自动创建),则该消息将失败,并显示不可恢复的错误。此外,如果消息缺少足够的信息来匹配配置的模板,也会导致不可恢复的错误。例如,模板为
t-${t}
,但消息上下文中缺少t
的定义。详细信息,参考 配置 Kafka 动态主题。此功能也适用于 Azure Event Hubs 和 Confluent 平台的生产者集成。
#13504 为
scram
认证机制引入了 HTTP 后端。该后端实现利用外部网络资源提供 SCRAM 认证数据,包括客户端存储的密钥、服务器密钥和盐。它还支持额外的认证和授权扩展字段,如
is_superuser
、client_attrs
、expire_at
和acl
。注意:此增强并非关于 RFC 7804 (盐挑战响应 HTTP 认证机制)规范的实现。
#13441 加强了 CoAP 网关连接模式。UDP 连接现在将始终通过
clientid
绑定到相应的网关连接。
Bug Fixes
- #13222 解决了与
CONNECT
数据包中遗嘱消息相关的标志检查和错误处理问题。 详细的规范,请参考:- MQTT-v3.1.1-[MQTT-3.1.2-13], MQTT-v5.0-[MQTT-3.1.2-11]
- MQTT-v3.1.1-[MQTT-3.1.2-14], MQTT-v5.0-[MQTT-3.1.2-12]
- MQTT-v3.1.1-[MQTT-3.1.2-15], MQTT-v5.0-[MQTT-3.1.2-13]
- #13307 更新了
ekka
库至版本 0.19.5。该版本的ekka
使用了mria
0.8.8,增强了自动愈合功能。先前的自动愈合仅在所有核心节点可访问时生效。此更新允许在大多数核心节点处于运行状态时应用自动修复。详情请参考 Mria PR。 #13334 实现了对 MQTT v3.1.1 CONNECT 数据包中
PasswordFlag
的严格模式检查,以符合协议规范。注意:此检查仅在严格模式下执行,以确保与现有错误兼容性。#13344 修复了当接收 API 请求的节点未能维持与指定
clientid
的连接时,POST /clients/:clientid/subscribe/bulk
API无法正常工作的问题。- #13358 修复了
authn_complete_event
事件中reason
字段显示不正确的问题。 - #13375 将
infinity
作为默认值添加到监听器配置字段max_conn_rate
、messages_rate
和 `bytes_rate。 - #13382 更新了
emqtt
库至版本 0.4.14,解决了emqtt_pool
无法重用处于不一致状态的池的问题。 - #13389 修复了
pbkdf2
中Derived Key Length
可能被设置为负整数的问题。 - #13389 修复了授权规则中可能会错误解析主题的问题。
- #13393 修复了节点加入集群后插件应用程序无法重新启动的问题,导致钩子未能正确安装并引起状态不一致。
- #13398 修复了使用命令行重新加载用于授权的内置数据库时,ACL 规则被错误地清除的问题。
- #13403 解决了一个安全问题,该问题导致环境变量配置覆盖会意外记录密码。此修复确保环境变量中的密码不会被记录。
- #13408 解决了因认证尝试中使用无效盐或密码类型而触发的
function_clause
崩溃问题。此修复增强了错误处理,更好地处理涉及不正确盐或密码类型的认证失败。 - #13419 修复了由
/configs
API 引起崩溃的日志消息内容显示混乱的问题,此修复确保与 API 调用相关的日志消息清晰易懂。 - #13422 解决了无法将选项
force_shutdown.max_heap_size
设置为 0 以禁用此调试的问题。 - #13442 解决了动作和 Source 的健康检查间隔配置未被遵守的问题。之前,EMQX 忽略了为动作指定的健康检查间隔,并使用连接器的间隔。此修复确保 EMQX 现在正确使用为动作/ Source 配置的健康检查间隔,允许独立和准确的健康监控频率。
- #13503 修复了连接器在初始启动时未遵循配置的健康检查间隔的问题,需要更新或重启以应用正确的间隔。
- #13515 修复了当节点因某些原因宕机时,同一客户端无法订阅相同的排它主题的问题。
- #13527 在规则引擎中修复了一个问题,即当
$bridges/...
被包含在FROM
子句中时,执行消息发布事件的 SQL 测试始终返回空结果。 - #13541 修复了禁用监听器的 CRL 检查需要监听器重启才能生效的问题。
- #13305 改进了 Redis 连接器的错误处理。之前,如果 Redis 连接器的 Redis 模式设置为
single
或sentinel
,且未提供用户名或密码,那么在 Dashboard 中进行连接器测试时会始终遇到连接超时错误。此更新确保用户现在能在这种情况下收到详细的错误信息。此外,还为所有 Redis 连接器类型添加了更详细的错误信息,以增强诊断和故障排除能力。 - #13327 修复了 Kafka、Confluent 和 Azure Event Hubs 集成中的问题,如果多个动作复用同一个 connector 并配置了相同的主题,当删除或禁用其中一个动作时可能会相互干扰,比如影响其他动作的数据写入。
- #13345 改进了 Schema Registry 的错误消息清晰度,现在在创建 Schema 时,如果名称超出长度限制或包含无效格式,将提供更明确的反馈。
- #13420 增加了对 Schema 验证配置的校验,防止在配置 Schema 验证时使用空主题过滤器列表。此前允许空列表可能导致创建缺乏实际功能的消息转换,因为它们不会应用于任何特定主题。
- #13543 修复了在 Schema Registry 中删除或更新 schema 后,Protobuf schemas 的内部缓存未能正确清理的问题。
- #13332 改进了错误消息,当 Amazon S3 连接器配置错误时,提供更具信息量且易于阅读的细节。
- #13552 添加了 EMQX 插件的启动超时限制,默认超时时间为 10 秒。在此更新之前,问题插件在启动期间可能会导致运行时错误,从而可能导致主启动进程在 EMQX 停止和重新启动时出现挂起。