|
|
@@ -2,29 +2,28 @@
|
|
|
|
|
|
## Enhancements
|
|
|
|
|
|
-- [#10022](https://github.com/emqx/emqx/pull/10022) Start releasing Rocky Linux 9 (compatible with Enterprise Linux 9) and MacOS 12 packages
|
|
|
+- [#10022](https://github.com/emqx/emqx/pull/10022) Release installation packages for Rocky Linux 9 (compatible with Red Hat Enterprise Linux 9) and macOS 12 for Intel platform.
|
|
|
|
|
|
-- [#10139](https://github.com/emqx/emqx/pull/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](https://github.com/emqx/emqx/issues/9052)
|
|
|
- Done of [#10116](https://github.com/emqx/emqx/issues/10116)
|
|
|
+- [#10139](https://github.com/emqx/emqx/pull/10139) Add `extraVolumeMounts` to EMQX Helm Chart, you can mount user's own files to EMQX instance, such as ACL rule files mentioned in [#9052](https://github.com/emqx/emqx/issues/9052).
|
|
|
|
|
|
-- [#9893](https://github.com/emqx/emqx/pull/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.
|
|
|
+- [#9893](https://github.com/emqx/emqx/pull/9893) When connecting with the flag `clean_start=false`, EMQX will filter out messages that published by clients banned by the blacklist feature in the session.
|
|
|
+Previously, messages sent by clients banned by the blacklist feature could still be delivered to subscribers in this case.
|
|
|
|
|
|
-- [#9986](https://github.com/emqx/emqx/pull/9986) Add MQTT ingress to helm charts and update helm charts documentation
|
|
|
+- [#9986](https://github.com/emqx/emqx/pull/9986) Add MQTT ingress to helm charts and remove obsolete mgmt references.
|
|
|
|
|
|
-- [#10083](https://github.com/emqx/emqx/pull/10083) Add `DynamoDB` support for Data-Brdige.
|
|
|
+- [#9564](https://github.com/emqx/emqx/pull/9564) Implement Kafka Consumer Bridge, which supports consuming messages from Kafka and publishing them to MQTT topics.
|
|
|
|
|
|
-- [#9564](https://github.com/emqx/emqx/pull/9564) Implement Kafka Consumer bridge.
|
|
|
- Now it's possible to consume messages from Kafka and publish them to MQTT topics.
|
|
|
-
|
|
|
-- [#9881](https://github.com/emqx/emqx/pull/9881) Enhance the error logs related to InfluxDB connectivity health checks.
|
|
|
- Previously, if InfluxDB failed to pass the health checks using the specified parameters, the only message provided was "timed out waiting for it to become healthy".
|
|
|
- With the updated implementation, the error message will be displayed in both the logs and the dashboard, enabling easier identification and resolution of the issue.
|
|
|
+- [#9881](https://github.com/emqx/emqx/pull/9881) Improve error logging related to health checks for InfluxDB connections.
|
|
|
|
|
|
- [#10123](https://github.com/emqx/emqx/pull/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.
|
|
|
+Earlier, when the number of nodes in the cluster was large or the node was busy, the API may had a request timeout.
|
|
|
+
|
|
|
+- [#9998](https://github.com/emqx/emqx/pull/9998) Obfuscate request body in error log when using HTTP service for client authentication for security reasons.
|
|
|
+
|
|
|
+- [#10026](https://github.com/emqx/emqx/pull/10026) Metrics are now only exposed via the `/bridges/:id/metrics` endpoint, and no longer returned in other API operations.
|
|
|
+
|
|
|
+- [#10052](https://github.com/emqx/emqx/pull/10052) Improve startup failure logs in daemon mode.
|
|
|
|
|
|
-- [#9998](https://github.com/emqx/emqx/pull/9998) Redact the HTTP request body in the authentication error logs for security reasons.
|
|
|
|
|
|
## Bug Fixes
|
|
|
|
|
|
@@ -32,104 +31,57 @@
|
|
|
|
|
|
- [#10014](https://github.com/emqx/emqx/pull/10014) Ensure Monitor API `/monitor(_current)/nodes/:node` returns `404` instead of `400` if node does not exist.
|
|
|
|
|
|
-- [#10026](https://github.com/emqx/emqx/pull/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](https://github.com/emqx/emqx/pull/10027) Allow setting node name from `EMQX_NODE__NAME` when running in docker.
|
|
|
- Prior to this fix, only `EMQX_NODE_NAME` is allowed.
|
|
|
+- [#10027](https://github.com/emqx/emqx/pull/10027) Allow setting node name via environment variable `EMQX_NODE__NAME` in Docker.
|
|
|
|
|
|
- [#10050](https://github.com/emqx/emqx/pull/10050) Ensure Bridge API returns `404` status code consistently for resources that don't exist.
|
|
|
|
|
|
-- [#10052](https://github.com/emqx/emqx/pull/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](https://github.com/emqx/emqx/pull/10055) The configuration parameter `mqtt.max_awaiting_rel` was not functional and has now been corrected.
|
|
|
|
|
|
- [#10056](https://github.com/emqx/emqx/pull/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.
|
|
|
+ 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](https://github.com/emqx/emqx/pull/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](https://github.com/emqx/emqx/pull/10074) Check if type in `PUT /authorization/sources/:type` matches `type` given in body of request.
|
|
|
+- [#10074](https://github.com/emqx/emqx/pull/10074) Check if type in `PUT /authorization/sources/:type` matches `type` given in the request body.
|
|
|
|
|
|
-- [#10079](https://github.com/emqx/emqx/pull/10079) Fix description of `shared_subscription_strategy`.
|
|
|
+- [#10079](https://github.com/emqx/emqx/pull/10079) Fix wrong description about `shared_subscription_strategy`.
|
|
|
|
|
|
-- [#10085](https://github.com/emqx/emqx/pull/10085) Consistently return `404` for all requests on non existent source in `/authorization/sources/:source[/*]`.
|
|
|
+- [#10085](https://github.com/emqx/emqx/pull/10085) Consistently return `404` for all requests on non-existent source in `/authorization/sources/:source[/*]`.
|
|
|
|
|
|
-- [#10098](https://github.com/emqx/emqx/pull/10098) A crash with an error in the log file that happened when the MongoDB authorization module queried the database has been fixed.
|
|
|
+- [#10098](https://github.com/emqx/emqx/pull/10098) Fix an issue where the MongoDB connector crashed when MongoDB authorization was configured.
|
|
|
|
|
|
-- [#10100](https://github.com/emqx/emqx/pull/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.
|
|
|
+- [#10100](https://github.com/emqx/emqx/pull/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](https://github.com/emqx/emqx/pull/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`.
|
|
|
+- [#10107](https://github.com/emqx/emqx/pull/10107) For operations on Bridges API if `bridge-id` is unknown we now return `404` instead of `400`.
|
|
|
|
|
|
- [#10117](https://github.com/emqx/emqx/pull/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.
|
|
|
+After this fix, the joining node will copy all the necessary plugins from other nodes.
|
|
|
|
|
|
- [#10118](https://github.com/emqx/emqx/pull/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](https://github.com/emqx/mria/pull/128)
|
|
|
|
|
|
- [#10119](https://github.com/emqx/emqx/pull/10119) Fix crash when `statsd.server` is set to an empty string.
|
|
|
|
|
|
- [#10124](https://github.com/emqx/emqx/pull/10124) The default heartbeat period for MongoDB has been increased to reduce the risk of too excessive logging to the MongoDB log file.
|
|
|
|
|
|
- [#10130](https://github.com/emqx/emqx/pull/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](https://github.com/emqx/hocon/pull/234).
|
|
|
-
|
|
|
-- [#10132](https://github.com/emqx/emqx/pull/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](https://github.com/emqx/emqx/pull/10144) Add `-setcookie` emulator flag when invoking `emqx ctl` to prevent problems with emqx cli when home directory is read only. Fixes [#10142](https://github.com/emqx/emqx/issues/10142).
|
|
|
+- [#10132](https://github.com/emqx/emqx/pull/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.
|
|
|
|
|
|
-- [#10154](https://github.com/emqx/emqx/pull/10154) Change the default `resume_interval` for bridges and connectors to be
|
|
|
- the minimum of `health_check_interval` and `request_timeout / 3`.
|
|
|
- Also exposes it as a hidden configuration to allow fine tuning.
|
|
|
+- [#10144](https://github.com/emqx/emqx/pull/10144) Fix an issue where emqx cli failed to set the Erlang cookie when the emqx directory was read-only.
|
|
|
|
|
|
- Before this change, the default values for `resume_interval` meant
|
|
|
- that, if a buffer ever got blocked due to resource errors or high
|
|
|
- message volumes, then, by the time the buffer would try to resume its
|
|
|
- normal operations, almost all requests would have timed out.
|
|
|
+- [#10154](https://github.com/emqx/emqx/pull/10154) Change the default `resume_interval` for bridges and connectors to be the minimum of `health_check_interval` and `request_timeout / 3` to resolve issue of request timeout.
|
|
|
|
|
|
-- [#10157](https://github.com/emqx/emqx/pull/10157) Fixed default rate limit configuration not being applied correctly when creating a new listener.
|
|
|
+- [#10157](https://github.com/emqx/emqx/pull/10157) Fix default rate limit configuration not being applied correctly when creating a new listener.
|
|
|
|
|
|
- [#10237](https://github.com/emqx/emqx/pull/10237) Ensure we return `404` status code for unknown node names in `/nodes/:node[/metrics|/stats]` API.
|
|
|
|
|
|
-- [#10251](https://github.com/emqx/emqx/pull/10251) Consider bridges referenced in `FROM` rule clauses as dependencies.
|
|
|
-
|
|
|
- Before this fix, when one tried to delete an ingress rule referenced in an action like `select * from "$bridges/mqtt:ingress"`, the UI would not trigger a warning about dependent rule actions.
|
|
|
+- [#10251](https://github.com/emqx/emqx/pull/10251) Fix an issue where rule dependencies were not prompted when deleting an ingress-type bridge in use.
|
|
|
|
|
|
- [#10313](https://github.com/emqx/emqx/pull/10313) Ensure that when the core or replicant node starting, the `cluster-override.conf` file is only copied from the core node.
|
|
|
- Previously, when sorting nodes by startup time, the core node may have copied this file from the replicant node.
|
|
|
-
|
|
|
-- [#10314](https://github.com/emqx/emqx/pull/10314) Fix /monitor_current API so that it only looks at the current node.
|
|
|
- Fix /stats API to not crash when one or more nodes in the cluster are down.
|
|
|
-
|
|
|
-- [#10327](https://github.com/emqx/emqx/pull/10327) Don't increment 'actions.failed.unknown' rule metrics counter upon receiving unrecoverable bridge errors.
|
|
|
- This counter is displayed on the dashboard's rule overview tab ('Action statistics' - 'Unknown').
|
|
|
- The fix is only applicable for synchronous bridges, as all rule actions for asynchronous bridges
|
|
|
- are counted as successful (they increment 'actions.success' which is displayed as 'Action statistics' - 'Success').
|
|
|
|
|
|
-- [#10095](https://github.com/emqx/emqx/pull/10095) Stop MySQL client from bombarding server repeatedly with unnecessary `PREPARE` queries on every batch, trashing the server and exhausting its internal limits. This was happening when the MySQL bridge was in the batch mode.
|
|
|
+- [#10327](https://github.com/emqx/emqx/pull/10327) Don't increase “actions.failed.unknown” rule metrics counter upon receiving unrecoverable data bridge errors.
|
|
|
|
|
|
- Ensure safer and more careful escaping of strings and binaries in batch insert queries when the MySQL bridge is in the batch mode.
|
|
|
+- [#10095](https://github.com/emqx/emqx/pull/10095) Fix an issue where when the MySQL connector was in batch mode, clients would keep querying the server with unnecessary `PREPARE` statements on each batch, possibly causing server resource exhaustion.
|