2022-07-04 17:59:17 +08:00
RabbitMQ `3.9.21` is a maintenance release in the `3.9.x` release series.
Please refer to the **Upgrading to 3.9** section from [v3.9.0 release notes ](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.9.0 ) if upgrading from a version prior to 3.9.0.
This release requires at least Erlang 23.2, and supports Erlang 24. [RabbitMQ and Erlang/OTP Compatibility Matrix ](https://www.rabbitmq.com/which-erlang.html ) has more details on Erlang version requirements for RabbitMQ.
## Changes Worth Mentioning
Release notes can be found on GitHub at [rabbitmq-server/release-notes ](https://github.com/rabbitmq/rabbitmq-server/tree/v3.10.x/release-notes ).
### Core Server
#### Enhancements
* Optimization: internal message GUID is no longer generated for quorum queues and streams, as they
are specific to classic queues.
GitHub issue: [#5005 ](https://github.com/rabbitmq/rabbitmq-server/pull/5005 )
* Two more AMQP 1.0 connection lifecycle events are now logged.
GitHub issue: [#4984 ](https://github.com/rabbitmq/rabbitmq-server/pull/4984 )
* TLS configuration for inter-node stream replication connections now can
use function references and definitions.
GitHub issue: [#4991 ](https://github.com/rabbitmq/rabbitmq-server/pull/4991 )
* Stream protocol connection logging is now less verbose.
GitHub issue: [#5039 ](https://github.com/rabbitmq/rabbitmq-server/pull/5039 )
* Max stream segment size is now limited to 3 GiB to avoid a potential stream position overflow.
GitHub issue: [#5035 ](https://github.com/rabbitmq/rabbitmq-server/pull/5035 )
* Logging messages that use microseconds now use "us" for the SI symbol to be compatible with more
tools.
GitHub issue: [#5127 ](https://github.com/rabbitmq/rabbitmq-server/pull/5127 )
#### Bug Fixes
2022-07-04 18:15:04 +08:00
* Channels on connections to mixed clusters that had 3.8 nodes in them could run into
an exception.
GitHub issue: [#5141 ](https://github.com/rabbitmq/rabbitmq-server/issues/5141 )
2022-07-04 17:59:17 +08:00
* Inter-node cluster link statistics did not have any data when TLS was enabled for them.
GitHub issue: [#4981 ](https://github.com/rabbitmq/rabbitmq-server/issues/4981 )
* Quorum queues now correctly propagate errors when a `basic.get` (polling consumption) operation hits
a timeout.
Contributed by Ayanda @Ayanda -D Dube.
GitHub issue: [#5109 ](https://github.com/rabbitmq/rabbitmq-server/pull/5109 )
* Stream consumer that used AMQP 0-9-1 instead of a stream protocol client, and disconnected,
leaked a file handle.
GitHub issue: [#5088 ](https://github.com/rabbitmq/rabbitmq-server/pull/5088 )
* Max frame size and client heartbeat parameters for [RabbitMQ stream]() clients were not correctly
set when taken from `rabbitmq.conf` .
GitHub issue: [#5136 ](https://github.com/rabbitmq/rabbitmq-server/pull/5136 )
* Removed a duplicate exchange decorator set operation.
Contributed by Péter @gomoripeti Gömöri.
GitHub issue: [#4964 ](https://github.com/rabbitmq/rabbitmq-server/pull/4964 )
### Consistent Hashing Exchange Plugin
#### Bug Fixes
* Node restarts could result in a hashing ring inconsistency.
This required a **potentially breaking change** : this exchange type
now only allows for **one binding between an exchange and a queue** (or another exchange).
All subsequent binding operations between them will be ignored, so "first write wins".
This is a natural topology for this plugin, and enforcing it helps avoid a set of
potential issues with concurrent node restarts and client operations that affect
consistent hash ring state.
GitHub issue: [#3386 ](https://github.com/rabbitmq/rabbitmq-server/issues/3386 )
2022-07-07 02:31:35 +08:00
### Consul Peer Discovery Plugin
#### Enhancements
* Consul peer discovery now supports client-side TLS options, much like its Kubernetes and etcd peers.
``` ini
cluster_formation.consul.scheme = https
# this assumes that Consul uses port 8501 for HTTPS clients
cluster_formation.consul.port = 8501
cluster_formation.consul.ssl_options.cacertfile = /path/to/consul/generated/ca_certificate.pem
cluster_formation.consul.ssl_options.certfile = /path/to/client/certificate.pem
cluster_formation.consul.ssl_options.keyfile = /path/to/client/client_key.pem
```
GitHub issue: [#5116 ](https://github.com/rabbitmq/rabbitmq-server/issues/5116 )
2022-07-04 17:59:17 +08:00
## Source Code Archives
To obtain source code of the entire distribution, please download the archive named `rabbitmq-server-3.9.21.tar.xz`
instead of the source tarball produced by GitHub.