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_ratetodelivery_ratein the configuration ofretainer.#11137 Refactors the dashboard listener configuration to use a nested
ssl_optionsfield for ssl settings.#11138 - Change k8s
api_serverdefault value fromhttp://127.0.0.1:9091tohttps://kubernetes.default.svc:443emqx_ctl conf show clusterno longer displays irrelevant configuration items, such as whendiscovery_strategy=static, it will not display configuration information related toetcd/k8s/dns.- Remove
zones(deprecated config key) fromemqx_ctl conf show_keys
#11165 Remove
/configs/limiterapi fromswagger.json, only the api documentation was removed, and the/configs/limiterapi 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
erlclouddependency.#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 ofexpected_typewithexpected.#11126 Rule metrics for async mode bridges will set failure counters correctly now.
#11134 Fix the value of the uppercase
authorizationheader 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_lbwas trying to ping both stopped and running replicant nodes, which might result in timeout errors. Mria PR - use
null_copiesstorage when copying$mria_rlog_synctable. This fix has no effect on EMQX for now, as$mria_rlog_syncis only used inmria: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 callingjson_decode(payload)first.#11172 Fix the
payloadwill be duplicated in the below situations:- Use a
foreachsentence without theassub-expression and select all fields(use the*or omitted thedosub-expression)
For example:
FOREACH payload.sensors FROM "t/#"- Select the
payloadfield and all fields
For example:
SELECT payload.sensors, * FROM "t/#"- Use a
#11174 Fixed the encoding of the
serverkey 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.