EMQX 采用商业源码许可证,加速 MQTT + AI 创新

broker 5.1.1 更新日志

v5.1.1

Enhancements

  • #10667 The MongoDB connector and bridge have been refactored to a separate app to improve code structure.

  • #11115 Added info logs to indicate when buffered messages are dropped due to time-to-live (TTL) expiration.

  • #11133 Rename deliver_rate to delivery_rate in the configuration of retainer.

  • #11137 Refactors the dashboard listener configuration to use a nested ssl_options field for ssl settings.

  • #11138 - Change k8s api_server default value from http://127.0.0.1:9091 to https://kubernetes.default.svc:443

    • emqx_ctl conf show cluster no longer displays irrelevant configuration items, such as when discovery_strategy=static, it will not display configuration information related to etcd/k8s/dns.
    • Remove zones(deprecated config key) from emqx_ctl conf show_keys
  • #11165 Remove /configs/limiter api from swagger.json, only the api documentation was removed, and the /configs/limiter api functionalities have not been changed.

  • #11166 Added 3 random SQL functions to the rule engine.

    • random(): Generates a random number between 0 and 1 (0.0 =< X < 1.0).
    • uuid_v4(): Generates a random UUID (version 4) string.
    • uuid_v4_no_hyphen(): Generates a random UUID (version 4) string without hyphens.
  • #11180 Adding a new configuration API /configs(GET/PUT) that supports to reload the hocon format configuration file.

  • #11020 Upgraded emqtt dependency to avoid sensitive data leakage in the debug log.

  • #11135 Improve time offset parser in rules engine and return uniform error codes.

Bug Fixes

  • #11004 Do not allow wildcards for destination topic in rewrite rules.

  • #11026 Addressed an inconsistency in the usage of 'div' and 'mod' operations within the rule engine. Previously, the 'div' operation was only usable as an infix operation and 'mod' could only be applied through a function call. With this change, both 'div' and 'mod' can be used via function call syntax and infix syntax.

  • #11037 When starting an HTTP connector EMQX now returns a descriptive error in case the system is unable to connect to the remote target system.

  • #11039 Fixed database number validation for Redis connector. Previously negative numbers were accepted as valid database numbers.

  • #11074 Fix to adhere to Protocol spec MQTT-5.0 [MQTT-3.8.3-4].

  • #11094 Fixed an issue where connection errors in Kafka Producer would not be reported when reconnecting the bridge.

  • #11103 Updated erlcloud dependency.

  • #11106 Added a validation for the maximum number of pool workers of a bridge.

    Now the maximum amount is 1024 to avoid large memory consumption from an unreasonable number of workers.

  • #11118 Ensure that validation errors in REST API responses are slightly less confusing. Now, if there are out-of-range errors, they will be presented as {"value": 42, "reason": {"expected": "1..10"}, ...}, replacing the previous usage of expected_type with expected.

  • #11126 Rule metrics for async mode bridges will set failure counters correctly now.

  • #11134 Fix the value of the uppercase authorization header is not obfuscated.

  • #11139 The Redis connector has been refactored to its own Erlang application to improve the code structure.

  • #11145 Add several fixes and improvements in Ekka and Mria.

    Ekka:

    • improve cluster discovery log messages to consistently describe actual events Ekka PR
    • remove deprecated cluster auto-clean configuration parameter (it has been moved to Mria) Ekka PR

    Mria:

    • ping only running replicant nodes. Previously, mria_lb was trying to ping both stopped and running replicant nodes, which might result in timeout errors. Mria PR
    • use null_copies storage when copying $mria_rlog_sync table. This fix has no effect on EMQX for now, as $mria_rlog_sync is only used in mria:sync_transaction/2,3,4, which is not utilized by EMQX. Mria PR
  • #11148 Fix when a node has left the cluster, other nodes still try to synchronize configuration update operations to it.

  • #11150 Wait for Mria table when emqx_psk app is being started to ensure that PSK data is synced to replicant nodes even if they don't have init PSK file.

  • #11151 The MySQL connector has been refactored to its own Erlang application to improve the code structure.

  • #11158 Wait for Mria table when the mnesia backend of retainer starts to avoid a possible error of the retainer when joining a cluster.

  • #11162 Fixed an issue in webhook bridge where, in async query mode, HTTP status codes like 4XX and 5XX would be treated as successes in the bridge metrics.

  • #11164 Reintroduced support for nested (i.e.: ${payload.a.b.c}) placeholders for extracting data from rule action messages without the need for calling json_decode(payload) first.

  • #11172 Fix the payload will be duplicated in the below situations:

    • Use a foreach sentence without the as sub-expression and select all fields(use the * or omitted the do sub-expression)

    For example:

    FOREACH payload.sensors FROM "t/#"

    • Select the payload field and all fields

    For example:

    SELECT payload.sensors, * FROM "t/#"

  • #11174 Fixed the encoding of the server key coming from an ingress MQTT bridge.

    Before the fix, it was being encoded as a list of integers corresponding to the ASCII characters of the server string.