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
todelivery_rate
in the configuration ofretainer
.#11137 Refactors the dashboard listener configuration to use a nested
ssl_options
field for ssl settings.#11138 - Change k8s
api_server
default value fromhttp://127.0.0.1:9091
tohttps://kubernetes.default.svc:443
emqx_ctl conf show cluster
no 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/limiter
api fromswagger.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 ofexpected_type
withexpected
.#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 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
payload
will be duplicated in the below situations:- Use a
foreach
sentence without theas
sub-expression and select all fields(use the*
or omitted thedo
sub-expression)
For example:
FOREACH payload.sensors FROM "t/#"
- Select the
payload
field and all fields
For example:
SELECT payload.sensors, * FROM "t/#"
- Use a
#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.