rabbitmq-server/release-notes/4.0.6.md

170 lines
6.2 KiB
Markdown

## RabbitMQ 4.0.6
RabbitMQ `4.0.6` is a maintenance release in the `4.0.x` [release series](https://www.rabbitmq.com/release-information).
Starting June 1st, 2024, community support for this series will only be provided to [regularly contributing users](https://github.com/rabbitmq/rabbitmq-server/blob/main/COMMUNITY_SUPPORT.md) and those
who hold a valid [commercial support license](https://tanzu.vmware.com/rabbitmq/oss).
It is **strongly recommended** that you read [4.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v4.0.1)
in detail if upgrading from a version prior to `4.0.0`.
### Minimum Supported Erlang Version
This release requires Erlang 26 and supports Erlang versions up to `27.2.x`.
[RabbitMQ and Erlang/OTP Compatibility Matrix](https://www.rabbitmq.com/docs/which-erlang) has more details on
Erlang version requirements for RabbitMQ.
Nodes **will fail to start** on older Erlang releases.
## Changes Worth Mentioning
Release notes can be found on GitHub at [rabbitmq-server/release-notes](https://github.com/rabbitmq/rabbitmq-server/tree/v4.0.x/release-notes).
### Core Broker
#### Bug Fixes
* When a quorum queue leader has changed, followers were not always notified of
unapplied [for/by them] log commands.
GitHub issue: [#13095](https://github.com/rabbitmq/rabbitmq-server/pull/13095)
* Default cluster formation timeout with [Khepri](https://www.rabbitmq.com/docs/metadata-store) now matches that of Mnesia (5 minutes by default).
Discovered and reported by @evolvedlight.
GitHub issue: [#13195](https://github.com/rabbitmq/rabbitmq-server/pull/13195)
* When stream consumer was cancelled, an [internal event](https://www.rabbitmq.com/docs/logging#internal-events) was not emitted.
GitHub issues: [#13085](https://github.com/rabbitmq/rabbitmq-server/pull/13085), [#9356](https://github.com/rabbitmq/rabbitmq-server/pull/9356), [#13097](https://github.com/rabbitmq/rabbitmq-server/pull/13097)
* Stream consumer metrics were not cleared when its respective connection was closed.
GitHub issue: [#13086](https://github.com/rabbitmq/rabbitmq-server/pull/13086)
* Quorum queues could return a list of members (replicas) with duplicates in some cases.
GitHub issue: [#13168](https://github.com/rabbitmq/rabbitmq-server/pull/13168)
* Classic queues with priorities could run into an exception.
GitHub issue: [#13088](https://github.com/rabbitmq/rabbitmq-server/pull/13088)
* Corrected a log message.
GitHub issue: [#13155](https://github.com/rabbitmq/rabbitmq-server/pull/13155)
#### Enhancements
* A new mechanism for protecting a virtual host from deletion using metadata.
GitHub issues: [#12772](https://github.com/rabbitmq/rabbitmq-server/issues/12772), [#13017](https://github.com/rabbitmq/rabbitmq-server/pull/13017)
### CLI Tools
#### Bug Fixes
* `rabbitmqctl import_definitions` hanged when definitions were provided via the standard input
instead of a file.
GitHub issue: [#13157](https://github.com/rabbitmq/rabbitmq-server/issues/13157)
#### Enhancements
* [`rabbitmqadmin` v2](https://www.rabbitmq.com/docs/management-cli) has matured enough to recommend
it over the original version of the tool
* `rabbitmq-diagnostics ` CLI documentation was improved to clarify that all certificates
discovered will be checked for expiration.
GitHub issue: [#13038](https://github.com/rabbitmq/rabbitmq-server/pull/13038)
* New health checks for [metadata store](https://www.rabbitmq.com/docs/metadata-store) initialization:
1. `rabbitmq-diagnostics check_if_metadata_store_is_initialized`
2. `rabbitmq-diagnostics check_if_metadata_store_is_initialized_with_data`
GitHub issue: [#13169](https://github.com/rabbitmq/rabbitmq-server/pull/13169)
### Prometheus Plugin
#### Bug Fixes
* Improved metric description.
GitHub issue: [#13178](https://github.com/rabbitmq/rabbitmq-server/pull/13178)
### Management Plugin
#### Bug Fixes
* Pagination-related sections of the HTTP API reference were clarified to explain
that the maximum page size cannot exceed 500.
GitHub issue: [#13042](https://github.com/rabbitmq/rabbitmq-server/issues/13042)
* Empty `channel_details` objects are now serialized as empty objects and not empty arrays.
GitHub issue: [#13091](https://github.com/rabbitmq/rabbitmq-server/pull/13091)
#### Enhancements
* New health checks for [metadata store](https://www.rabbitmq.com/docs/metadata-store) initialization:
1. GET `/api/health/checks/metadata-store/initialized`
2. GET `/api/health/checks/metadata-store/initialized/with-data`
GitHub issue: [#13169](https://github.com/rabbitmq/rabbitmq-server/pull/13169)
#### Deprecations
* The original HTTP API One True Health Check™ is now a no-op. A comparable "mega health check"
has long been deprecated in CLI tools and was made a no-op in `4.0.0`.
This endpoint was using a [deprecated feature](https://www.rabbitmq.com/docs/deprecated-features): a classic non-exclusive transient (non-durable) queue.
See [Health Checks](https://www.rabbitmq.com/docs/monitoring#health-checks) for modern focused alternatives.
GitHub issue: [#13047](https://github.com/rabbitmq/rabbitmq-server/issues/13047)
### Consul Peer Discovery Plugin
#### Enhancements
* `cluster_formation.registration.enabled` is a new configuration setting that allows the backend to skip registration.
This is useful when Consul is used for peer discovery but a different tool such as Nomad
is used to keep track of the services and their registration, unregistration.
Contributed by @frederikbosch.
GitHub issue: [#13201](https://github.com/rabbitmq/rabbitmq-server/pull/13201)
### Erlang AMQP 1.0 Client
#### Bug Fixes
* Purging an non-existing queue now returns a 404 response.
GitHub issue: [#13148](https://github.com/rabbitmq/rabbitmq-server/pull/13148)
### Dependency Changes
* `ra` was upgraded to [`2.15.1`](https://github.com/rabbitmq/ra/releases)
* `observer_cli` was upgraded to [`1.8.2`](https://github.com/zhongwencool/observer_cli/releases)
## Source Code Archives
To obtain source code of the entire distribution, please download the archive named `rabbitmq-server-4.0.6.tar.xz`
instead of the source tarball produced by GitHub.