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

broker 5.0.21 更新日志

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 #9052

    Done 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 return 404 instead of 400 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, only EMQX_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 files erlang.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.
  • #10055 Fix: configuration parameter mqtt.max_awaiting_rel had no effect.

  • #10056 Fix /bridges API status code.

    • Return 400 instead of 403 in case of removing a data bridge that is dependent on an active rule.
    • Return 400 instead of 403 in case of calling operations (start|stop|restart) when Data-Bridging is not enabled.
  • #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 to 400 instead of 500.

  • #10074 Check if type in PUT /authorization/sources/:type matches type 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 if bridge-id is unknown we now return 404 instead of 400. 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 operation start . Affected endpoints:

    • [cluster] /bridges/:id/:operation,
    • [node] /nodes/:node/bridges/:id/:operation, where operation is one of [start|stop|restart]. Moreover, for a node operation, EMQX checks if node name is in our cluster and return 404 instead of 501.
  • #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.

    Mria PR

  • #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 invoking emqx 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.