Releases: rabbitmq/rabbitmq-server
RabbitMQ 3.8.12-beta.1
RabbitMQ 3.8.12-beta.1
RabbitMQ 3.8.12-beta.1 is a preview of a maintenance release that contains bug fixes.
Erlang/OTP Compatibility Notes
This release requires Erlang 22 or
Erlang 23.
Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 22.3.x.
Upgrade and Compatibility Notes
Upgrade Doc Guides and Change Log
See 3.8.0 release notes upgrade and
compatibility notes first if upgrading from an earlier release series (e.g. 3.7.x).
See the Upgrading guide for general documentation on upgrades and
RabbitMQ change log for release notes of other releases.
Upgrading to Erlang 22.x or Later Versions
When upgrading to this release from 3.7.15 or an older version, extra care has to be taken.
Because older RabbitMQ CLI tools can be incompatible with Erlang 22+ releases,
RabbitMQ must be upgraded at the same time as Erlang.
Alternatively the node can be upgraded to 3.7.18 on Erlang 21.3 first,
then Erlang 22.x or 23.x, then RabbitMQ to the most recent 3.8.x release.
Getting Help
Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list
and RabbitMQ community Slack.
Changes Worth Mentioning
Prometheus Plugin
Bug Fixes
-
AuthN authentication attempts metrics produced duplicate
TYPEandHELPstrings in
the scraping API endpoint output.Some metrics were renamed to avoid duplication. The new names are
auth_attempts_detailed_total,
auth_attempts_detailed_succeeded_total, andauth_attempts_detailed_failed_total.This issue is specific to RabbitMQ
3.8.10and3.8.11.GitHub issue: rabbitmq/rabbitmq-server#2740
Dependency Upgrades
No dependency changes.
Source Code Archives
To obtain source code of the entire distribution, please download the archive named rabbitmq-server-3.8.12.tar.xz
instead of the source tarball produced by GitHub.
RabbitMQ 3.8.11
RabbitMQ 3.8.11
RabbitMQ 3.8.11 is a maintenance release that contains bug fixes.
This release no longer supports Erlang 21.3.
Erlang/OTP Compatibility Notes
This release requires Erlang 22 or
Erlang 23.
Erlang 21.3 is no longer supported.
22.3 or 23.2 releases are recommended.
Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 22.3.x.
Upgrade and Compatibility Notes
Upgrade Doc Guides and Change Log
See 3.8.0 release notes upgrade and
compatibility notes first if upgrading from an earlier release series (e.g. 3.7.x).
See the Upgrading guide for general documentation on upgrades and
RabbitMQ change log for release notes of other releases.
Upgrading to Erlang 22.x or Later Versions
When upgrading to this release from 3.7.15 or an older version, extra care has to be taken.
Because older RabbitMQ CLI tools can be incompatible with Erlang 22+ releases,
RabbitMQ must be upgraded at the same time as Erlang.
Alternatively the node can be upgraded to 3.7.18 on Erlang 21.3 first,
then Erlang 22.x or 23.x, then RabbitMQ to the most recent 3.8.x release.
Getting Help
Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list
and RabbitMQ community Slack.
Changes Worth Mentioning
Core Server
Bug Fixes
-
Quorum queues that had active consumers during a rolling cluster upgrade could run into an exception and restart loop.
This issue is specific to RabbitMQ
3.8.10.GitHub issue: rabbitmq/rabbitmq-server#2728
-
Nodes that had
reverse_dns_lookupset totruecould not accept client connections.This issue is specific to RabbitMQ
3.8.10.GitHub issue: rabbitmq/rabbitmq-server#2730
Dependency Upgrades
No dependency changes.
Source code archives
Warning: The source code archive provided by GitHub only contains the source of the broker, not the plugins or the client libraries.
Please download the archive named rabbitmq-server-3.8.11.tar.xz.
RabbitMQ 3.8.10
RabbitMQ 3.8.10
Important: this release has been superseded by 3.8.11
which addresses a couple of bugs specific to this release (3.8.10).
All users are advised to consult the set of changes in this release but then upgrade straight
to 3.8.11 or a newer version if available and skip this release.
RabbitMQ 3.8.10 is a maintenance release.
Besides containing several bug fixes, it introduces a couple new features for quorum queues.
This release no longer supports Erlang 21.3.
Erlang/OTP Compatibility Notes
This release requires Erlang 22 or
Erlang 23.
Erlang 21.3 is no longer supported.
22.3 or 23.1 releases are recommended.
Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 22.3.x.
Upgrade and Compatibility Notes
Deprecations
This release deprecates boot time definition import build into the management plugin.
The feature still exists but is no longer documented or tested. Please switch to
the built-in definition import mechanism:
# DEPRECATED, requires management plugin to be enabled,
# does not support import of definitions that depend on plugins
# (e.g. Shovels or custom exchanges)
management.load_definitions = /path/to/definitions/file.jsonto
# built-in feature, supports import of definitions
# that depend on plugins (e.g. Shovels or custom exchanges)
load_definitions = /path/to/definitions/file.jsonDefinition import in the management plugin (management.load_definitions) will be removed in
a future RabbitMQ release.
Upgrade Doc Guides and Change Log
See 3.8.0 release notes upgrade and
compatibility notes first if upgrading from an earlier release series (e.g. 3.7.x).
See the Upgrading guide for general documentation on upgrades and
RabbitMQ change log for release notes of other releases.
Upgrading to Erlang 22.x or Later Versions
When upgrading to this release from 3.7.15 or an older version, extra care has to be taken.
Because older RabbitMQ CLI tools can be incompatible with Erlang 22+ releases,
RabbitMQ must be upgraded at the same time as Erlang.
Alternatively the node can be upgraded to 3.7.18 on Erlang 21.3 first,
then Erlang 22.x or 23.x, then RabbitMQ to the most recent 3.8.x release.
Getting Help
Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list
and RabbitMQ community Slack.
Changes Worth Mentioning
Core Server
Bug Fixes
-
Starting with
3.8.0, an unintentionally introduced assertion could prevent classic mirrored queue
mirrors from starting successfully in case the primary replica changed concurrently with their startup.GitHub issue: rabbitmq/rabbitmq-server#2449
-
Repeated polling of a quorum queue with
basic.getthat yielded an empty response could
result in an unbounded growth of log segment files on on disk.GitHub issue: rabbitmq/rabbitmq-server#2651
-
RabbitMQ core plugin activation was revisited to be closer to that of
3.7.x. This does not any
related improvements w.r.t. definition import, e.g. those introudced in RabbitMQ3.8.6.GitHub issue: rabbitmq/rabbitmq-server#2656
-
Syslog dependency was not started correctly. This meant no log messages were sent to Syslog.
GitHub issue: rabbitmq/rabbitmq-server#2456
-
rabbitmq-diagnostics check_if_node_is_quorum_criticalreturned a false positive for a node marked for maintenance.
Given the refinement to therabbitmq-upgrade draincommand in rabbitmq/rabbitmq-server#2474,
rabbitmq-diagnostics check_if_node_is_quorum_criticalnow will unconditionally return a success
if target node is under maintanence.GitHub issue: rabbitmq/rabbitmq-server#2469
-
Queues could update their internal bookkeeping state incorrectly in some cases, leading to a
file_handle_cache
operation exception.GitHub issue: rabbitmq/rabbitmq-server#2488
Enhancements
-
Quorum queues now can use the
reject-publish
max length overflow strategy.GitHub issue: rabbitmq/rabbitmq-server#2407
-
Quorum queues now support consumer priority.
GitHub issue: rabbitmq/rabbitmq-server#2451
-
Per-user connection and queue limits. This is similar to per-vhost limits but,
as the name suggests, these limits are associated for a given user.The limits are controlled using CLI tools or the HTTP API:
# limits user "user-e8d3f85c" to up to five connections and ten channels rabbitmqctl set_user_limits "user-e8d3f85c" '{"max-connections": 5, "max-channels": 10}' # clears the maximum number of connections limit for the user rabbitmqctl clear_user_limits "user-e8d3f85c" "max-connections" # clears all limits for the user rabbitmqctl clear_user_limits "user-e8d3f85c" "all"
Contributed by Erlang Solutions, sponsored by CloudAMQP.
GitHub issue: rabbitmq/rabbitmq-server#607, rabbitmq/rabbitmq-server#2380
-
TLSv1.3 is no longer considered experimental (on Erlang 23) and excluded from TLS listener configuration.
GitHub issue: rabbitmq/rabbitmq-common#415
-
When a node is put under maintenance, it will now stop all local quorum queue replicas after completing
leadership transfer. This means that no quorum queue replicas on the node will be considered for
leader elections.GitHub issue: rabbitmq/rabbitmq-server#2474
-
Nodes now keep track of failed client authentication attempts and expose it as a metric via both the Prometheus endpoint
and the HTTP API atGET /api/auth/attempts/{node}.The tracking is done for every cluster node individually. The protocols that support authentication attempt tracking
right now are AMQP 0-9-1, AMQP 1.0 and MQTT.GitHub issue: rabbitmq/rabbitmq-server#2436
-
bypass_pem_cacheis a new configuration key that makes it possible to disable the cache of PEM files
used by the Erlang TLS implementation.
This rotated certificates quicker to detect for nodes but can also increase latency for inbound
TLS connections, e.g. under high connection churn scenarios.GitHub issue: rabbitmq/rabbitmq-server#2686
-
Definition import now safely handles some missing queue object arguments.
GitHub issue: rabbitmq/rabbitmq-server#2668
-
rabbitmq.confschema now allows for peer certificate chain verification depth to be set to zero.
When this value is used, peer certificate must be signed by a trusted CA certificate directly in order
for the verification to pass.GitHub issue: rabbitmq/rabbitmq-server#2493
-
RABBITMQ_IO_THREAD_POOL_SIZEwill no longer be respected by RabbitMQ nodes. It is no longer relevant
with supported Erlang versions and will simplifyrabbitmq-diagnostics runtime_thread_statsoutput.GitHub issue: rabbitmq/rabbitmq-server#2473
-
The
+Kruntime parameter is no longer used by RabbitMQ nodes as it has no effect
with supported Erlang versions.Contributed by Ayanda Dube (Erlang Solutions).
GitHub issue: rabbitmq/rabbitmq-server#2470
CLI
Enhancements
- It is n...
RabbitMQ 3.8.10-rc.6
RabbitMQ 3.8.10-rc.6
RabbitMQ 3.8.10-rc.6 is a preview of a maintenance release.
Besides containing several bug fixes, it introduces a couple new features for quorum queues.
This release no longer supports Erlang 21.3.
Erlang/OTP Compatibility Notes
This release requires Erlang 22 or
Erlang 23.
Erlang 21.3 is no longer supported.
22.3 or 23.1 releases are recommended.
Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 22.3.x.
Upgrade and Compatibility Notes
Deprecations
This release deprecates boot time definition import build into the management plugin.
The feature still exists but is no longer documented or tested. Please switch to
the built-in definition import mechanism:
# DEPRECATED, requires management plugin to be enabled,
# does not support import of definitions that depend on plugins
# (e.g. Shovels or custom exchanges)
management.load_definitions = /path/to/definitions/file.jsonto
# built-in feature, supports import of definitions
# that depend on plugins (e.g. Shovels or custom exchanges)
load_definitions = /path/to/definitions/file.jsonDefinition import in the management plugin (management.load_definitions) will be removed in
a future RabbitMQ release.
Upgrade Doc Guides and Change Log
See 3.8.0 release notes upgrade and
compatibility notes first if upgrading from an earlier release series (e.g. 3.7.x).
See the Upgrading guide for general documentation on upgrades and
RabbitMQ change log for release notes of other releases.
Upgrading to Erlang 22.x or Later Versions
When upgrading to this release from 3.7.15 or an older version, extra care has to be taken.
Because older RabbitMQ CLI tools can be incompatible with Erlang 22+ releases,
RabbitMQ must be upgraded at the same time as Erlang.
Alternatively the node can be upgraded to 3.7.18 on Erlang 21.3 first,
then Erlang 22.x or 23.x, then RabbitMQ to the most recent 3.8.x release.
Getting Help
Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list
and RabbitMQ community Slack.
Changes Worth Mentioning
Core Server
Bug Fixes
-
Starting with
3.8.0, an unintentionally introduced assertion could prevent classic mirrored queue
mirrors from starting successfully in case the primary replica changed concurrently with their startup.GitHub issue: rabbitmq/rabbitmq-server#2449
-
Repeated polling of a quorum queue with
basic.getthat yielded an empty response could
result in an unbounded growth of log segment files on on disk.GitHub issue: rabbitmq/rabbitmq-server#2651
-
RabbitMQ core plugin activation was revisited to be closer to that of
3.7.x. This does not any
related improvements w.r.t. definition import, e.g. those introudced in RabbitMQ3.8.6.GitHub issue: rabbitmq/rabbitmq-server#2656
-
Syslog dependency was not started correctly. This meant no log messages were sent to Syslog.
GitHub issue: rabbitmq/rabbitmq-server#2456
-
rabbitmq-diagnostics check_if_node_is_quorum_criticalreturned a false positive for a node marked for maintenance.
Given the refinement to therabbitmq-upgrade draincommand in rabbitmq/rabbitmq-server#2474,
rabbitmq-diagnostics check_if_node_is_quorum_criticalnow will unconditionally return a success
if target node is under maintanence.GitHub issue: rabbitmq/rabbitmq-server#2469
-
Queues could update their internal bookkeeping state incorrectly in some cases, leading to a
file_handle_cache
operation exception.GitHub issue: rabbitmq/rabbitmq-server#2488
Enhancements
-
Quorum queues now can use the
reject-publish
max length overflow strategy.GitHub issue: rabbitmq/rabbitmq-server#2407
-
Quorum queues now support consumer priority.
GitHub issue: rabbitmq/rabbitmq-server#2451
-
Per-user connection and queue limits. This is similar to per-vhost limits but,
as the name suggests, these limits are associated for a given user.The limits are controlled using CLI tools or the HTTP API:
# limits user "user-e8d3f85c" to up to five connections, ten channels and a fifty queues rabbitmqctl set_user_limits "user-e8d3f85c" '{"max-connections": 5, "max-channels": 10, "max-queues": 50}' # clears the maximum number of queues limit for the user rabbitmqctl clear_user_limits "user-e8d3f85c" "max-queues" # clears all limits for the user rabbitmqctl clear_user_limits "user-e8d3f85c" "all"
Contributed by Erlang Solutions, sponsored by CloudAMQP.
GitHub issue: rabbitmq/rabbitmq-server#607, rabbitmq/rabbitmq-server#2380
-
TLSv1.3 is no longer considered experimental (on Erlang 23) and excluded from TLS listener configuration.
GitHub issue: rabbitmq/rabbitmq-common#415
-
When a node is put under maintenance, it will now stop all local quorum queue replicas after completing
leadership transfer. This means that no quorum queue replicas on the node will be considered for
leader elections.GitHub issue: rabbitmq/rabbitmq-server#2474
-
Nodes now keep track of failed client authentication attempts and expose it as a metric via both the Prometheus endpoint
and the HTTP API atGET /api/auth/attempts/{node}.The tracking is done for every cluster node individually. The protocols that support authentication attempt tracking
right now are AMQP 0-9-1, AMQP 1.0 and MQTT.GitHub issue: rabbitmq/rabbitmq-server#2436
-
bypass_pem_cacheis a new configuration key that makes it possible to disable the cache of PEM files
used by the Erlang TLS implementation.
This rotated certificates quicker to detect for nodes but can also increase latency for inbound
TLS connections, e.g. under high connection churn scenarios.GitHub issue: rabbitmq/rabbitmq-server#2686
-
Definition import now safely handles some missing queue object arguments.
GitHub issue: rabbitmq/rabbitmq-server#2668
-
rabbitmq.confschema now allows for peer certificate chain verification depth to be set to zero.
When this value is used, peer certificate must be signed by a trusted CA certificate directly in order
for the verification to pass.GitHub issue: rabbitmq/rabbitmq-server#2493
-
RABBITMQ_IO_THREAD_POOL_SIZEwill no longer be respected by RabbitMQ nodes. It is no longer relevant
with supported Erlang versions and will simplifyrabbitmq-diagnostics runtime_thread_statsoutput.GitHub issue: rabbitmq/rabbitmq-server#2473
-
The
+Kruntime parameter is no longer used by RabbitMQ nodes as it has no effect
with supported Erlang versions.Contributed by Ayanda Dube (Erlang Solutions).
GitHub issue: rabbitmq/rabbitmq-server#2470
CLI
Enhancements
-
It is now possible to enable all feature flags in a single command:
rabbitmqctl enable_feature_flag --all
Note that this will only enable the flags supported by all cluster members.
GitHub issue: rabbitmq/rabbitmq-cli#455
-
`rabbitmq-que...
RabbitMQ 3.8.10-rc.5
RabbitMQ 3.8.10-rc.5
RabbitMQ 3.8.10-rc.5 is a preview of a maintenance release.
Besides containing several bug fixes, it introduces a couple new features for quorum queues.
This release no longer supports Erlang 21.3.
Erlang/OTP Compatibility Notes
This release requires Erlang 22 or
Erlang 23.
Erlang 21.3 is no longer supported.
22.3 or 23.1 releases are recommended.
Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 22.3.x.
Upgrade and Compatibility Notes
Upgrade Doc Guides and Change Log
See 3.8.0 release notes upgrade and
compatibility notes first if upgrading from an earlier release series (e.g. 3.7.x).
See the Upgrading guide for general documentation on upgrades and
RabbitMQ change log for release notes of other releases.
Upgrading to Erlang 22.x or Later Versions
When upgrading to this release from 3.7.15 or an older version, extra care has to be taken.
Because older RabbitMQ CLI tools can be incompatible with Erlang 22+ releases,
RabbitMQ must be upgraded at the same time as Erlang.
Alternatively the node can be upgraded to 3.7.18 on Erlang 21.3 first,
then Erlang 22.x or 23.x, then RabbitMQ to the most recent 3.8.x release.
Getting Help
Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list
and RabbitMQ community Slack.
Changes Worth Mentioning
Core Server
Bug Fixes
-
Starting with
3.8.0, an unintentionally introduced assertion could prevent classic mirrored queue
mirrors from starting successfully in case the primary replica changed concurrently with their startup.GitHub issue: rabbitmq/rabbitmq-server#2449
-
Repeated polling of a quorum queue with
basic.getthat yielded an empty response could
result in an unbounded growth of log segment files on on disk.GitHub issue: rabbitmq/rabbitmq-server#2651
-
RabbitMQ core plugin activation was revisited to be closer to that of
3.7.x. This does not any
related improvements w.r.t. definition import, e.g. those introudced in RabbitMQ3.8.6.GitHub issue: rabbitmq/rabbitmq-server#2656
-
Syslog dependency was not started correctly. This meant no log messages were sent to Syslog.
GitHub issue: rabbitmq/rabbitmq-server#2456
-
rabbitmq-diagnostics check_if_node_is_quorum_criticalreturned a false positive for a node marked for maintenance.
Given the refinement to therabbitmq-upgrade draincommand in rabbitmq/rabbitmq-server#2474,
rabbitmq-diagnostics check_if_node_is_quorum_criticalnow will unconditionally return a success
if target node is under maintanence.GitHub issue: rabbitmq/rabbitmq-server#2469
-
Queues could update their internal bookkeeping state incorrectly in some cases, leading to a
file_handle_cache
operation exception.GitHub issue: rabbitmq/rabbitmq-server#2488
Enhancements
-
Quorum queues now can use the
reject-publish
max length overflow strategy.GitHub issue: rabbitmq/rabbitmq-server#2407
-
Quorum queues now support consumer priority.
GitHub issue: rabbitmq/rabbitmq-server#2451
-
Per-user connection and queue limits. This is similar to per-vhost limits but,
as the name suggests, these limits are associated for a given user.The limits are controlled using CLI tools or the HTTP API:
# limits user "user-e8d3f85c" to up to five connections, ten channels and a fifty queues rabbitmqctl set_user_limits "user-e8d3f85c" '{"max-connections": 5, "max-channels": 10, "max-queues": 50}' # clears the maximum number of queues limit for the user rabbitmqctl clear_user_limits "user-e8d3f85c" "max-queues" # clears all limits for the user rabbitmqctl clear_user_limits "user-e8d3f85c" "all"
Contributed by Erlang Solutions, sponsored by CloudAMQP.
GitHub issue: rabbitmq/rabbitmq-server#607, rabbitmq/rabbitmq-server#2380
-
TLSv1.3 is no longer considered experimental (on Erlang 23) and excluded from TLS listener configuration.
GitHub issue: rabbitmq/rabbitmq-common#415
-
When a node is put under maintenance, it will now stop all local quorum queue replicas after completing
leadership transfer. This means that no quorum queue replicas on the node will be considered for
leader elections.GitHub issue: rabbitmq/rabbitmq-server#2474
-
Nodes now keep track of failed client authentication attempts and expose it as a metric via both the Prometheus endpoint
and the HTTP API atGET /api/auth/attempts/{node}.The tracking is done for every cluster node individually. The protocols that support authentication attempt tracking
right now are AMQP 0-9-1, AMQP 1.0 and MQTT.GitHub issue: rabbitmq/rabbitmq-server#2436
-
bypass_pem_cacheis a new configuration key that makes it possible to disable the cache of PEM files
used by the Erlang TLS implementation.
This rotated certificates quicker to detect for nodes but can also increase latency for inbound
TLS connections, e.g. under high connection churn scenarios.GitHub issue: rabbitmq/rabbitmq-server#2686
-
Definition import now safely handles some missing queue object arguments.
GitHub issue: rabbitmq/rabbitmq-server#2668
-
rabbitmq.confschema now allows for peer certificate chain verification depth to be set to zero.
When this value is used, peer certificate must be signed by a trusted CA certificate directly in order
for the verification to pass.GitHub issue: rabbitmq/rabbitmq-server#2493
-
RABBITMQ_IO_THREAD_POOL_SIZEwill no longer be respected by RabbitMQ nodes. It is no longer relevant
with supported Erlang versions and will simplifyrabbitmq-diagnostics runtime_thread_statsoutput.GitHub issue: rabbitmq/rabbitmq-server#2473
-
The
+Kruntime parameter is no longer used by RabbitMQ nodes as it has no effect
with supported Erlang versions.Contributed by Ayanda Dube (Erlang Solutions).
GitHub issue: rabbitmq/rabbitmq-server#2470
CLI
Enhancements
-
It is now possible to enable all feature flags in a single command:
rabbitmqctl enable_feature_flag --all
Note that this will only enable the flags supported by all cluster members.
GitHub issue: rabbitmq/rabbitmq-cli#455
-
rabbitmq-queues peekis a new command that allows for peeking at a queue position. It is only
supported by quorum queues (and not classic queues):# peeks at the head of queue "qq.1" in virtual host "staging" rabbitmq-queues peek --vhost "staging" "qq.1 1"
GitHub issue: rabbitmq/rabbitmq-cli#452
-
rabbitmq-queues reclaim_quorum_memoryis a new command that forces Raft WAL compaction which in most cases should reduce memory footprint of a quorum queue:rabbitmq-queues reclaim_quorum_memory --vhost "staging" "qq.1"
GitHub issue: rabbitmq/rabbitmq-cli#453
Bug Fixes
-
rabbitmqctl rename_cluster_nodefailed with an error about a missing directory.GitH...
RabbitMQ 3.8.10-beta.1
RabbitMQ 3.8.10-beta.1
RabbitMQ 3.8.10-beta.1 is a preview of a maintenance release.
Besides containing several bug fixes, it introduces a couple new features for quorum queues.
This release no longer supports Erlang 21.3.
Erlang/OTP Compatibility Notes
This release requires Erlang 22 or
Erlang 23.
Erlang 21.3 is no longer supported.
22.3 or 23.1 releases are recommended.
Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 22.3.x.
Upgrade and Compatibility Notes
Upgrade Doc Guides and Change Log
See 3.8.0 release notes upgrade and
compatibility notes first if upgrading from an earlier release series (e.g. 3.7.x).
See the Upgrading guide for general documentation on upgrades and
RabbitMQ change log for release notes of other releases.
Upgrading to Erlang 22.x or Later Versions
When upgrading to this release from 3.7.15 or an older version, extra care has to be taken.
Because older RabbitMQ CLI tools can be incompatible with Erlang 22+ releases,
RabbitMQ must be upgraded at the same time as Erlang.
Alternatively the node can be upgraded to 3.7.18 on Erlang 21.3 first,
then Erlang 22.x or 23.x, then RabbitMQ to the most recent 3.8.x release.
Getting Help
Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list
and RabbitMQ community Slack.
Changes Worth Mentioning
Core Server
Bug Fixes
-
Starting with
3.8.0, an unintentionally introduced assertion could prevent classic mirrored queue
mirrors from starting successfully in case the primary replica changed concurrently with their startup.GitHub issue: rabbitmq/rabbitmq-server#2449
-
Syslog dependency was not started correctly. This meant no log messages were sent to Syslog.
GitHub issue: rabbitmq/rabbitmq-server#2456
-
rabbitmq-diagnostics check_if_node_is_quorum_criticalreturned a false positive for a node marked for maintenance.
Given the refinement to therabbitmq-upgrade draincommand in rabbitmq/rabbitmq-server#2474,
rabbitmq-diagnostics check_if_node_is_quorum_criticalnow will unconditionally return a success
if target node is under maintanence.GitHub issue: rabbitmq/rabbitmq-server#2469
-
Queues could update their internal bookkeeping state incorrectly in some cases, leading to a
file_handle_cache
operation exception.GitHub issue: rabbitmq/rabbitmq-server#2488
Enhancements
-
Quorum queues now can use the
reject-publish
max length overflow strategy.GitHub issue: rabbitmq/rabbitmq-server#2407
-
Quorum queues now support consumer priority.
GitHub issue: rabbitmq/rabbitmq-server#2451
-
Per-user connection and queue limits. This is similar to per-vhost limits but,
as the name suggests, these limits are associated for a given user.The limits are controlled using CLI tools or the HTTP API:
# limits user "user-e8d3f85c" to up to five connections, ten channels and a fifty queues rabbitmqctl set_user_limits "user-e8d3f85c" '{"max-connections": 5, "max-channels": 10, "max-queues": 50}' # clears the maximum number of queues limit for the user rabbitmqctl clear_user_limits "user-e8d3f85c" "max-queues" # clears all limits for the user rabbitmqctl clear_user_limits "user-e8d3f85c" "all"
Contributed by Erlang Solutions, sponsored by CloudAMQP.
GitHub issue: rabbitmq/rabbitmq-server#607, rabbitmq/rabbitmq-server#2380
-
TLSv1.3 is no longer considered experimental (on Erlang 23) and excluded from TLS listener configuration.
GitHub issue: rabbitmq/rabbitmq-common#415
-
When a node is put under maintenance, it will now stop all local quorum queue replicas after completing
leadership transfer. This means that no quorum queue replicas on the node will be considered for
leader elections.GitHub issue: rabbitmq/rabbitmq-server#2474
-
Nodes now keep track of failed client authentication attempts and expose it as a metric via both the Prometheus endpoint
and the HTTP API atGET /api/auth/attempts/{node}.The tracking is done for every cluster node individually. The protocols that support authentication attempt tracking
right now are AMQP 0-9-1, AMQP 1.0 and MQTT.GitHub issue: rabbitmq/rabbitmq-server#2436
-
rabbitmq.confschema now allows for peer certificate chain verification depth to be set to zero.
When this value is used, peer certificate must be signed by a trusted CA certificate directly in order
for the verification to pass.GitHub issue: rabbitmq/rabbitmq-server#2493
-
RABBITMQ_IO_THREAD_POOL_SIZEwill no longer be respected by RabbitMQ nodes. It is no longer relevant
with supported Erlang versions and will simplifyrabbitmq-diagnostics runtime_thread_statsoutput.GitHub issue: rabbitmq/rabbitmq-server#2473
-
The
+Kruntime parameter is no longer used by RabbitMQ nodes as it has no effect
with supported Erlang versions.Contributed by Ayanda Dube (Erlang Solutions).
GitHub issue: rabbitmq/rabbitmq-server#2470
CLI
Enhancements
-
rabbitmq-queues peekis a new command that allows for peeking at a queue position. It is only
supported by quorum queues (and not classic queues):# peeks at the head of queue "qq.1" in virtual host "staging" rabbitmq-queues peek --vhost "staging" "qq.1 1"
GitHub issue: rabbitmq/rabbitmq-cli#452
-
rabbitmq-queues reclaim_quorum_memoryis a new command that forces Raft WAL compaction which in most cases should reduce memory footprint of a quorum queue:rabbitmq-queues reclaim_quorum_memory --vhost "staging" "qq.1"
GitHub issue: rabbitmq/rabbitmq-cli#453
Bug Fixes
-
rabbitmqctl rename_cluster_nodefailed with an error about a missing directory.GitHub issue: rabbitmq/rabbitmq-cli#457
-
Force removal of a node did not remove it from quorum queue member lists.
GitHub issue: rabbitmq/rabbitmq-server#2414
-
CLI tools now pick a unique identifier from a pool. Previously the pool of possible values was theoretically
unbounded, which could result in an atom table exhaustion condition on long running nodes that
had a lot of CLI tool invocations (e.g. CLI tools were used to collect monitoring data frequently).Such use of CLI tools for monitoring is not recommended:
there are better options such as Prometheus and Grafana.GitHub issue: rabbitmq/rabbitmq-cli#461
Federation Plugin
Bug Fixes
-
Federation links that failed to connect due to a TCP connection timeout leaked resources.
Other connection failure scenarios did not result in a leak.GitHub issue: rabbitmq/rabbitmq-federation#119
Management Plugin
Enhancements
-
Individual health checks are now available through the HTTP API.
GitHub issue: rabbitmq/rabbitmq-management#844
Bug Fixes
- Quorum queue consumer counter on on the queue list page was not updated when consumers were cancelled o...
RabbitMQ 3.8.9
RabbitMQ 3.8.9
RabbitMQ 3.8.9 is a maintenance release.
It focuses on bug fixes and usability improvements.
This release no longer supports Erlang 21.3.
Erlang 23 Compatibility
This release is compatible with Erlang 23.
Erlang/OTP Compatibility Notes
This release requires Erlang/OTP 22.0 or later.
22.3 or 23.0 releases are recommended.
Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 22.3.x.
Upgrade and Compatibility Notes
Upgrade Doc Guides and Change Log
See 3.8.0 release notes upgrade and
compatibility notes first if upgrading from an earlier release series (e.g. 3.7.x).
See the Upgrading guide for general documentation on upgrades and
RabbitMQ change log for release notes of other releases.
Upgrading to Erlang 22.x or Later Versions
When upgrading to this release from 3.7.15 or an older version, extra care has to be taken.
Because older RabbitMQ CLI tools can be incompatible with Erlang 22+ releases,
RabbitMQ must be upgraded at the same time as Erlang.
Alternatively the node can be upgraded to 3.7.18 on Erlang 21.3 first,
then Erlang 22.x or 23.x, then RabbitMQ to most recent 3.8.x release.
Getting Help
Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list.
Changes Worth Mentioning
Core Server
Bug Fixes
-
Starting with
3.8.0, an unintentionally introduced assertion could prevent classic mirrored queue
mirrors from starting successfully in case the primary replica changed concurrently with their startup.GitHub issue: rabbitmq/rabbitmq-server#2449
Enhancements
-
Raft implementation's failure detector default polling interval has been increased from 1s to 5s.
The previously used default results in too frequent leader elections in networks with high packet loss
(say, double digit percent).This has no correctness or safety ramifications, however, automated tests that assert on Raft properties
or expect a very fast leader re-election may have to set it back so that peer failures are detected quicker.GitHub issue: rabbitmq/rabbitmq-server#2450
Management Plugin
Bug Fixes
-
The now deprecated intrusive health check endpoint,
GET /api/healthchecks/node, reported failures in the response
but always set the status to200 OK. It now uses the status of500in case of a failure.RabbitMQ Monitoring guide explains why
this health check is no longer recommended and what the alternatives are.GitHub issue: rabbitmq/rabbitmq-management#840
Enhancements
-
When a client doubly encodes a request into JSON, the plugin tries to detect that and will produce a more
helpful 400 response instead of a 500.GitHub issue: rabbitmq/rabbitmq-management#839
Federation Plugin
Bug Fixes
-
When a classic mirrored queue with a replica on every cluster node (this is highly discouraged) was federated,
multiple links could be started by the plugin, potentially making message transfers concurrent
and affecting ordering.GitHub issue: rabbitmq/rabbitmq-federation#114
Enhancements
-
It is now possible to federate exchanges in different virtual hosts in the same cluster for more than one hop.
For example, federate messages from an exchange in virtual host B to C, while B itself is federated from
virtual host A. Previously such messages would have been filtered by the message cycle detection algorithm
which assumed that exchanges are only federated across clusters.GitHub issue: rabbitmq/rabbitmq-federation#116
Kubernetes Peer Discovery Plugin
Bug Fixes
-
Kubernetes API events registered by this plugin mixed up reason and message fields.
Contributed by Gabriele Santomaggio.
GitHub issue: rabbitmq/rabbitmq-peer-discovery-k8s#70
OAuth 2 AuthN/AuthZ Plugin
Enhancements
-
Improved compatibility with Azure AD. This plugin can now be configured to fetch scopes from a non-standard
field in the decoded token value (other than the standardscopesfield).Contributed by @Robert-Gustafsson.
GitHub issue: rabbitmq/rabbitmq-auth-backend-oauth2#53
Source code archives
Warning: The source code archive provided by GitHub only contains the source of the broker, not the plugins or the client libraries.
Please download the archive named rabbitmq-server-3.8.9.tar.xz.
RabbitMQ 3.8.8
RabbitMQ 3.8.8
RabbitMQ 3.8.8 is a maintenance release.
It focuses on bug fixes and usability improvements.
This releases introduces a new node operation mode, called the maintenance mode.
This feature is useful when performing rolling upgrades and is covered
in more detail below.
This is the last RabbitMQ release to support Erlang 21.3.
Erlang 23 Compatibility
This release is compatible with Erlang 23.
Erlang/OTP Compatibility Notes
This release requires Erlang/OTP 21.3 or later.
22.3 or 23.0 releases are recommended.
Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 22.3.x.
Upgrade and Compatibility Notes
Upgrade Doc Guides and Change Log
See 3.8.0 release notes upgrade and
compatibility notes first if upgrading from an earlier release.
See the Upgrading guide for general documentation on upgrades and
RabbitMQ change log for release notes of other releases.
Upgrading to Erlang 22.x or Later Versions
When upgrading to this release from 3.7.15 or an older version, extra care has to be taken.
Because older RabbitMQ CLI tools can be incompatible with Erlang 22+ releases,
RabbitMQ must be upgraded at the same time as Erlang.
Alternatively the node can be upgraded to 3.7.18 on Erlang 21.3 first,
then Erlang 22.x or 23.x, then RabbitMQ to most recent 3.8.x release.
Getting Help
Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list.
Changes Worth Mentioning
Core Server
Enhancements
-
Maintenance mode. This is a new mode operation mode for RabbitMQ nodes. The mode is explicitly turned
on and off by the operator using a bunch of new CLI commands (see below). For mixed-version cluster
compatibility, this feature must be enabled using a feature flag.When a node is being put down for maintenance and in maintenance mode, it will not be available for
serving client traffic and will try to transfer as many of its responsibilities as practically possible
and safe.Currently this involves the following steps:
- Suspend all client connection listeners (no new client connections will be accepted)
- Close all existing client connections: applications are expected to reconnect to other nodes and recover
- Transfer primary replicas of all classic mirrored queues hosted on the target node
- Transfer primary replicas of all quorum queues hosted on the target node, and prevent them from participating
in the subsequently triggered Raft elections - Mark the node as down for maintenance
- At this point, a node shutdown will be least disruptive as the node has already transferred most of its
responsibilities
A node in maintenance mode will not be considered for new primary queue replica placement,
regardless of queue type and the queue master locator policy used.A node in maintenance mode is expected to be shut down, upgraded or reconfigured, and restarted in a short
period of time. Nodes are not expected to be running in this mode for long periods of time.A node in maintenance mode can be revived, that is, brough back into its regular operational state.
When a node is revived restarted (e.g. after an upgrade), it will again accept client connections
and be considered for primary queue replica placements. It will not recover previous client connections
as RabbitMQ never initiates connections to clients, but clients will be able to reconnect to it.This feature is expected to evolve based on the feedback from the community, the field and the
RabbitMQ core team at VMware. For example, it can be adjusted based on the learnings when
adding upgrades support to the RabbitMQ Cluster Operator for Kubernetes.GitHub issue: rabbitmq/rabbitmq-server#2321
CLI
Enhancements
-
rabbitmq-upgrade drainis a new command that puts a node in maintenance mode (see above).
rabbitmq-upgrade reviveis its counterpart that "revives" a node by putting it into the regular
operating mode.rabbitmqctl suspend_listenersis a new command that suspends all client connection listeners
(ports) on the node. This means that existing connections won't be affected but no new connections
will be accepted. This can be useful during upgrades, in particular using the
Blue/Green deployment strategy.rabbitmqctl resume_listenersresumes all client listeners so that they accept new client connections
again.All these commands will have an effect only if the
maintenance_mode_statusflag is enabled.GitHub issue: rabbitmq/rabbitmq-cli#419
MQTT Plugin
Bug Fixes
-
Abrupt client connection termination could result in an Erlang process leak. This resource leak
affects RabbitMQ versions between3.8.5and3.8.7, inclusive.GitHub issue: rabbitmq/rabbitmq-mqtt#239
Management Plugin
Bug Fixes
-
A node that had a lot of on disk data and constrainted resources could spend a very long time
activating the plugin while queue primary replicas were busy recovering the data.GitHub issue: rabbitmq/rabbitmq-server#2437
OAuth 2 AuthN/AuthZ Plugin
Enhancements
-
Simplified scope merging code specific to Keycloak.
Contributed by Simon @SimonAlling Alling.
GitHub issue: rabbitmq/rabbitmq-auth-backend-oauth2#52
Dependency Upgrades
cuttlefishwas upgraded from 2.3.0 to 2.4.1
Source code archives
Warning: The source code archive provided by GitHub only contains the source of the broker, not the plugins or the client libraries.
Please download the archive named rabbitmq-server-3.8.8.tar.xz.
RabbitMQ 3.8.7
RabbitMQ 3.8.7
RabbitMQ 3.8.7 is a maintenance release that patches
a security vulnerability.
RabbitMQ Core team would like to thank Ofir Hamam and Tomer Hadad at Ernst & Young's Hacktics Advanced Security Center
for researching and responsibly disclosing the vulnerability addressed in this release.
Erlang/OTP Compatibility Notes
This release requires Erlang/OTP 21.3 or later.
22.3 or 23.0 releases are recommended.
Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 22.3.x.
Upgrade Doc Guides and Change Log
See 3.8.0 release notes upgrade and
compatibility notes first if upgrading from an earlier release.
See the Upgrading guide for general documentation on upgrades and
RabbitMQ change log for release notes of other releases.
Upgrading to Erlang 21.x or Later Versions
When upgrading to this release from 3.7.6 or an older version, extra care has to be taken.
Since CLI tools from RabbitMQ releases older than 3.7.7 will fail on Erlang 21 or later,
RabbitMQ must be upgraded at the same time as Erlang.
Alternatively the node can be upgraded to 3.7.18 first, then Erlang 22.x or 23.x, then RabbitMQ to most recent
3.8.x release.
Getting Help
Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list.
Changes Worth Mentioning
Core Server
Bug Fixes
-
Addressed a Windows-specific binary planting security vulnerability CVE-2020-5419 that allowed for arbitrary code execution.
The vulnerability requires the attacker to have local access and elevated privileges,
and cannot be executed remotely.CVSS score:
6.7(medium severity).This vulnerability was researched and responsibly disclosed by
Ofir Hamam and Tomer Hadad at Ernst & Young's Hacktics Advanced Security Center. -
In a mixed version cluster, virtual host limits were incorrectly reported for yet-to-be-upgraded nodes.
Contributed by @mnxumalo.
GitHub issue: rabbitmq/rabbitmq-server#2430
CLI Tools
Bug Fixes
-
Definition export using
rabbitmqctl export_definitionsexported optional queue arguments as blank.
Export performed via the HTTP API was not affected by this problem.GitHub issue: rabbitmq/rabbitmq-server#2427
-
Invoking
rabbitmqctl(or other tools) without any arguments produced help output that was inconsistent
fromrabbitmqctl helpin line spacing.
Federation Plugin
Bug Fixes
-
Links in some environments upgraded from earlier
3.8.xversions could run into a data coercion exception
when connection credentials were unencrypted.GitHub issue: rabbitmq/rabbitmq-federation#112
Shovel Plugin
Bug Fixes
-
Shovels where the source is AMQP 1.0 endpoint now gracefully handle link detachment
if the remote end set theclosedattribute tofalse.Contributed by @tstorck.
GitHub issue: rabbitmq/rabbitmq-amqp1.0-client#56
-
Removed some debug logging that was unintentionally polluting standard output even when
debug logging was not enabled.Contributed by @sircinek.
GitHub issue: rabbitmq/rabbitmq-amqp1.0-client#54
Dependency Upgrades
credentials_obfuscationwas upgraded from 2.1.1 to 2.2.0
Source code archives
Warning: The source code archive provided by GitHub only contains the source of the broker, not the plugins or the client libraries.
Please download the archive named rabbitmq-server-3.8.7.tar.xz.
RabbitMQ 3.7.28
RabbitMQ 3.7.28
RabbitMQ 3.7.28 is a security patch release.
RabbitMQ 3.7.x series are out of general support and covered by the limited extended support policy
through October 1st, 2020.
Please consider upgrading to RabbitMQ 3.8.x.
RabbitMQ Core team would like to thank Ofir Hamam and Tomer Hadad at Ernst & Young's Hacktics Advanced Security Center
for researching and responsibly disclosing the vulnerability addressed in this release.
Erlang/OTP Compatibility Notes
This release no longer supports Erlang/OTP 20.3.
Erlang 21.3+ is now a hard requirement checked on node startup.
Make sure a supported Erlang version is used before upgrading.
Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 21.3.x and 22.x.
Compatibility Notes
Upgrading to Erlang 21.x or Later Versions
When upgrading to this release and upgrading Erlang to 21.x or later at the same time, extra care has to be taken.
Since CLI tools from RabbitMQ releases older than 3.7.7 will fail on Erlang 21 or later,
RabbitMQ must be upgraded before Erlang.
Upgrade Doc Guides and Change Log
See 3.7.0 release notes upgrade
and compatibility notes first if upgrading from an earlier release.
See the Upgrading guide for general documentation on upgrades
and RabbitMQ change log for release notes of other releases.
Getting Help
Any questions about this release, upgrades or RabbitMQ in general are welcome on the
RabbitMQ mailing list.
Changes
Core Server
Bug Fixes
-
Addressed a Windows-specific binary planting security vulnerability CVE-2020-5419 that allowed for arbitrary code execution.
The vulnerability requires the attacker to have local access and elevated privileges,
and cannot be executed remotely.CVSS score:
6.7(medium severity).This vulnerability was researched and responsibly disclosed by
Ofir Hamam and Tomer Hadad at Ernst & Young's Hacktics Advanced Security Center.
Source code archives
Warning: The source code archive provided by GitHub only contains the source of the broker,
not the plugins or the client libraries. Please download the archive named rabbitmq-server-3.7.28.tar.xz.