RabbitMQ 4.0.3
is a maintenance release in the 4.0.x
release series.
Starting June 1st, 2024, community support for this series will only be provided to regularly contributing users and those
who hold a valid commercial support license.
It is strongly recommended that you read 4.0 release notes
in detail if upgrading from a version prior to 4.0.0
.
Minimum Supported Erlang Version
This release requires Erlang 26 and supports Erlang versions up to 26.2.x
.
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 Broker
Bug Fixes
-
Classic queues could run into an exception.
Kudos to @netrmqdev for helping the core team reproduce this rare behavior.
GitHub issue: #12367
-
Continuous membership reconciliation of quorum queues did not propagate a timeout error.
Contributed by @SimonUnge.
GitHub issue: #12578
-
Quorum queues could truncate the log too aggresively (by one entry too many).
GitHub issue: #12358
-
Quorum queues failed to requeue a message with a specific workload where consumers
requeued a delivery and then immediately cancelled themselves.GitHub issue: #12442
-
When a quorum queue was forced to shrink, it did not stop the replicas on the nodes that were
removed from the list of replicas. In many cases this had no visible effects because the node
in question is stopped or even removed entirely from the cluster.Contributed by @Ayanda-D.
GitHub issue: #12475
-
AMQP 1.0 implementation now complies with the Anonymous Terminus extension (section 2.2.2 Routing Errors).
GitHub issue: #12397
-
For AMQP 1.0 clients, correct (compatible, sensible) combinations of the settle mode and a transfer's
settled
field
are now enforced.GitHub issue: #12371
-
If an AMQP 1.0 client used a reserved annotation key, the connection was closed
with an exception.GitHub issue: #12527
-
Messages with arrays in annotations published by AMQP 1.0 publishers and consumed by AMQP 0-9-1 consumers
lead to an exception.GitHub issue: #12572
-
Quorum queues with a configured delivery limit could run into an exception.
GitHub issue: #12405
-
Publisher ID length is now validated to not exceed its internal limit of 255 bytes.
GitHub issue: #12499
Enhancements
-
Initial support for Erlang/OTP 27, starting with
27.1.2
.Releases prior to
27.1.2
are affected
by several bugs that can seriously affect RabbitMQ users, in particular those using TLS for client connections.RPM and Debian packages will reflect Erlang 27 support in their metadata starting with a later patch release,
4.0.4
.GitHub issue: #12208 (and many others, including on the Erlang/OTP side)
-
Delivery requeue history is now better tracked using AMQP 1.0's Modified Outcome feature.
GitHub issue: #12506
-
Nodes now avoid logging potentially confusing messages about schema data store operations when
querying for traces of any deprecated (or removed) features in the system.GitHub issue: #12348
Prometheus Plugin
Bug Fixes
-
rabbitmq_queue_exchange_messages_published_total
included a duplicatevhost
label.Contributed by @LoisSotoLopez.
GitHub issue: #12347
Management Plugin
Bug Fixes
-
GET /api/queues/{vhost}
and similar endpoints ran into an exception when a sorting parameter was provided and one of the
queues in the result set was a quorum one.GitHub issue: #12374
Dependency Changes
- CSV was upgraded to
3.2.1
Source Code Archives
To obtain source code of the entire distribution, please download the archive named rabbitmq-server-4.0.3.tar.xz
instead of the source tarball produced by GitHub.