release-notes/3.10.6.md
RabbitMQ 3.10.6 is a maintenance release in the 3.10.x release series.
Please refer to the upgrade section from v3.10.0 release notes if upgrading from a version prior to 3.10.0.
This release requires at least Erlang 23.2, and supports Erlang 24 and 25. RabbitMQ and Erlang/OTP Compatibility Matrix has more details on Erlang version requirements for RabbitMQ.
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Stream metric collection is now more CPU efficient. It helps in environments that have many streams.
GitHub issue: #4950
Optimization: internal message GUID is no longer generated for quorum queues and streams, as they are specific to classic queues.
GitHub issue: #4990
Two more AMQP 1.0 connection lifecycle events are now logged.
GitHub issue: #4982
CRC32 checksum verification now can be disabled for quorum queues:
quorum_queue.compute_checksums = false
This may be beneficial in environments that messages are large and CPU resources are limited. Note the CRC32 checksums are not the only data corruption detection mechanism used by quorum queues but they are good at catching certain types of corruption.
Disabling checksums can provide quorum queue throughput boost of up to 15%. In environments where message size is small the gains will be smaller.
GitHub issue: #5166
TLS configuration for inter-node stream replication connections now can use function references and definitions.
GitHub issue: #4991
Stream protocol connection logging is now less verbose.
GitHub issue: #5037
Max stream segment size is now limited to 3 GiB to avoid a potential stream position overflow.
GitHub issue: #5020
Stream coordinator warnings now include operation name for clarify.
GitHub issue: #5036
Logging messages that use microseconds now use "us" for the SI symbol to be compatible with more tools.
GitHub issue: #5125
Channels on connections to mixed clusters that had 3.8 nodes in them could run into an exception.
GitHub issue: #5141
Inter-node cluster link statistics did not have any data when TLS was enabled for them.
GitHub issue: #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: #5107
Stream consumer that used AMQP 0-9-1 instead of a stream protocol client, and disconnected, leaked a file handle.
GitHub issue: #5085
Max frame size and client heartbeat parameters for RabbitMQ stream clients were not correctly
set when taken from rabbitmq.conf.
GitHub issue: #5131
Removed a duplicate exchange decorator set operation.
Contributed by Péter @gomoripeti Gömöri.
GitHub issue: #4962
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
Consul peer discovery now supports client-side TLS options, much like its Kubernetes and etcd peers.
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
ra upgraded from 2.0.13 to 2.2.0To obtain source code of the entire distribution, please download the archive named rabbitmq-server-3.10.6.tar.xz
instead of the source tarball produced by GitHub.