v5.0.21
Enhancements
#10022 Start releasing Rocky Linux 9 (compatible with Enterprise Linux 9) and MacOS 12 packages
#10139 Add
extraVolumeMounts
to EMQX Helm Chart, it will have the ability to mount the user-own files into the EMQX instance, for example, ACL rule files as mentioned in #9052Done of #10116
#9893 When connecting with the flag
clean_start=false
, EMQX will filter out messages that published by banned clients. Previously, the messages sent by banned clients may still be delivered to subscribers in this scenario.#9986 For helm charts, add MQTT ingress bridge; and removed stale
mgmt
references.#10123 Improve the performance of
/bridges
API. Earlier, when the number of nodes in the cluster was large or the node was busy, the API may have a request timeout.#9998 Redact the HTTP request body in the authentication error logs for security reasons.
Bug Fixes
- #10013 Fix return type structure for error case in API schema for
/gateways/:name/clients
. u #10014 In dashboard API for
/monitor(_current)/nodes/:node
return404
instead of400
if node does not exist.#10026 Metrics are now only exposed via the /bridges/:id/metrics endpoint. Metrics are no longer returned in other API operations such as getting the list of all bridges, or in the response when a bridge has been created.
#10027 Allow setting node name from
EMQX_NODE__NAME
when running in docker. Prior to this fix, onlyEMQX_NODE_NAME
is allowed.#10050 Ensure Bridge API returns
404
status code consistently for resources that don't exist.#10052 Improve daemon mode startup failure logs.
Before this change, it was difficult for users to understand the reason for EMQX 'start' command failed to boot the node. The only information they received was that the node did not start within the expected time frame, and they were instructed to boot the node with 'console' command in the hope of obtaining some logs. However, the node might actually be running, which could cause 'console' mode to fail for a different reason.
With this new change, when daemon mode fails to boot, a diagnosis is issued. Here are the possible scenarios:
- If the node cannot be found from
ps -ef
, the user is instructed to find information in log fileserlang.log.*
. - If the node is found to be running but not responding to pings, the user is advised to check if the host name is resolvable and reachable.
- If the node is responding to pings, but the EMQX app is not running, it is likely a bug. In this case, the user is advised to report a Github issue.
- If the node cannot be found from
#10055 Fix: configuration parameter
mqtt.max_awaiting_rel
had no effect.#10056 Fix
/bridges
API status code.- Return
400
instead of403
in case of removing a data bridge that is dependent on an active rule. - Return
400
instead of403
in case of calling operations (start|stop|restart) when Data-Bridging is not enabled.
- Return
#10066 Improve error messages for
/briges_probe
and[/node/:node]/bridges/:id/:operation
API calls to make them more readable. And set HTTP status code to400
instead of500
.#10074 Check if type in
PUT /authorization/sources/:type
matchestype
given in body of request.#10079 Fix description of
shared_subscription_strategy
.#10085 Consistently return
404
for all requests on non existent source in/authorization/sources/:source[/*]
.#10098 A crash with an error in the log file that happened when the MongoDB authorization module queried the database has been fixed.
#10100 Fix channel crash for slow clients with enhanced authentication. Previously, when the client was using enhanced authentication, but the Auth message was sent slowly or the Auth message was lost, the client process would crash.
#10107 For operations on
bridges API
ifbridge-id
is unknown we now return404
instead of400
. Also a bug was fixed that caused a crash if that was a node operation. Additionally we now also check if the given bridge is enabled when doing the cluster operationstart
. Affected endpoints:- [cluster]
/bridges/:id/:operation
, - [node]
/nodes/:node/bridges/:id/:operation
, whereoperation
is one of[start|stop|restart]
. Moreover, for a node operation, EMQX checks if node name is in our cluster and return404
instead of501
.
- [cluster]
#10117 Fix an error occurring when a joining node doesn't have plugins that are installed on other nodes in the cluster. After this fix, the joining node will copy all the necessary plugins from other nodes.
#10118 Fix problems related to manual joining of EMQX replicant nodes to the cluster. Previously, after manually executing joining and then leaving the cluster, the
replicant
node can only run normally after restarting the node after joining the cluster again.#10119 Fix crash when
statsd.server
is set to an empty string.#10124 The default heartbeat period for MongoDB has been increased to reduce the risk of too excessive logging to the MongoDB log file.
#10130 Fix garbled config display in dashboard when the value is originally from environment variables. For example,
env EMQX_STATSD__SERVER='127.0.0.1:8124' . /bin/emqx start
results in unreadable string (not '127.0.0.1:8124') displayed in Dashboard's Statsd settings page. Related PR: HOCON#234.#10132 Fix some error logs generated by
systemctl stop emqx
command. Prior to the fix, the command was not stopping jq and os_mon applications properly.#10144 Add
-setcookie
emulator flag when invokingemqx ctl
to prevent problems with emqx cli when home directory is read only. Fixes #10142.#10157 Fixed default rate limit configuration not being applied correctly when creating a new listener.