Skip to content

RabbitMQ 3.10.6

Compare
Choose a tag to compare
@rabbitmq-ci rabbitmq-ci released this 10 Jul 10:14
809aed2

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.

Changes Worth Mentioning

Release notes can be found on GitHub at rabbitmq-server/release-notes.

Core Server

Enhancements

  • 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

Bug Fixes

  • 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

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

Consul Peer Discovery Plugin

Enhancements

  • 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

Dependency Upgrades

Source Code Archives

To 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.