2025-06-05 05:24:01 +08:00
RabbitMQ `4.1.1` is a maintenance release in the `4.1.x` [release series ](https://www.rabbitmq.com/release-information ).
2025-06-05 05:27:31 +08:00
It is **strongly recommended** that you read [4.1.0 release notes ](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v4.1.0 )
2025-06-05 05:24:01 +08:00
in detail if upgrading from a version prior to `4.1.0` .
### Minimum Supported Erlang Version
2025-06-05 20:30:13 +08:00
[RabbitMQ and Erlang/OTP Compatibility Matrix ](https://www.rabbitmq.com/docs/which-erlang ) has more details on Erlang version requirements for RabbitMQ.
2025-06-05 05:24:01 +08:00
Nodes **will fail to start** on older Erlang releases.
## Changes Worth Mentioning
Release notes can be found on GitHub at [rabbitmq-server/release-notes ](https://github.com/rabbitmq/rabbitmq-server/tree/v4.1.x/release-notes ).
### Core Server
#### Enhancements
* [Default queue type ](https://www.rabbitmq.com/docs/vhosts#default-queue-type ) is now injected into virtual host metadata when the virtual host
is created.
This seemingly subtle change elimiantes confusing inconsistencies between different
definition export methods and scenarios.
GitHub issue: [#13854 ](https://github.com/rabbitmq/rabbitmq-server/pull/13854 )
* Empty classic queues init faster after a clean shutdown.
GitHub issue: [#13870 ](https://github.com/rabbitmq/rabbitmq-server/pull/13870 )
#### Bug Fixes
* Classic queue message store compaction could fall behind (not be able to keep up with)
very busy publishers.
GitHub issue: [#13987 ](https://github.com/rabbitmq/rabbitmq-server/pull/13987 )
* Classic queue message store could run into a rare exception
when a message was routed to multiple queues.
GitHub issue: [#13758 ](https://github.com/rabbitmq/rabbitmq-server/issues/13758 )
* Quorum queue commit map operation order was Erlang-version specific,
potentially leading to confusing inconsistencies between replica behaviors.
GitHub issue: [#14025 ](https://github.com/rabbitmq/rabbitmq-server/pull/14025 )
* Quorum queue failed to recover from a rare timeout during cluster formation.
GitHub issue: [#13828 ](https://github.com/rabbitmq/rabbitmq-server/issues/13828 )
* RabbitMQ could fail to log certain client connection errors for TLS-enabled
listeners.
GitHub issue: [#13985 ](https://github.com/rabbitmq/rabbitmq-server/pull/13985 )
2025-06-05 20:30:13 +08:00
* Private key password could appear in certain exceptions at (failed) node boot time.
GitHub issue: [#13999 ](https://github.com/rabbitmq/rabbitmq-server/pull/13999 ), [#14028 ](https://github.com/rabbitmq/rabbitmq-server/pull/14028 )
### MQTT Plugin
#### Bug Fixes
* When an MQTTv5 client that had a QoS 0 subscription is closed, the
transient queue that was backing it will now be deleted.
GitHub issue: [#14006 ](https://github.com/rabbitmq/rabbitmq-server/pull/14006 )
2025-06-05 05:24:01 +08:00
### Stream Plugin
#### Bug Fixes
* Stream producer could run into an exception (`accept_chunk_out_of_order`) when a publishing filter
was enabled.
GitHub issue: [#13897 ](https://github.com/rabbitmq/rabbitmq-server/issues/13897 )
* Stream [SAC ](https://www.rabbitmq.com/docs/streams#single-active-consumer ) coordinator failed when a super stream consumer was added next to
a SAC consumer.
GitHub issue: [#13835 ](https://github.com/rabbitmq/rabbitmq-server/issues/13835 )
### CLI Tools
#### Enhancements
* `rabbitmq-queues force_checkpoint [--vhost-pattern <pattern>] [--queue-pattern <pattern>]`
is a new command that forces a group of quorum queues to take a checkpoint and
delete its on disk segment files, where possible.
GitHub issue: [#13938 ](https://github.com/rabbitmq/rabbitmq-server/pull/13938 )
### Management Plugin
#### Enhancements
* A separate chain for authentication and authorization backends now can be used
used exclusively for the HTTP API and the management UI.
GitHub issue: [#13819 ](https://github.com/rabbitmq/rabbitmq-server/pull/13819 )
* Reduced memory footprint of the plugin for certain workloads.
GitHub issue: [#13900 ](https://github.com/rabbitmq/rabbitmq-server/pull/13900 )
* When UI session expires, the user is redirected to the login page.
GitHub issue: [#13975 ](https://github.com/rabbitmq/rabbitmq-server/pull/13975 )
2025-06-05 20:46:33 +08:00
* `GET /api/health/checks/below-node-connection-limit` is a new health check
2025-06-05 05:24:01 +08:00
that responds a 200 OK if the target node has fewer connections to the AMQP
and AMQPS ports than the configured maximum.
GitHub issue: [#13782 ](https://github.com/rabbitmq/rabbitmq-server/issues/13782 )
* `GET /api/health/checks/ready-to-serve-clients` is a new health check
that responds a 200 OK if the target node is ready to serve clients
(booted, not above the connection limit, not in [maintenance mode ](https://www.rabbitmq.com/docs/upgrade#maintenance-mode )).
GitHub issue: [#13782 ](https://github.com/rabbitmq/rabbitmq-server/issues/13782 )
* Protocol listener health check now supports comma-separated lists of
protocol names.
GitHub issue: [#13874 ](https://github.com/rabbitmq/rabbitmq-server/pull/13874 )
* New page for declaring super streams (partitioned streams).
GitHub issue: [#13852 ](https://github.com/rabbitmq/rabbitmq-server/pull/13852 )
### OAuth 2 Plugin
#### Enhancements
* Select variables now can be used in scopes, for example: `"rabbitmq.write:*/x-{vhost}-*/u-{sub}-*"`
GitHub issue: [#14008 ](https://github.com/rabbitmq/rabbitmq-server/pull/14008 )
### Shovel Plugin
#### Bug Fixes
* Shovels could fail to convert messages published by an AMQP 0-9-1
client to AMQP 1.0 if the headers had a complex structure.
GitHub issue: [#13801 ](https://github.com/rabbitmq/rabbitmq-server/pull/13801 )
### Dependency Changes
* `ra` was updated to [`2.16.9` ](https://github.com/rabbitmq/ra/releases )
* `osiris` was updated to [`1.8.8` ](https://github.com/rabbitmq/osiris/releases )
## Source Code Archives
To obtain source code of the entire distribution, please download the archive named `rabbitmq-server-4.1.1.tar.xz`
instead of the source tarball produced by GitHub.