RabbitMQ 4.2.6 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.
Minimum Supported Erlang Version
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on Erlang version requirements for RabbitMQ.
Nodes will fail to start on older Erlang releases.
Changes Worth Mentioning
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Core Server
Bug Fixes
-
Quorum queues:
get_checked_outaux command could return messages in incorrect orderGitHub issue: #16008
-
rabbitmqctl forget_cluster_nodenow removes all quorum queue and stream members (replicas)
before proceeding to leave the metadata store cluster.This order minimizes the risk of some replicas being left behind on the leaving node.
GitHub issue: #15729
-
The channel limit exceeded error message now correctly identifies the per-user limit
as the reasonGitHub issue: #15750
-
AMQP 0-9-1:
configurepermission checks now apply to passive queue and exchange declarations,
matching the behavior of their regular counterparts -
Khepri: missing keys are now correctly distinguished from errors in certain internal operations,
avoiding spurious error-level log messagesGitHub issue: #15942
-
Bindings targeting Direct Reply-to pseudo-queues are now rejected instead of
being silently accepted without any functional effectGitHub issue: #15935
Enhancements
-
More
rabbitmq.confkeys now accept tagged values (e.g.,encrypted:...)GitHub issue: #15808
-
When quorum queue members (replicas) are deleted from a node, either manually
viarabbitmq-queues shrinkor as part ofrabbitmqctl forget_cluster_node,
the members are stopped in parallelGitHub issue: #15081
-
AMQP 0-9-1:
configurepermission checks now apply to passive queue and exchange declarations,
matching the behavior of their regular counterpartsGitHub issue: #16085
-
AMQP 0-9-1: when a connection's credentials are refreshed, the permissions cache is now
cleared and consumer permissions are re-validated immediatelyGitHub issue: #16092
Management Plugin
Bug Fixes
-
effective_policy_definitionin HTTP API responses now returns an empty JSON object
(not an array or empty string) when no policy applies to a queueGitHub issue: #16017
-
Management UI: OAuth 2 combined with basic_auth could fail to reload provider
configuration correctlyGitHub issue: #15858
-
Management UI: preference cookie expiry now respects the configured session timeout
setting rather than using a hardcoded valueGitHub issue: #15814
-
Management UI: users were presented with a 401 error after changing their own password
via the UI. The session is now refreshed automaticallyGitHub issue: #15730
-
The deprecated, unused
GET /api/authendpoint was removedIt has been out of use since 3.11 but never removed.
GitHub issue: #16083
-
POST /api/users/bulk-deletenow respects theprotected_usersconfiguration,
matching the behavior of the single-userDELETE /api/users/:nameendpointGitHub issue: #16143
-
Quorum queue status and stream tracking endpoints now enforce virtual host
access checks, consistent with all other vhost-scoped endpointsGitHub issue: #16104
Enhancements
-
HTTP API displays static connection info (peer address, TLS details, auth mechanism)
even when stats collection is disabled viarabbitmq.confGitHub issue: #16009
-
Super stream creation via HTTP API now verifies
configurepermission, matching
the stream protocol code pathGitHub issue: #16099
-
Management API regex filters (
?name=...&use_regex=true) now enforce match limits,
preventing pathological patterns from consuming excessive CPU timeGitHub issue: #16074
MQTT Plugin
Bug Fixes
-
Fixed a timing-sensitive issue around Last Will message delivery and session expiration
GitHub issue: #15999
Enhancements
-
MQTT QoS 0 queue type now reports member information in management API responses
GitHub issue: #15656
Web MQTT Plugin
Enhancements
-
A default
max_frame_sizeis now set on WebSocket connections, bounding decompressed frame sizes.
The limit starts atmqtt.max_packet_size_unauthenticatedand is raised after successful CONNECTGitHub issue: #16180
-
A
login_timeoutis now enforced for WebSocket connections, matching the TCP listener behaviorGitHub issue: #16120
-
WebSocket Origin header validation is now available via
web_mqtt.allow_originsGitHub issue: #16158
Web STOMP Plugin
Enhancements
-
A default
max_frame_sizeis now set on WebSocket connections. A smaller pre-authentication
limit is raised after successful STOMP CONNECT, matching the Web MQTT patternGitHub issue: #16180
-
A
login_timeoutis now enforced for WebSocket connections, matching the TCP listener behaviorGitHub issue: #16120
-
WebSocket Origin header validation is now available via
web_stomp.allow_originsGitHub issue: #16158
Shovel Plugin
Bug Fixes
-
AMQP 1.0 shovels now properly detach links when closing connections, preventing
spurious error log entries during shutdownGitHub issue: #15603
-
AMQP 1.0 shovel status no longer includes full connection URIs in API responses
and CLI outputGitHub issue: #16108
Shovel Management Plugin
Bug Fixes
-
DELETE operations now require the
policymakertag, matching the
federation plugin counterpartGitHub issue: #16051
Federation Management Plugin
Bug Fixes
-
Federation link restart operations now require the
policymakertagGitHub issue: #16051
OAuth 2 Plugin
Bug Fixes
-
The auth cache backend now correctly delegates token expiry timestamps to the wrapped backend,
ensuring connections are closed when tokens expireGitHub issue: #16100
-
OAuth 2 management UI: improved provider configuration loading and rendering
GitHub issue: #15858
LDAP Plugin
Bug Fixes
-
DN values are now handled per RFC 4514
GitHub issue: #16101
Trust Store Plugin
Enhancements
-
Refactored certificate identification to avoid (unlikely) conflicts
GitHub issue: #16116
-
Proper CLI commands for trust store certificate management have been introduced
GitHub issue: #15746
-
Rejected certificates are now logged with additional diagnostic details
GitHub issue: #15889
Consistent Hashing Exchange Plugin
Bug Fixes
-
Binding weights above 10,000 are now rejected. Previously, extremely large weights could cause
excessive memory allocationGitHub issue: #16118