10 KiB
5.7.1
Release Date: 2024-06-26
Enhancements
-
#12983 Add new rule engine event
$events/client_check_authn_complete
for authentication completion event. -
#13175 Added the
disable_prepared_statements
option for Postgres-based connectors.This option is to be used with endpoints that do not support the prepared statements session feature, such as PGBouncer and Supabase in Transaction mode.
-
#13180 Improved client message handling performance when EMQX is running on Erlang/OTP 26 and increased message throughput by 10% in fan-in mode.
-
#13191 Upgraded EMQX Docker images to run on Erlang/OTP 26.
EMQX had been running on Erlang/OTP 26 since v5.5 except for docker images which were on Erlang/OTP 25. Now all releases are on Erlang/OTP 26. This upgrade fixed the following known issue:
When an older version of EMQX joins a cluster with newer version nodes, the Schema Registry of the older version node may encounter an issue, emitting logs like the following:
Error loading module '$schema_parser___CiYAWBja87PleCyKZ58h__SparkPlug_B_BUILT-IN':, This BEAM file was compiled for a later version of the runtime system than the current (Erlang/OTP 25).
This issue is fixed in the newer version. However, for older versions, a manual step is required. Execute the following command on one of the clustered nodes before the older version EMQX joins the cluster:
emqx eval 'lists:foreach(fun(Key) -> mnesia:dirty_delete(emqx_ee_schema_registry_protobuf_cache_tab, Key) end, mnesia:dirty_all_keys(emqx_ee_schema_registry_protobuf_cache_tab)).'
If the older version of EMQX is already in the cluster, execute the above command and restart the affected node.
-
#13242 Significantly increased the startup speed of EMQX Dashboard listener.
-
#13172 Added a rule function
map_to_redis_hset_args
to help preparing redis HSET (or HMSET) multi-fields values.For example, if
payload.value
is a map of multiple data fields, this ruleSELECT map_to_redis_hset_args(payload.value) as hset_fields FROM "t/#"
can preparehset_fields
for redis action to render the command template likeHMSET name1 ${hset_fields}
. -
#13210 EMQX now validates that referenced schemas and message types exist in the Schema Registry when inserting or updating a Schema Validation.
-
#13211 Enhanced TLS listener to support more flexible TLS verifications.
-
partial_chain
support: If the optionpartial_chain
is set totrue
, connections with incomplete certificate chains are allowed. Check the Configuration Manual for more details. -
Certificate Key Usage validation: Added support for required Extended Key Usage as defined in rfc5280. A new option (
verify_peer_ext_key_usage
) has been introduced to enforce specific key usages (such as "serverAuth") in peer certificates during the TLS handshake. This enhances security by ensuring certificates are used for their intended purposes, for example, "serverAuth,OID:1.3.6.1.5.5.7.3.2". Check the Configuration Manual for more details.
-
-
#13274 The RocketMQ connector now supports configuring SSL settings.
Bug Fixes
-
#13156 Resolved an issue where the Dashboard Monitoring pages would crash following the update to EMQX v5.7.0.
-
#13164 Fixed HTTP authorization request body encoding.
Before this fix, the HTTP authorization request body encoding format was taken from the
accept
header. The fix is to respect thecontent-type
header instead. Also addedaccess
templating variable for v4 compatibility. The access code of SUBSCRIBE action is1
and PUBLISH action is2
. -
#13238 Improved the logged error messages when an HTTP authorization request with an unsupported content-type header is returned.
-
#13258 Fixed an issue where the MQTT-SN gateway would not restart correctly due to incorrect startup order of gateway dependencies.
-
#13273 Fixed and improved handling of URIs in several configurations. The fix includes the following improvement details:
- Authentication and authorization configurations: Corrected a previous error where valid pathless URIs such as
https://example.com?q=x
were mistakenly rejected. These URIs are now properly recognized as valid. - Connector configurations: Enhanced checks to ensure that URIs with potentially problematic components, such as user info or fragment parts, are no longer erroneously accepted.
- Authentication and authorization configurations: Corrected a previous error where valid pathless URIs such as
-
#13276 Fixed an issue in the durable message storage mechanism where parts of the internal storage state were not correctly persisted during the setup of new storage generations. The concept of "generation" is used internally and is crucial for managing message expiration and cleanup. This could have manifested as messages being lost after a restart of EMQX.
-
#13291 Fixed an issue where durable storage sites that were down being reported as up.
-
#13290 Fixed an issue where the command
$ bin/emqx ctl rules show rule_0hyd
would produce no output when used to display rules with a data integration action attached. -
#13293 Improved the restoration process from data backups by automating the re-indexing of imported retained messages. Previously, re-indexing required manual intervention using the
emqx ctl retainer reindex start
CLI command after importing a data backup file.This fix also extended the functionality to allow exporting retained messages to a backup file when the
retainer.backend.storage_type
is configured asram
. Previously, only setups withdisc
as the storage type supported exporting retained messages. -
#13147 Improved the error messages for decoding failures in the rule engine protobuf decode functions by adding clear descriptions to indicate what went wrong when message decoding failed.
-
#13140 Fixed an issue that caused text traces for the republish action to crash and not display correctly.
-
#13148 Fixed an issue where a 500 HTTP status code could be returned by
/connectors/:connector-id/start
when there is a timeout waiting for the resource to be connected. -
#13181 EMQX now forcefully shut down the connector process when attempting to stop a connector, if such operation times out. This fix also improved the clarity of error messages when disabling an action or source fails due to an unresponsive underlying connector.
-
#13216 Respect
clientid_prefix
config for MQTT bridges. Since EMQX v5.4.1, the MQTT client IDs are restricted to a maximum of 23 bytes. Previously, the system factored theclientid_prefix
into the hash of the original, longer client ID, affecting the final shortened ID. The fix includes the following change details:- Without Prefix: The behavior remains unchanged. EMQX hashes the long client IDs (exceeding 23 bytes) to fit within the 23-byte limit.
- With Prefix:
- Prefix ≤ 19 bytes: The prefix is retained, and the remaining portion of the client ID is hashed into a 4-byte space, ensuring the total length does not exceed 23 bytes.
- Prefix ≥ 20 bytes: EMQX will not attempt to shorten the client ID, fully preserving the configured prefix regardless of length.
-
#13189 Fixed an issue where the data integration with Microsoft SQL Server or MySQL could not use SQL templates with substring
values
in table name or column name. -
#13070 Improved Kafka connector error logs to provide more diagnostic information by capturing specific error details, such as unreachable advertised listeners. To manage log verbosity, only the first occurrence of an error is logged, accompanied by the total count of similar errors.
-
#13093 Improved Kafka consumer group stability. Before this change, the Kafka consumer group sometimes needs to rebalance twice after the Kafka group coordinator restarted.
-
#13277 Refined the error handling for Kafka producers when encountering the
message_too_large
error. Previously, Kafka producers would repeatedly attempt to resend oversized message batches, hoping for a server-side adjustment inmax.message.bytes
.Now, oversized messages are automatically split into single-message batches for retry. If a message still exceeds size limits, it will be dropped to maintain data flow.
-
#13130 Improved the trace message formatting for Redis action batch requests. Spaces are now added between components of commands and semicolons are added between commands to make the trace message easier to read.
-
#13136 Improved the template-rendered traces for Oracle actions for better readability.
-
#13197 Fixed an issue in AWS S3 data integration that prevented automatic saving of TLS certificates and key files to the file system when they are supplied through the Dashboard UI or Connector API.
-
#13227 Fixed an issue in AWS S3 Sink running in aggregated mode. Before the fix, an invalid key template in the configuration was reported as an error during the Sink setup, but instead caused a storm of hard-to-recover crashes later.