rabbitmq-server/release-notes/4.3.0.md

5.9 KiB

RabbitMQ 4.3.0

RabbitMQ 4.3.0 is a new feature release.

Breaking Changes and Compatibility Notes

Classic Queues v1 Storage (CQv1) is Removed

This release removes the original classic queue storage implementation these days known as CQv1. A 2nd generation implementation called CQv2 has been adopted as the default starting with 4.2.0.

This means that attemptes to declare a queue using the following optional queue arguments will fail:

  • x-queue-mode set to any value
  • x-queue-version set to 1

Existing classic queues upgraded to CQv2 during an earlier upgrade to 4.2.x will continue operating as usual.

Release Highlights

TBD

Upgrading to 4.3.0

Documentation guides on upgrades

See the Upgrading guide for documentation on upgrades and GitHub releases for release notes of individual releases.

This release series supports upgrades from 4.2.x. Upgrades from earlier series are not supported: users must upgrade to the latest available 4.2.x patch release before upgrading to 4.3.0.

New Required Feature Flags

All feature flags introduced in 4.2.0 and earlier are required, including the following:

  • rabbitmq_4.2.0
  • rabbitmq_4.1.0
  • rabbitmq_4.0.0
  • khepri_db
  • quorum_queue_non_voters
  • message_containers_deaths_v2

Enable all required feature flags before upgrading to 4.3.0.

If your RabbitMQ cluster had plugin rabbitmq_amqp1_0 enabled in RabbitMQ 3.13.x (and your cluster still serves AMQP 1.0 client connections in 4.x), your cluster should do at least one rolling update after enabling feature flag rabbitmq_4.0.0 but before upgrading to 4.3.0.

Deprecated Features

In 4.3.0 the deprecation phase of the following features advanced from permitted_by_default to denied_by_default:

  • amqp_filter_set_bug

Mixed version cluster compatibility

RabbitMQ 4.3.0 nodes can run alongside 4.2.x.

Mixed version clusters are a mechanism that allows rolling upgrade and are not meant to be run for extended periods of time (no more than a few hours).

Recommended Post-upgrade Procedures

This version does not require any additional post-upgrade procedures compared to other versions.

Changes Worth Mentioning

Core Server

Bug Fixes

  • Quorum queue at-most-once dead lettering for the overflow behaviour drop-head now happens in the correct order.

    GitHub issue: #14926

  • Feature flag state in the registry and on disk were not consistent for a period of time during node boot.

GitHub issue: #14943

Stream Plugin

Bug Fixes

  • stream.read_ahead is a new setting that controls how much data is prefetched from disk for stream reads (consumption).

    GitHub issue: #14948/

  • Stream deletion is now more resilient and can handle certain mid-deletion failure scenarios.

    GitHub issue: #14852

Grafana Dashboards

Enhancements

  • The dashboards were updated for the most recent RabbitMQ release series.

Management Plugin

Enhancements

  • GET /api/queues/{vhost} requests no longer perform unnecessary virtual host permission checks and log less (at debug level) as a result.

    GitHub issue: #14923

Shovel Plugin

Bug Fixes

  • Improved target node resource alarm handling for AMQP 1.0 and local shovels.

    GitHub issue: #14886

  • Local shovels could run into an exception that would cause a shovel restart.

    GitHub issue: #14872

  • AMQP 1.0 shovels ignored the sasl URI parameter.

    GitHub issue: #14867

OAuth 2 Plugin

Bug Fixes

  • A usability improvement allows the plugin to automatically load the trusted system x.509 (TLS) certificates.

    GitHub issue: #14927

LDAP Plugin

Enhancements

  • LDAP queries, including multi-line ones, now can be specified in rabbitmq.conf.

    GitHub issue: #14868

Bug Fixes

  • A usability improvement allows the plugin to automatically load the trusted system certificates when the user only enables TLS for the LDAP client but does not configure any other settings.

    GitHub issue: #14937

HTTP Auth Backend Plugin

Enhancements

  • The HTTP Auth Backend can now optionally provide a custom authorization denial reason to AMQP clients.

    To opt in, return deny <Reason> (instead of only deny) in the HTTP response body of your HTTP auth backend and set the following in your rabbitmq.conf file:

auth_http.authorization_failure_disclosure = true

See the README for more information.

GitHub issue: #14641

Tracing Plugin

Bug Fixes

  • Trace file downloads now sets charset to UTF-8 when serving trace files.

    GitHub issue: #13952

Dependency Changes

  • cuttlefish was upgraded to 3.6.0

Source Code Archives

To obtain source code of the entire distribution, please download the archive named rabbitmq-server-4.3.0.tar.xz instead of the source tarball produced by GitHub.