rabbitmq-server/release-notes/4.3.0.md

193 lines
5.9 KiB
Markdown

## 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](https://www.rabbitmq.com/docs/queues#optional-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](https://www.rabbitmq.com/docs/upgrade) for documentation on upgrades and [GitHub releases](https://github.com/rabbitmq/rabbitmq-server/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](https://github.com/rabbitmq/rabbitmq-server/pull/14926)
* Feature flag state in the registry and on disk were not consistent for a period of time during node boot.
GitHub issue: [#14943](https://github.com/rabbitmq/rabbitmq-server/pull/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/](https://github.com/rabbitmq/rabbitmq-server/pull/14948)
* Stream deletion is now more resilient and can handle certain mid-deletion failure scenarios.
GitHub issue: [#14852](https://github.com/rabbitmq/rabbitmq-server/issues/14852)
### Grafana Dashboards
#### Enhancements
* The [dashboards](https://grafana.com/orgs/rabbitmq) 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](https://github.com/rabbitmq/rabbitmq-server/discussions/14923)
### Shovel Plugin
#### Bug Fixes
* Improved target node resource alarm handling for AMQP 1.0 and local shovels.
GitHub issue: [#14886](https://github.com/rabbitmq/rabbitmq-server/pull/14886)
* Local shovels could run into an exception that would cause a shovel restart.
GitHub issue: [#14872](https://github.com/rabbitmq/rabbitmq-server/pull/14872)
* AMQP 1.0 shovels ignored the `sasl` URI parameter.
GitHub issue: [#14867](https://github.com/rabbitmq/rabbitmq-server/pull/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](https://github.com/rabbitmq/rabbitmq-server/pull/14927)
### LDAP Plugin
#### Enhancements
* LDAP queries, including multi-line ones, now can be specified in `rabbitmq.conf`.
GitHub issue: [#14868](https://github.com/rabbitmq/rabbitmq-server/pull/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](https://github.com/rabbitmq/rabbitmq-server/pull/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:
```ini
auth_http.authorization_failure_disclosure = true
```
See the [README](https://github.com/rabbitmq/rabbitmq-server/blob/main/deps/rabbitmq_auth_backend_http/README.md) for more information.
GitHub issue: [#14641](https://github.com/rabbitmq/rabbitmq-server/pull/14641)
### Tracing Plugin
#### Bug Fixes
* Trace file downloads now sets charset to UTF-8 when serving trace files.
GitHub issue: [#13952](https://github.com/rabbitmq/rabbitmq-server/issues/13952)
### Dependency Changes
* `cuttlefish` was upgraded to [`3.6.0`](https://github.com/kyorai/cuttlefish/releases)
## 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.