release-notes/4.2.2.md
RabbitMQ 4.2.2 is a maintenance release in the 4.2.x release series.
It is strongly recommended that you read 4.2.0 release notes
in detail if upgrading from a version prior to 4.2.0.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on Erlang version requirements for RabbitMQ.
Nodes will fail to start on older Erlang releases.
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Fixes a binding deletion-related memory leak in Khepri.
This leak primarily affected systems with high binding churn.
GitHub issue: #15024
Corrected a performance regression around metric collection that could have a meaningful impact on quorum queues.
GitHub issue: rabbitmq/seshat#16
AMQP 1.0 link error frames did not have settlement set in certain failure scenarios, namely when attaching a link failed due to a missing source (queue or stream).
GitHub issue: #15004
AMQP 1.0 clients that publish messages without a body now get a clearer error message. Messages without a body explicitly violate the AMQP 1.0 specification.
GitHub issue: #15048
Default operator policy pre-configuration in rabbitmq.conf were unintentionally missing a key,
default_policies.operator.$id.apply_to, for controlling what objects the policy applies to.
GitHub issue: #14988
Definition import is now more defensive when importing exchanges.
GitHub issue: #15128
More efficient Khepri (metadata store) querying.
GitHub issue: rabbitmq/khepri#349
Removed a cool down delay between stream chunk redelivery attempts.
GitHub issue: #14766
Stream data directory can now be configured via rabbitmq.conf.
GitHub issue: #15014
Stream replication: IP address family (IPv4 or IPv6) can now be configured via rabbitmq.conf.
GitHub issue: #15012
When multiple resource server IDs are configured, management UI login screen now provides a way to pre-select a specific resource ID before logging in.
As part of this change, when multiple resource server IDs are configured, their order stored internally now reflects
that in rabbitmq.conf.
GitHub issue: #15044
GET /api/deprecated-features/used no longer returns an empty state field.
GitHub issue: #14340
Feature flag icons now contrast well when the dark mode is used in the UI.
GitHub issue: #14620
Corrected an invalid apply_to value (classic_queue instead of classic_queues)
on the policy declaration form.
Declaring a policy "directly" via the HTTP API was not affected.
GitHub issue: #15054
Queue declaration form fields were reordered so that the queue type dropdown comes before the virtual host.
GitHub issue: #15017
The order of configured OAuth 2 resource servers is now preserved in the management UI. Additionally, a resource server ID can now be pre-selected during service-provider-initiated logons.
GitHub issue: #15044
GET /metrics/per-object responses on systems with thousands of objections now takes 20-30% less time.
GitHub issue: #15035
Prometheus scraping endpoint responses are now streamed instead of being fully buffered before transmission. This reduces memory peak footprint and improves response times for nodes with a larger number of objects.
GitHub issue: #15018
Fixed a dependency loading issue with ddskerl (a Prometheus library dependency)
that could cause stop_app to fail.
GitHub issue: #15027
rabbitmq-queues quorum_status could run into an exception when a quorum queue member dies before recording any metrics.
GitHub issue: #15003
The plugin now supports the mqttv3.1 WebSocket subprotocol in addition to mqtt,
improving compatibility with older MQTT clients.
GitHub issue: #15009
The plugin now uses IPv6 discovery endpoints in IPv6-only environments.
GitHub issue: #14974
Trace files served via the management UI now include proper UTF-8 charset specification.
GitHub issue: #14970
The plugin now merges user-provided TLS options with the options it needs in a safer manner.
GitHub issue: #15116