RabbitMQ `3.11.5` is a maintenance release in the `3.11.x` [release series](https://www.rabbitmq.com/versions.html).

Please refer to the upgrade section from [v3.11.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.11.0)
if upgrading from a version prior to 3.11.0.

This release requires Erlang 25.
[RabbitMQ and Erlang/OTP Compatibility Matrix](https://www.rabbitmq.com/which-erlang.html) has more details on
Erlang version requirements for RabbitMQ.


### Minimum Supported Erlang Version

As of 3.11.0, RabbitMQ requires Erlang 25. Nodes **will fail to start** on older Erlang releases.

Erlang 25 as our new baseline means much improved performance on ARM64 architectures, [profiling with flame graphs](https://blog.rabbitmq.com/posts/2022/05/flame-graphs/)
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.


## Changes Worth Mentioning

Release notes can be found on GitHub at [rabbitmq-server/release-notes](https://github.com/rabbitmq/rabbitmq-server/tree/v3.11.x/release-notes).


### Core Server

#### Enhancements

 * Backported a number of improvements for non-ASCII character handling in paths on Windows.

   GitHub issue: [#5551](https://github.com/rabbitmq/rabbitmq-server/pull/5551)

 * Backported a number of free disk space monitor resiliency improvements.

   GitHub issue: [#5831](https://github.com/rabbitmq/rabbitmq-server/pull/5831)

 * If `handle.exe` is not available, free disk space monitor will now shell out to PowerShell
   to retrieve the number of open file handles used by the node.

   GitHub issue: [#6613](https://github.com/rabbitmq/rabbitmq-server/issues/6613)

 * `raft.adaptive_failure_detector.poll_interval` exposes [`aten`]()'s `poll_interval` setting to
   RabbitMQ users. Increasing it can reduce the probability of false positives in clusters where
   inter-node communication links are used at close to maximum capacity.
   The default is `5000` (5 seconds).

   GitHub issue: [#6632](https://github.com/rabbitmq/rabbitmq-server/pull/6632)

 * When both `disk_free_limit.relative` and `disk_free_limit.absolute`,
   or both `vm_memory_high_watermark.relative` and `vm_memory_high_watermark.absolute` are set,
   the absolute settings will now take precedence.

   Contributed by @SimonUnge (AWS).

   GitHub issue: [#4980](https://github.com/rabbitmq/rabbitmq-server/issues/4980)

 * Closing channels will now log a warning if they had any messages pending a [confirmation from the server](https://www.rabbitmq.com/publishers.html#data-safety).

   Contributed by @Kiruamvp.

   GitHub issue: [#1399](https://github.com/rabbitmq/rabbitmq-server/issues/1399)

 * New quorum queue option for in-memory table (MemTable) compression.

   GitHub issue: [#6590](https://github.com/rabbitmq/rabbitmq-server/pull/6590)

 * Default queue type (a virtual host setting) is now applied when importing definitions
   into a single virtual host.

   GitHub issue: [#6599](https://github.com/rabbitmq/rabbitmq-server/pull/6599)

#### Bug Fixes

 * Feature flags provided by plugins were mistakingly disabled after node restart.

   GitHub issue: [#6500](https://github.com/rabbitmq/rabbitmq-server/issues/6500)

 * Classic queues with [Single Active Consumer](https://www.rabbitmq.com/consumers.html#single-active-consumer) enabled could run into an exception.

   GitHub issue: [#6502](https://github.com/rabbitmq/rabbitmq-server/pull/6502)

 * When a [global parameter](https://www.rabbitmq.com/parameters.html#parameter-management) was cleared,
   nodes emitted an [internal event](https://www.rabbitmq.com/logging.html#internal-events) of the wrong type.

   GitHub issue: [#6538](https://github.com/rabbitmq/rabbitmq-server/pull/6538)


### CLI Tools

#### Bug Fixes

 * `rabbitmq-queues grow` and `rabbitmq-queues shrink` misformatted the errors
   they could encounter.

   Contributed by @gomoripeti (CloudAMQP).

   GitHub issue: [#6601](https://github.com/rabbitmq/rabbitmq-server/pull/6601)

#### Enhancements

 * Implicit `help` command (when CLI tools were invoked without a command name)
   now respects all global flags (such as `--node`). For example, previously
   the `--node` flag in

   ``` shell
   rabbitmqctl --node rabbit@ns1.rabbitmq.cluster.local
   ```

   was ignored but now CLI tools would discover what plugins are enabled
   on node `rabbit@ns1.rabbitmq.cluster.local` and include them into `help` output.

   GitHub issue: [#6598](https://github.com/rabbitmq/rabbitmq-server/pull/6598)

 * New key supported by `rabbitmqctl list_queues`: `effective_policy_definition` that returns
   merged definitions of regular and [operator policies](https://www.rabbitmq.com/parameters.html#operator-policies) effective for the queue.

   GitHub issue: [#6556](https://github.com/rabbitmq/rabbitmq-server/pull/6556)

### Management Plugin

#### Enhancements

 * It is now possible to omit explicitly specifying queue type when declaring
   a queue (or stream) in the management UI, and rely on the default queue type
   configured for the selected virtual host.

   GitHub issue: [#6600](https://github.com/rabbitmq/rabbitmq-server/pull/6600)

 * New HTTP API endpoint, `GET /api/config/effective`, returns effective node configuration.
   This is an HTTP API counterpart of `rabbitmq-diagnostics environment`.

   Contributed by @SimonUnge (AWS).

   GitHub issue: [#6016](https://github.com/rabbitmq/rabbitmq-server/issues/6016)

### Shovel Plugin

#### Enhancements

 * Flow control state for Shovels is now reported with higher fidelity
   (of 1 second vs. several seconds previously). This means it should be easier
   to spot Shovels that run into flow control using management UI.

   Contributed by @gomoripeti (CloudAMQP).

   GitHub issue: [#6615](https://github.com/rabbitmq/rabbitmq-server/pull/6615)

### Sharding Plugin

#### Bug Fixes

 * Plugin could fail to boot and halt node boot due to incorrect boot step
   metadata.

   GitHub issue: [#6583](https://github.com/rabbitmq/rabbitmq-server/pull/6583)

## Dependency Upgrades

 * `ra` was upgraded [from `2.4.1` to `2.4.5`](https://github.com/rabbitmq/ra/releases)


## Source Code Archives

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