RabbitMQ v3.8.8 Release Notes

Release Date: 2020-09-03 // over 3 years ago
  • 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 drain is a new command that puts a node in maintenance mode (see above).
    โฌ†๏ธ rabbitmq-upgrade revive is its counterpart that "revives" a node by putting it into the regular
    operating mode.

    rabbitmqctl suspend_listeners is 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_listeners resumes all client listeners so that they accept new client connections
    again.

    All these commands will have an effect only if the maintenance_mode_status flag 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 between 3.8.5 and 3.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

    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.