rabbitmq-server/release-notes/3.8.5.md

11 KiB

RabbitMQ 3.8.5

RabbitMQ 3.8.5 is a maintenance release. It focuses on bug fixes and usability improvements.

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

Deprecations

This release deprecates rabbitmq-diagnostics node_health_check (née rabbitmqctl node_health_check). See the section on CLI tools changes below to learn more.

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

Enhancements

  • Raft data directory now can be configured using ra.data_dir configuration key:

    ra.data_dir = /path/to/raft/data/directory
    

    GitHub issue: rabbitmq/rabbitmq-server#2354

  • User and permission management operations now produce clear log entries when they succeed, not just when they fail. This helps auditing in environments that have stricter security and audit requirements.

    GitHub issue: rabbitmq/rabbitmq-server#2363

CLI Tools

Bug Fixes

Deprecations

  • rabbitmq-diagnostics node_health_check (née rabbitmqctl node_health_check) is deprecated and will be removed in a future version.

    node_health_check (as well as its HTTP API counterpart) is an opinionated, intrusive, aspirational attempt at producing One True Health Check™ for RabbitMQ that was envisioned and added to CLI tools around 2015-2016.

    It has proven to be too prone to false positives, can consume a prohibitive amount of CPU and runtime scheduler resources, and tends to be too opinionated for many technical operations teams.

    A much more modular, pick-and-choose approach has been adopted since but this command has never been deprecated. Until now.

    GitHub issue: rabbitmq/rabbitmq-cli#426

Management Plugin

Bug Fixes

Consistent Hashing Exchange

Bug Fixes

  • Due to later plugin activation in 3.8.4, durable consistent hashing exchanges were skipped during topology recovery. In practice that meant these exchanges did not route messages published to it.

    Now the plugin reconstructs consistent hashing ring manually for every durable exchange of this type and routing functions as expected.

    Kudos to Rob Gerritsen and Raimond @rai69 Kuipers for helping with discovery of this issue.

    GitHub issue: rabbitmq/rabbitmq-consistent-hash-exchange#45

Enhancements

  • rabbitmq-diagnostics consistent_hash_exchange_ring_state <exchange> is a new CLI command that makes it easy to inspect consistent hashing ring state for an exchange.

    GitHub issue: rabbitmq/rabbitmq-consistent-hash-exchange#47

MQTT Plugin

Bug Fixes

Web STOMP Plugin

Enhacenements

AWS Peer Discovery Plugin

Enhancements

  • AWS peer discovery backend can be specified as aws:

    cluster_formation.peer_discovery_backend = aws
    

    as well as the module name, or plugin name (rabbitmq_peer_discovery_aws):

    cluster_formation.peer_discovery_backend = rabbit_peer_discovery_aws
    

    GitHub issue: rabbitmq/rabbitmq-peer-discovery-aws#34

Consul Peer Discovery Plugin

Enhancements

  • Consul peer discovery backend can be specified as consul:

    cluster_formation.peer_discovery_backend = consul
    

    as well as the module name, or plugin name (rabbitmq_peer_discovery_consul):

    cluster_formation.peer_discovery_backend = rabbit_peer_discovery_consul
    

    GitHub issue: rabbitmq/rabbitmq-peer-discovery-consul#43

etcd Peer Discovery Plugin

Bug Fixes

Enhancements

  • etcd peer discovery backend can be specified as etcd:

    cluster_formation.peer_discovery_backend = etcd
    

    as well as the module name, or plugin name (rabbitmq_peer_discovery_etcd):

    cluster_formation.peer_discovery_backend = rabbit_peer_discovery_etcd
    

    GitHub issue: rabbitmq/rabbitmq-peer-discovery-etcd#26

Kubernetes Peer Discovery Plugin

Enhancements

  • Kubernetes peer discovery backend can be specified as k8s or kubernetes:

    cluster_formation.peer_discovery_backend = k8s
    

    as well as the module name, or plugin name (rabbitmq_peer_discovery_k8s):

    cluster_formation.peer_discovery_backend = rabbit_peer_discovery_k8s
    

    GitHub issue: rabbitmq/rabbitmq-peer-discovery-k8s#65

Web STOMP Plugin

Enhancements

Debian Package

Enhancements

RPM Package

Enhancements

Dependency Upgrades

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.5.tar.xz.