Skip to content

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Dec 5, 2024

This PR contains the following updates:

Package Update Change
public.ecr.aws/emqx/emqx (source) patch 5.8.2 -> 5.8.8

Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


Release Notes

emqx/emqx (public.ecr.aws/emqx/emqx)

v5.8.8: EMQX v5.8.8

Compare Source

Enhancements
Deployment
  • #​15813 Added package release for Debian 13 (Trixie), and updated Docker images to use Debian 13 as the base.
Core MQTT Functionalities
  • #​15773 Throttled client ID registration during reconnects.
    • When a previous session cleanup is still in progress, new connections using the same client ID are now throttled. This prevents instability when clients reconnect aggressively.
    • Affected clients receive reason code 137 (Server Busy) in the CONNACK with Reason-String "THROTTLED", and should retry after the cleanup completes.
    • Fixed the reason code returned when another connection registers the same client ID; now correctly returns 137 instead of 133.
Observability
  • #​15499 Added a force deactivate alarm API endpoint to allow administrators to forcibly deactivate active alarms.
Performance
  • #​15536 Disabled the node.global_gc_interval configuration by default to improve overall performance stability, as it caused CPU fluctuations and higher message latency while providing little benefit over Erlang’s built-in garbage collector.
  • #​15539 Optimized Erlang VM parameters to improve performance and stability:
    • Increased buffer size for distributed channels to 32 MB (+zdbbl 32768) to prevent busy_dist_port alarms during intensive Mnesia operations.
    • Disabled scheduler busy-waiting (+sbwt none +sbwtdcpu none +sbwtdio none) to lower CPU usage reported by the operating system.
    • Set scheduler binding type to db (+stbt db) to reduce message latency.
Bug Fixes
Deployment
  • #​15580 Added a new emqxLicenseSecretRef variable to the EMQX Enterprise Helm chart. This allows users to specify a Kubernetes Secret containing the EMQX license key, so the license is applied automatically.

    This replaces the non-functional emqxLicenseSecretName variable, which created and mounted a secret file but did not pass the license to EMQX.

Clustering
  • #​14778 Fixed an issue where a node could not join a running cluster if that node had broken symlinks in its data/certs or data/authz directories.
Security
  • #​15581 Upgraded Erlang/OTP version from 26.2.5.2 to 26.2.5.14. This upgrade includes two TLS-related fixes from OTP that affect EMQX:
    • Fixed a crash in TLS connections caused by a race condition during certificate renewal.
    • Added support for RSA certificates signed with RSASSA-PSS parameters. Previously, such certificates could cause TLS handshakes to fail with a bad_certificate / invalid_signature error.
Observability
  • #​15639 Fixed an issue where the packets.subscribe.auth_error metric was not incremented when subscription authentication failed.
Gateway
  • #​15679 Fixed incorrect global chain names for the ExProto gateways. Built-in authentication data for these gateways was previously grouped under unknown:global, causing conflicts between gateways.
  • #​15699 Fixed an issue where built-in authentication data for gateways (e.g., CoAP) was incorrectly removed when a node was stopped or restarted.
ExHook
  • #​15683 Fixed ExHook TLS options so that gRPC clients can correctly verify the server hostname during the TLS handshake.

v5.8.7: EMQX v5.8.7

Compare Source

Bug Fixes
  • #​15383 Fixed a potential resource leak in the MQTT bridge. When the bridge failed to start, the topic index table was not properly cleaned up. This fix ensures that the index table is correctly deleted to prevent resource leaks.

v5.8.6: EMQX v5.8.6

Compare Source

Enhancement
  • #​14869 Added the connected_at timestamp field to the $events/client_disconnected event payload. This enhancement enables tracking the original connection session time for disconnected clients, preventing outdated disconnect events from overriding newer connection states.

    Previously, when clients frequently reconnected due to unstable networks, delayed disconnect events could lead to incorrect session tracking. With this update, the connected_at field is now included in the event payload, aligning its behavior with system topics and ensuring accurate session state management.

Bug Fixes
Core MQTT Functionalities
  • #​14815 Fixed packet ID release for QoS 2 messages. Previously, if a client failed to send a PUBREL for the maximum configured number of pending QoS 2 messages and then disconnected, the packet IDs remained occupied even after exceeding the configured Max Awaiting PUBREL Timeout.
Installation and Deployment
  • #​14797 Fixed macOS release package startup issue due to OpenSSL dynamic linking (backport #​14624).

    Previously, the EMQX ZIP package on macOS could fail to start because the quicer application dynamically linked to the system-installed OpenSSL, which was not signed during the EMQX build process. Now we have disabled dynamic linking for OpenSSL, aligning with the OTP shipped on macOS. This ensures EMQX starts reliably on macOS 13 and later.

Authentication
  • #​14847 Fixed JWKS authentication failure for wildcard HTTPS endpoints. Previously, JWKS authentication failed to retrieve keys from HTTPS endpoints that used wildcard hostnames, preventing successful authentication.
  • #​14786 Fixed JWT authentication settings update when using an external JWKS endpoint. Previously, when updating JWT authentication settings with JWKS (key server) enabled in both the old and new configurations, some settings were not correctly applied.
REST API
  • #​14834 Fixed incorrect Content-Type header when downloading data backup files. Previously, the response header for downloaded backup files incorrectly used application/json instead of application/octet-stream.
Rule Engine
  • #​14824 Fixed HTTP 500 error in SQL Rule Tester when handling details key in alarm events. Previously, when testing alarm_activated or alarm_deactivated events in the SQL Rule Tester, certain values in the details key could cause an HTTP 500 error due to improper handling of nested map keys.
Observability
  • #​14800 Throttled warning level log dropped_qos0_msg.

  • #​14793 Added trace log for protocol_error in MQTT connections.

    Previously, when a client sent invalid or unexpected MQTT packets causing a protocol_error, EMQX logs provided limited details, making it difficult to diagnose the issue.

    For example, if a client sent a second CONNECT packet while already connected, EMQX would log socket_force_closed with protocol_error, but without indicating the exact cause.

    With this update, EMQX now logs unexpected_connect_packet with conn_state=connected before socket_force_closed, providing clearer context for debugging protocol violations.

Plugin
  • #​14802 Introduced a new CLI command for plugins:

     emqx ctl plugins allow NAME-VSN
Breaking Changes
  • #​14802 Starting from this version, plugin installation via the REST API or Dashboard requires explicit permission. Users must obtain this permission using the following CLI command before installing.

    emqx ctl plugins allow NAME-VSN

    This change enhances security by preventing unauthorized plugin installations. Users managing plugins via the API or Dashboard must adjust their workflows accordingly.

v5.8.5: EMQX v5.8.5

Compare Source

Enhancements
Core MQTT Functionalities
  • #​14454 Introduced max_publish_rate option for the retainer. The option controls the maximum allowed rate of publishing retained messages in each node. Any messages published beyond this limit will still be delivered but will not be stored as retained.

    This option is useful to limit the load on the configured retained message storage.

  • #​14456 Introduced a simple firewall script, bin/emqx_fw, to protect EMQX listeners from SYN flooding attacks. This feature is available for Linux only.

  • #​14496 Added extra validation for the root_keys parameters in POST /data/export API. Now, invalid root keys will result in an error instead of being silently ignored.

Access Control
  • #​14494 Enhanced MongoDB authorization with support for complex queries.

    • Added support for the top-level $orderby operator in selector filter configuration, enabling sorting of query results in authorization checks.
    • Introduced skip and limit options for better pagination and control over query results in MongoDB-based authorization.
  • #​14570 Added support for using placeholders in HTTP Headers for HTTP Authentication and Authorization configurations.

  • #​14665 Added support for client attributes as ACL rule pre-conditions. You can now create ACL rules based on client attributes, allowing more fine-grained control over access.

    For example, the following rule allows clients with a "type" attribute set to "internal" to publish or subscribe to all topics:

    {allow, {client_attr, "type", "internal"}, all, ["#"]}.

    And the rule below denies clients with a "type" attribute prefixed with "external-" from publishi any messages:

    {deny, {client_attr, "type", {re, "external-.*"}}, publish, ["#"]}.

Rule Engine
  • #​14627 Added two new rule engine events: $events/sys/alarm_activated and $events/sys/alarm_deactivated. These are triggered when system alarms are activated and deactivated.
Data Integration
  • #​14404 Added support for specifying static clientids for MQTT Connector.
  • #​14450 Added support for setting no-local flag to MQTT Source. The no-local flag can now be configured in MQTT Source settings to prevent messages published by a client from being received by that same client.
  • #​14507 Added two new lightweight HTTP APIs: GET /actions_summary and GET /sources_summary. These new APIs provide a more concise overview of actions and sources, similar to the existing GET /actions and GET /sources APIs, but without returning the full configurations of the entities, making them faster and less resource-intensive.
Observability
  • #​14437 Added two new gauges to Prometheus output: emqx_vm_mnesia_tm_mailbox_size and emqx_vm_broker_pool_max_mailbox_size. These gauges track the mailbox sizes of internal EMQX processes that can indicate system overload. Additionally, alarms will be raised when mailbox sizes surpass certain high watermarks.
  • #​14645 Added more log messages to help debug fetching Certificate Revocation Lists (CRLs) for the first time (before they are cached and refreshed automatically). Successes and failures are logged at debug and warning levels, respectively.
  • #​14656 Enhanced Prometheus push to support more metrics and allow the cluster name to be used as a variable name for the Job label.
MQTT over QUIC
  • #​14583 The QUIC listener now supports dumping TLS secrets to the SSLKEYLOGFILE environment variable, enabling tools like Wireshark to decrypt live or captured QUIC traffic. This allows for decoding MQTT packets within the QUIC traffic.

    Example configuration:
    EMQX_LISTENERS__QUIC__DEFAULT__SSLKEYLOGFILE=/tmp/EMQX_SSLKEYLOGFILE

    Note: This is a hidden configuration intended for troubleshooting purposes only.

  • #​14597 Asynchronous abort stream read during connection termination.

    In scenarios where a session is "taken over", "discarded", or "kicked", the previous connection termination process involved a graceful stream shutdown. This could result in blocking delays of up to 3 seconds if the old client was unresponsive.

    This issue occurred because graceful shutdown relies on cooperative signaling between both endpoints, ensuring the MQTT.DISCONNECT packet is delivered to the peer before the transport is closed. If the peer was unresponsive, this approach caused unnecessary delays.

    With this improvement, the stream is now half-closed during termination. The read (recv) operation aborted, while the write (send) operation remains open. This adjustment ensures that the MQTT.DISCONNECT packet is still delivered to the peer, properly signaling the shutdown, without unnecessary delays.

    Benefits:

    • Reduces blocking times when the peer is unreachable or unresponsive.
    • Maintains proper notification of the termination process to the peer, improving the overall connection shutdown behavior.
    • Reduces the latency in the session takeover sand the clean-start scenarios (e.g, discard).
Bug Fixes
Core MQTT Functionalities
  • #​14405 Converted 256MB to 268435455 bytes for mqtt.max_packet_size.

    EMQX previously allowed setting 256MB for mqtt.max_packet_size config, which is in fact one byte more than what the protocol specification allows. For backward compatibility, mqtt.max_packet_size=256MB is still allowed from configurations but will be silently converted to 268435455.

  • #​14508 Improved the EMQX performance when large numbers of clients reconnect.

  • #​14608 Enforced First-In-First-Out (FIFO) semantics in MQTT session message queue. The MQTT session message queue now strictly follows FIFO semantics when it reaches its capacity. When the queue is full, the oldest message will be dropped first.

  • #​14609 Corrected high memory threshold for overload protection to use sysmon.os.sysmem_high_watermark. The high memory threshold is now properly updated during the boot process or whenever sysmon.os.sysmem_high_watermark is changed. This ensures the memory overload protection threshold is dynamic and reflects changes to the system memory settings.

  • #​14654 Clients can now reconnect successfully even if the maximum session limit has been reached, as long as their previous sessions remain active (i.e., not expired or cleaned up).

  • #​14588 Improved memory usage reporting when EMQX runs in a containerized environment. In containerized environments like Amazon Elastic Kubernetes Service (AWS EKS), the accuracy of memory usage readings can be influenced by factors such as the host kernel version, cgroup version, and how the container management service mounts cgroupfs. This update improves the accuracy of memory usage reporting when EMQX runs in AWS EKS, specifically addressing discrepancies caused by the container environment.

Authentication
  • #​14585 Fixed an issue where password hash comparisons were case-sensitive, which could lead to authentication failures, especially when integrating with external systems that may store passwords with different case conventions. Now, password hashes will be compared in a case-insensitive manner, improving compatibility and reliability when EMQX authenticates users against external sources.
Gateway
  • #​14484 Fixed an issue where the Exproto gateway did not support using hostname in the server endpoint.

  • #​14489 Fixed issue where accessing the api/v5/gateways endpoint resulted in a 500 error if the gateway was not enabled on the node in the cluster. Now, such requests return a more appropriate response, preventing crashes and improving the stability of the API in these scenarios.

  • #​14501 Fixed issue where the gateway client query HTTP API always returned a keepalive value of 0. The correct keepalive value is now returned by the HTTP API, and the gateway adheres to the configured idle timeout, properly reflecting the client's heartbeat settings.

  • #​14503 Returns an empty list instead of a 404 error if no listener exists at the gateway. Previously, when accessing the listeners page of a gateway (such as LwM2M) through the API, a 404 error would be returned if no listeners were configured. This fix changes the behavior to return an empty list when no listeners exist.

  • #​14511 Eliminated unnecessary log printing by the Stomp gateway when client authentication fails.

  • #​14653 Fixed stomp gateway keepalive behavior. Previously, the STOMP connection's heartbeat mechanism would fail to keep the connection alive if the heartbeat packet was received slightly after the check timer. This update introduces tolerance for minor delays, ensuring that the connection will stay alive. On average, the connection closure now occurs at approximately 1.5 times the heartbeat interval, providing more reliable keepalive functionality.

Data Integration
  • #​14518 This update ensures that Connectors are now started asynchronously when loading from configuration, whether via CLI or HTTP API. Previously, if a connector hung during startup, it could cause the entire configuration import process to time out.

    Additionally, connectors are now started asynchronously when (re)starting a node, resulting in faster boot-up times. This release also fixes a potential issue where a Source could be added to the configuration before its corresponding Connector, ensuring correct initialization order during configuration import.

  • #​14550 Fixed an issue where MQTT clients in the connection pool of an MQTT Connector would fail to reconnect automatically if only a few clients were disconnected. The fix ensures clients are automatically reconnected when disconnected, improving connection reliability.

  • #​14555 Fixed an issue with MQTT Source where shared topics were not properly unsubscribed from when a source was removed or updated.

  • #​14671 Fixed an issue in MQTT Action. Before the fix, messages could fail to be sent or retried due to a rare race condition when the MQTT Connector's connection was closed. This update ensures that TCP connection closures (tcp_closed) and client disconnections are handled as recoverable errors.

  • #​14695 Improved HTTP API error messages when attempting to update a Connector and a validation error occurs.

  • #​14697 Fixed a problem in which, when a Source and an Action shared the same name and used the same connector, one could not delete the Action or Source if there were rule dependencies on the dual Source/Action.

Clustering
  • #​14536 Fixed rare race condition in cluster management operations. Before the fix, the race condition caused certain cluster management operations to hang, making cluster changes impossible until a node restarts. This issue was addressed by tightening the global lock guarding mria:join/1 operations. The stricter locking prevents concurrent joins from interfering with each other.

  • #​14548 Fixed an issue where a node would crash during reboot if a new node joined the cluster while it was down, resulting in a ** FATAL ** Failed to merge schema: {aborted,function_clause} error. This fix ensures that nodes can now restart smoothly without requiring a rejoin to the cluster.

  • #​14662 Fixed an issue where a running replicant node, after rejoining a cluster in which all core nodes had their internal databases wiped, would fail to participate in certain Remote Procedure Call (RPC) call operations.

Administration
  • #​14543 Fixed an internal compatibility issue that caused certain ExHooks to crash when clients were connected through WS, WSS, or Gateway listeners.
Breaking changes
  • #​14703 Introduced a change to the maximum allowed value for force_shutdown.max_heap_size, which is now set to 128GB. If the max_heap_size was previously set to a value exceeding 128GB, this could lead to issues after upgrading, such as during configuration reloading or updates.

v5.8.4: EMQX v5.8.4

Compare Source

5.8.4

Make sure to check the breaking changes and known issues before upgrading to EMQX 5.8.4.

Enhancements
Core MQTT Functionalities
  • #​13739 Added support for clearing monitor (statistics) data for the whole cluster. You can now send a DELETE request to the api/v5/monitor endpoint to clear all collected monitoring metrics.

  • #​14247 Log the client attribute tns if it exists in the client metadata.

    If the client_attrs.tns attribute is present, it will now be included in the log metadata. However, if the client ID is already prefixed with the tns value, it will not be logged again to avoid duplication.

  • #​14353 Improved robustness of session rebalance and evacuation process. Previously, the session evacuation process could enter a dead loop under certain clustering errors.

Rule Engine
  • #​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.
Configuration Files
  • #​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, emqx.conf was the only place for manually configured settings. However, because it was the top-most layer of the configuration override hierarchy, 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 added etc/base.hocon as a foundational configuration layer. The updated configuration precedence order, from top to bottom, is now 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 configurations in this file can still be modified after the node starts, it ensures consistent behavior and proper configuration overriding.

Observability
  • #​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="emqx@127.0.0.1",reason="takenover"} 1
    emqx_client_disconnected_reason{node="emqx@127.0.0.1",reason= 1
    

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

Bug Fixes
Core MQTT Functionalities
  • #​14248 Fixed intermittent connectivity issues between cluster nodes that could lead to partial loss of cluster-wide routing table state. This fix ensures better consistency and reliability across the cluster.
  • #​14272 Fixed an issue where the auto_subscribe configuration loaded via the CLI showed a success message but failed to take effect.
  • #​14424 Fixed an issue where membership messages related to exclusive subscriptions were incorrectly logged as unexpected_info warnings.
REST API
  • #​14317 Fixed an issue where the HTTP API could return an empty page when calculating pagination.
Data Integration
  • #​14318 Fixed an issue with the initialization of the HTTP connector state. This fix resolves crashes related to the function_clause error that could occur when an HTTP action processed incoming traffic while its underlying connector was being restarted. Before this fix, the logs would show cryptic error messages like:

    20:42:36.850 [error] msg: "resource_exception", info: #{error => {error, function_clause}, id => <<"action:http:a:connector:http:a">>, name => call_query, ...
    
  • #​14319 Refactored the internal state machine for resource management, eliminating several race condition bugs. One example is the HTTP action, which, when handling incoming traffic and experiencing health check flapping, could previously result in 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">
    
  • #​14362 Refactored the resource manager state machine to prevent race conditions that could lead to inconsistent states.

  • #​14429 Fixed the handling of rule action metrics when the underlying connector is disabled. Previously, the failed counter would increment twice for each message—once under the unknown category and once under out_of_service. With this fix, only the out_of_service counter is incremented, providing more accurate metrics.

Command Line Interface
  • #​14357 Fix an issue with bin/emqx help command. This fix ensures that the help command now displays the correct usage information. Now, the help command displays the proper details, making it easier for users to understand how to use the command.
Configuration File
  • #​14371 Fixed an issue where client ID override expressions rendered undefined or null as the literal strings "undefined" or "null". Now, these values are correctly displayed as empty strings, providing cleaner and more intuitive outputs when variables are not set or have no value
  • #​14376 Enhanced configuration import to handle non-existing log file directories. If the specified log file directory does not exist, the system will now fall back to the default log directory "${EMQX_LOG_DIR}", ensuring smoother operation without errors.
Observability
  • #​14267 Modified the logging behavior to avoid redacting secrets in logs and HTTP responses when the secret string is a file path (e.g., file:///path/to/the/secret).

  • Resolve the function_clause error that occurs when retrieving the emqx_license_expiry_at Prometheus value for a perpetual license.

Breaking Changes
  • #​14360 When requesting Prometheus metrics in JSON format, the client top-level key will now always be an array of JSON objects, rather than a single JSON object. This change may affect how your monitoring tools process the data.

v5.8.3: EMQX v5.8.3

Compare Source

v5.8.3

Make sure to check the breaking changes and known issues before upgrading to EMQX 5.8.3.

Enhancements
Core MQTT Functionalities
  • #​14219 Enhanced Connection Rate Limiter for Improved System Resilience.

    • Improved system stability and responsiveness under high connection rates: Previously, when the connection rate limit was exceeded, listener acceptors would ignore new connection attempts, potentially resulting in an unrecoverable state if a large number of clients connected or reconnected frequently within a short period. Listeners now accept pending connections but immediately close them if the rate limit is reached. This reduces resource strain and improves system resilience during peak loads.

    • New listener option nolinger introduced: When set to true, a TCP-RST is sent immediately upon socket closure, helping to mitigate SYN flood attacks and further enhancing connection-handling efficiency.

    • max_connection configuration for MQTT listeners now capped by system limits: The max_connection value for MQTT listeners is now constrained by the system's limits (e.g., ulimit from the OS and node.process_limit). If configured to infinity or a value greater than the system limit, it will automatically be adjusted to match the system's maximum limit.

    • SSL listeners' ssl_options now validated before changes: Previously, invalid SSL options (such as unsupported TLS versions) could be accepted, causing client connection failures after a listener reconfiguration. With this update:

      • The node will fail to boot if a listener is configured with invalid SSL options.
      • Requests to apply invalid SSL options via the Dashboard or config API will now fail with a 400 status code.
Configuration
  • #​14195 Added support for client ID override.

    EMQX now provides greater flexibility by allowing custom client ID overrides using the mqtt.clientid_override={Expression} configuration. This introduces a more dynamic approach to client ID management. As part of this update, the use_userid_as_clientid and peer_cert_as_clientid options are deprecated, though they will remain available for compatibility until version 6.0.

MQTT over QUIC
  • #​14283 Improved QUIC transport, upgrade quicer to 0.1.9.
    • Early release of remote stream resources in the abnormal scenarios.
    • Added more troubleshooting APIs. For more details, see: emqx/quic@0.1.6...0.1.9.
Bug Fixes
Core MQTT Functionalities
  • #​14201 Prevent check_gc warning from appearing when a WebSocket connection encounters a rate limit.
  • #​14215 Fixed an issue where calls to the retainer (via REST or CLI) would throw an exception if it was disabled.
  • #​14223 Ensured the WebSocket close reason is returned as an atom to avoid crashes, specifically preventing the error: error: {{case_clause,#{invalid_property_code => 51}},[{cowboy_websocket...}}.
  • #​14260 Resolved a rare race condition that could cause the connection process to crash if the CONNECT packet was not fully received before the idle timeout (default 15 seconds) expired.
  • #​14268 Fixed another rare race condition that could cause the WebSocket connection process to crash when the CONNECT packet was not fully received before the idle timeout expired.
  • #​14266 Updated emqtt from version 1.13.0 to 1.13.5. For more details, please refer to the emqtt changelog.
Durable Sessions
  • #​14160 Ensured that topic matching rules for durable session subscriptions are properly applied to topics starting with the $ symbol, in accordance with the MQTT specification.
REST API
  • #​14117 Fixed an issue in the REST API documentation where the Users endpoint was incorrectly listed as supporting Basic Authentication.
Data Integration
  • #​14172 Resolved a potential race condition where testing a connector using the HTTP API could leave lingering resources if the HTTP request timed out.

  • #​14178 Fixed an issue where configuration synchronization could become stuck on a particular node due to simultaneous deletion of rules across different nodes in the cluster.

  • #​14226 Mitigated a scenario where, under high load, a node could lose track of resource metrics (e.g., action/source) and fail to recover without a restart. Now, when restarting a resource or resetting its metrics, the system attempts to recreate the lost metrics.

    Additionally, warning logs related to metric failures, such as those for "hot-path" metrics like matched, are now throttled to prevent excessive log flooding. Example of throttled log:

    2024-11-14T13:56:44.134289+00:00 [warning] tag: RESOURCE, clientid: clientid, msg: handle_resource_metrics_failed, peername: 172.100.239.1:33896, reason: {badkey,matched}, stacktrace: [{erlang,map_get,[matched,#{}],[{error_info,#{module => erl_erts_errors}}]},{emqx_metrics_worker,idx_metric,4,[{file,"src/emqx_metrics_worker.erl"},{line,560}]},...
    
    2024-11-14T13:57:12.490503+00:00 [warning] msg: log_events_throttled_during_last_period, period: 1 minutes, 0 seconds, dropped: #{handle_resource_metrics_failed => 2294}
    
  • #​14265 Fixed an issue where a badkey error would occur when stopping a connector if the MQTT Source action failed to subscribe successfully.

  • #​14296 Prevented ecpool_sup from being blocked by a slow-starting ecpool_worker.

Configuration
  • #​14180 Fixed an issue with variform expressions returning 'undefined' when a variable is bound to the value undefined or null. Now, an empty string is returned instead.

  • #​14289 Resolved a log file path issue when importing configurations from a different environment. The EMQX_LOG_DIR environment variable is set to /opt/emqx/log in Docker but /var/log/emqx/ when installed via RPM/DEB packages. Prior to this fix, log file paths (default file handler and audit handler) are environment-variable interpolated when being exported. This could cause crashes when importing configs into a different environment where the directory didn’t exist.

    With this fix, log file paths are no longer environment-variable interpolated during export. Additionally, absolute log directory paths from older versions are now converted back to environment variables if the path doesn’t exist in the new environment.

Extension
  • #​14243 Fixed an issue where the client.connect hook was not being triggered for some gateways.
MQTT over QUIC
  • #​14258 Reduced the QUIC connection shutdown timeout. Previously, QUIC connections had a 5-second timeout for graceful shutdown. If the client was unresponsive, EMQX would log warnings like:

    [warning] msg: session_stepdown_request_timeout, action: discard,
    

    or potentially cause a timeout on the Dashboard when attempting to disconnect the client. The timeout has now been reduced to 1 second for "kick" actions and 3 seconds for other scenarios.

Breaking Changes

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@carpenike-bot
Copy link
Contributor

carpenike-bot bot commented Dec 5, 2024

--- kubernetes/cluster-0/apps/db/emqx/cluster Kustomization: flux-system/emqx-cluster EMQX: db/emqx

+++ kubernetes/cluster-0/apps/db/emqx/cluster Kustomization: flux-system/emqx-cluster EMQX: db/emqx

@@ -53,13 +53,13 @@

         subPath: init-acl
       extraVolumes:
       - name: init-user
         secret:
           secretName: emqx-init-user-secret
       replicas: 3
-  image: public.ecr.aws/emqx/emqx:5.8.2
+  image: public.ecr.aws/emqx/emqx:5.8.6
   listenersServiceTemplate:
     metadata:
       annotations:
         external-dns.alpha.kubernetes.io/hostname: mqtt.holthome.net
         lbipam.cilium.io/ips: 10.45.10.11
     spec:

@carpenike-bot
Copy link
Contributor

carpenike-bot bot commented Dec 5, 2024

🦙 MegaLinter status: ❌ ERROR

Descriptor Linter Files Fixed Errors Warnings Elapsed time
❌ COPYPASTE jscpd yes 2 no 1.36s
✅ REPOSITORY git_diff yes no no 0.04s
✅ REPOSITORY secretlint yes no no 3.81s
✅ YAML prettier 1 0 0 0.41s
✅ YAML yamllint 1 0 0 0.65s

See detailed report in MegaLinter reports
Set VALIDATE_ALL_CODEBASE: true in mega-linter.yml to validate all sources, not only the diff

MegaLinter is graciously provided by OX Security

@renovate renovate bot force-pushed the renovate/cluster-0-public.ecr.aws-emqx-emqx-5.x branch from 2da0d6d to 70e4725 Compare December 26, 2024 19:00
@renovate renovate bot changed the title fix(container): update image public.ecr.aws/emqx/emqx ( 5.8.2 → 5.8.3 ) fix(container): update image public.ecr.aws/emqx/emqx ( 5.8.2 → 5.8.4 ) Dec 26, 2024
@renovate renovate bot force-pushed the renovate/cluster-0-public.ecr.aws-emqx-emqx-5.x branch from 70e4725 to 034eb61 Compare February 25, 2025 10:13
@renovate renovate bot changed the title fix(container): update image public.ecr.aws/emqx/emqx ( 5.8.2 → 5.8.4 ) fix(container): update image public.ecr.aws/emqx/emqx ( 5.8.2 → 5.8.5 ) Feb 25, 2025
@renovate renovate bot force-pushed the renovate/cluster-0-public.ecr.aws-emqx-emqx-5.x branch from 034eb61 to a538b02 Compare March 25, 2025 16:56
@renovate renovate bot changed the title fix(container): update image public.ecr.aws/emqx/emqx ( 5.8.2 → 5.8.5 ) fix(container): update image public.ecr.aws/emqx/emqx ( 5.8.2 → 5.8.6 ) Mar 25, 2025
@renovate renovate bot force-pushed the renovate/cluster-0-public.ecr.aws-emqx-emqx-5.x branch from a538b02 to ff8a359 Compare July 3, 2025 01:43
@renovate renovate bot changed the title fix(container): update image public.ecr.aws/emqx/emqx ( 5.8.2 → 5.8.6 ) fix(container): update image public.ecr.aws/emqx/emqx ( 5.8.2 → 5.8.7 ) Jul 3, 2025
| datasource | package                  | from  | to    |
| ---------- | ------------------------ | ----- | ----- |
| docker     | public.ecr.aws/emqx/emqx | 5.8.2 | 5.8.8 |
@renovate renovate bot force-pushed the renovate/cluster-0-public.ecr.aws-emqx-emqx-5.x branch from ff8a359 to 1336fe3 Compare September 6, 2025 23:32
@renovate renovate bot changed the title fix(container): update image public.ecr.aws/emqx/emqx ( 5.8.2 → 5.8.7 ) fix(container): update image public.ecr.aws/emqx/emqx ( 5.8.2 → 5.8.8 ) Sep 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants