keepalive_multiplier and deprecate the old keepalive_backoff configuration. After this enhancement, EMQX checks the client's keepalive timeout status period by multiplying the "Client Requested Keepalive Interval" with keepalive_multiplier.clientids to connect to the remote broker.deliver_rate option to the retainer configuration, which can limit the maximum delivery rate per session in the retainer.auto_restart_interval was deprecated in favor of health_check_interval, and request_timeout was renamed to request_ttl. Also, the default request_ttl value went from 15 seconds to 45 seconds.
The previous existence of both auto_restart_interval and health_check_interval was a source of confusion, as both parameters influenced the recovery of data bridges under failures. An inconsistent configuration of those two parameters could lead to messages being expired without a chance to retry. Now, health_check_interval is used both to control the interval of health checks that may transition the data bridge into disconnected or connecting states, as well as recovering from disconnected.live_connections field for some HTTP APIs, i.e:
/monitor_current, /monitor_current/nodes/{node}/monitor/nodes/{node}, /monitor/node/{node}, /nodesprometheus.vm_dist_collector=disabled and metric erlang_vm_statistics_run_queues_length_total is renamed to erlang_vm_statistics_run_queues_lengthemqx ctl command cluster_call to conf cluster_sync. The old command cluster_call is still a valid command, but not included in usage info.enable as well as enabled as the state flag for listeners.
Prior to this change, listener can be enable/disabled by setting the true or false on the enabled config. This is slightly different naming comparing to other state flags in the system. Now the enable flag is added as an alias in listener config.emqx ctl export and emqx ctl import for importing/exporting configuration and user data. This allows exporting configurations and built-in database data from a running EMQX cluster and importing them into the same or another running EMQX cluster.max_connections field in the configuration and HTTP API.connecting state when creating/updating a Pulsar Producer bridge.broker.shared_subscription_strategy to mqtt.shared_subscription_strategy as it belongs to mqtt.5.1.0.log.file.to to log.file.path.is_superuser was not working correctly.depth (listener SSL option) is a non negative integer.!@#$%^&*()_+{}:"<>?/.** ERROR ** Mnesia post_commit hook failed: error:badarg error messages happening during node shutdown or restart. Mria pull request: https://github.com/emqx/mria/pull/142emqx_ctl traces command error where the traces start command in the emqx_mgmt_cli module was not working properly with some filters.POST /clients/kickout/bulk for kicking out multiple clients in bulk.#10952 Disallow enabling fail_if_no_peer_cert in listener SSL options if verify = verify_none is set.
Setting fail_if_no_peer_cert = true and verify = verify_none caused connection errors due to incompatible options. This fix validates the options when creating or updating a listener to avoid these errors.
Note: any old listener configuration with fail_if_no_peer_cert = true and verify = verify_none that was previously allowed will fail to load after applying this fix and must be manually fixed.
#10951 Fixed the issue in MQTT-SN gateway when the mountpoint did not take effect on message publishing.
#10943 Deprecated UDP mcast mechanism for cluster discovery. This feature has been planed for deprecation since 5.0 mainly due to the lack of actual production use. This feature code is not yet removed in 5.1, but the document interface is demoted.
#10902 Avoid syncing cluser.hocon file from the nodes running a newer version than the self-node.
During cluster rolling upgrade, if an older version node has to restart due to whatever reason, if it copies the cluster.hocon file from a newer version node, it may fail to start. After this fix, the older version node will not copy the cluster.hocon file from a newer, so it will use its own cluster.hocon file to start.
#10967 Fixed error message formatting in rebalance API: previously they could be displayed as unclear dumps of internal Erlang structures.
Added wait_health_check option to node evacuation CLI and API. This is a time interval when the node reports "unhealthy status" without beginning actual evacuation. We need this to allow a Load Balancer (if any) to remove the evacuated node from balancing and not forward (re)connecting clients to the evacuated node.
#10911 The error message and log entry that appear when one tries to create a bridge with a name the exceeds 255 bytes is now easier to understand.
#10983 Fixed the issue when mqtt clients could not connect over TLS if the listener was configured to use TLS v1.3 only. The problem was that TLS connection was trying to use options incompatible with TLS v1.3.
#10977 Fixed the delay in updating subscription count metric and corrected configuration issues in Stomp gateway.
#10950 Fixed the issue where the enable_qos option does not take effect in the MQTT-SN gateway.
#10999 Changed schema validation for Kafka fields 'Partition Count Refresh Interval' and 'Offset Commit Interval' to avoid accepting values larger then maximum allowed.
#10997 The ClickHouse bridge had a problem that could cause messages to be dropped when the ClickHouse server is closed while sending messages even when the request_ttl is set to infinity. This has been fixed by treating errors due to a closed connection as recoverable errors.
#10994 Redacted proxy-authorization headers as used by HTTP connector to avoid leaking secrets into log files.
#10996 For any unknown HTTP/API request, the default response is a 404 error rather than the dashboard's index.html.
#11005 Fixed the issue where the method field cannot be correctly printed in the trace logs of AuthN HTTP.
#11006 Fixed QUIC listeners's default cert file paths.
Prior to this change, the default cert file paths are prefixed with environment variable ${EMQX_ETC_DIR} which were not interpolated before used in QUIC listeners.
#10998 Do not allow batch_size option for MongoDB bridge resource. MongoDB connector currently does not support batching, the batch_size config value is forced to be 1 if provided.
#10955 Fixed the issue in MQTT-SN gateway where deleting Predefined Topics configuration does not work.
#11025 Fixed a case_clause error that could arise in race conditions in Pulsar Producer bridge.
#11030 Improved error messages when a validation error occurs while using the Listeners HTTP API.
#11033 Deprecated the mountpoint field in AuthenticateRequest in ExProto gateway.
This field was introduced in e4.x, but in fact, in e5.0 we have provided
gateway.exproto.mountpoint for configuration, so there is no need to override
it through the Authenticate request.
Additionally, updates the default value of subscriptions_max, inflight_max,
mqueue_max to infinity.
#11040 Fixed a health check issue for Kafka Producer that could lead to loss of messages when the connection to Kafka's brokers were down.
#11038 Fixed a health check issue for Pulsar Producer that could lead to loss of messages when the connection to Pulsar's brokers were down.
#11042 Fixed crash on REST API GET /listeners when listener's max_connections is set to a string.
#11028 Disallowed using multiple TLS versions in the listener config that include tlsv1.3 but exclude tlsv1.2. Using TLS configuration with such version gap caused connection errors. Additionally, drop and log TLS options that are incompatible with the selected TLS version(s).
Note: any old listener configuration with the version gap described above will fail to load after applying this fix and must be manually fixed.
#11031 Fixed credential validation when creating bridge and checking status for InfluxDB Bridges.
#11056 Fixed the issue where newly created listeners sometimes do not start properly. When you delete a system default listener and add a new one named 'default', it will not start correctly.
#11070 Fixed the problem that the cluster.autoclean configuration item does not take effect.
#11092 and #11100 Fixed problem when replicat nodes were unable to connect to the core node due to timeout in mria_lb:core_nodes() call.
Relevant mria pull request: https://github.com/emqx/mria/pull/143