Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

5.8.4 Release Notes #2782

Open
wants to merge 1 commit into
base: release-5.8
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions en_US/changes/breaking-changes-ce-5.8.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Incompatible Changes in EMQX 5.8

## v5.8.4

- [#14360](https://github.com/emqx/emqx/pull/14360) When requesting Prometheus metrics in JSON format, now the `client` top-level key will always be an array of JSON objects instead of a single JSON object.

## v5.8.3

- [#14305](https://github.com/emqx/emqx/pull/14305) Removed support of md4, md5 and ripemd160 in authentication as they are not compliant with [NIST Secure Hash Standard](https://www.nist.gov/publications/secure-hash-standard).
Expand Down
87 changes: 87 additions & 0 deletions en_US/changes/changes-ce-v5.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,92 @@
# EMQX Open Source Version 5

## 5.8.4

### Enhancements

- [#14369](https://github.com/emqx/emqx/pull/14369) Introduced two size-related functions in the rule engine:
- `is_empty` : return `true` if the map or array is empty
- `map_size` : return the size of a map


- [#14360](https://github.com/emqx/emqx/pull/14360) Added listener shutdown counts labeled by shutdown reason to Prometheus metrics, under the `emqx_client_disconnected_reason` counters.

Example output:

```
emqx_client_disconnected_reason{node="[email protected]",reason="takenover"} 1
emqx_client_disconnected_reason{node="[email protected]",reason="kicked"} 1
```

Currently, this feature is limited to TCP and TLS listeners only.

- [#14353](https://github.com/emqx/emqx/pull/14353) Make session rebalance and evacuation more robust. Previously, session evacuation could enter a dead loop after some clustering errors.

- [#14269](https://github.com/emqx/emqx/pull/14269) Added `etc/base.hocon` config file.

In this release, we introduced a new configuration file, `etc/base.hocon`, to enhance configuration management and clarity.

Previously, since emqx.conf was the only place for manually crafted configurations, and because it sits at the top-most layer
of the configuration override system, it caused some confusion.
While mutable (not read-only) configurations set in `emqx.conf` could be changed through the UI, API, or CLI and take effect immediately,
those changes would not persist after a node restart — leading to inconsistent behavior.

To address this, we’ve added etc/base.hocon as a foundational configuration layer.
The updated configuration precedence order, from top to bottom, is as follows:

1. Environment variables
2. `etc/emqx.conf`
3. `data/configs/cluster.hocon`
4. `etc/base.hocon`

The `etc/base.hocon` file serves as the base layer for configurations.
While settings defined here can still be modified after the node starts,
this layer ensures consistent override behavior.

- [#14247](https://github.com/emqx/emqx/pull/14247) Write client attribute named `tns` to log messages if such client attribute exists.

- [#13739](https://github.com/emqx/emqx/pull/13739) Support clear monitor (statistics) data for the whole cluster.

Send `DELETE` request to endpoint `api/v5/monitor` to clear all collected monitoring metrics.

### Bug Fixes

- [#14429](https://github.com/emqx/emqx/pull/14429) Fixed handling of rule action metrics when an underlying connector is disabled. Before the fix, the failed counter would be bumped twice for each message the action received (one categorized under `unknown` and another under `out_of_service`). Now, only `out_of_service` is bumped.

- [#14424](https://github.com/emqx/emqx/pull/14424) Eliminated a false warning level "unexpected_info" log message.

- [#14376](https://github.com/emqx/emqx/pull/14376) Made config import to tolerate non-existing log file dir.

If log file handler is configured with a non-existing dir, the default value it will fallback to the default value `"${EMQX_LOG_DIR}"`.

- [#14371](https://github.com/emqx/emqx/pull/14371) Fix clientid override expression to render `undefined` as empty string.

- [#14362](https://github.com/emqx/emqx/pull/14362) Refactored data integration resource manager state machine, which should eliminate a few race conditions that could lead to inconsistent states.

- [#14357](https://github.com/emqx/emqx/pull/14357) Fix `bin/emqx help` command.

- [#14319](https://github.com/emqx/emqx/pull/14319) Refactored resource management internal state machine. As consequence, some race condition bugs have been eliminated. One such example is the HTTP action, which, when under incoming traffic and when its health check flap, may produce errors like the following:

```
2024-11-29T14:58:17.994119+00:00 [error] msg: action_not_found, connector: <<"connector:http:a">>, action_id: <<"action:http:a:connector:http:a">>
```

- [#14318](https://github.com/emqx/emqx/pull/14318) Fixed the initialization of the HTTP connector state. When there was incoming traffic being handled by an HTTP action and its underlying connector restarted, cryptic crashes could be seen in the logs mentioning `function_clause`.

Example:

```
20:42:36.850 [error] msg: "resource_exception", info: #{error => {error, function_clause}, id => <<"action:http:a:connector:http:a">>, name => call_query, ...
```

- [#14317](https://github.com/emqx/emqx/pull/14317) Prevent potential issues where APIs involving paging may return empty pages, in case the internal APIs will be subtly misused in the future.

- [#14272](https://github.com/emqx/emqx/pull/14272) `auto_subscribe` configuration loaded via CLI shows success but fails to take effect.

- [#14267](https://github.com/emqx/emqx/pull/14267) Do not redact secrets in logs and HTTP responses when the secret string is a file path (`file:///path/to/the/secret`).

- [#14248](https://github.com/emqx/emqx/pull/14248) Fixed a class of issues where intermittent connectivity issues between cluster nodes could potentially cause partial loss of cluster-wide routing table state.

## 5.8.3

*Release Date: 2024-12-05*
Expand Down