## RabbitMQ 4.2.4

RabbitMQ `4.2.4` is a maintenance release in the `4.2.x` [release series](https://www.rabbitmq.com/release-information).

It is **strongly recommended** that you read [4.2.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v4.2.0)
in detail if upgrading from a version prior to `4.2.0`.

### Minimum Supported Erlang Version

[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.2.x/release-notes).

### Core Server

#### Bug Fixes

 * Classic queue message store could run into an exception when a file was concurrently deleted by a compaction operation.

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

 * `rabbit_quorum_queue:stat/2` could fail when the quorum queue leader was undefined.

   GitHub issues: [#15400](https://github.com/rabbitmq/rabbitmq-server/pull/15400), [#15423](https://github.com/rabbitmq/rabbitmq-server/pull/15423)

 * The [`amq.rabbitmq.og` exchange](https://www.rabbitmq.com/docs/logging#log-exchange) is now declared unconditionally at node boot,
   avoiding a potential deadlock between feature flag enablement and logging to the exchange sink.

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


### MQTT Plugin

#### Bug Fixes

 * Variable interpolation in [topic permissions](https://www.rabbitmq.com/docs/access-control#topic-authorisation) now.
   escapes the special regular expression characters before interpolation.

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


### Stream Plugin

#### Bug Fixes

 * [Single Active Consumer](https://www.rabbitmq.com/docs/streams#single-active-consumer) coordinator
   could deadlock when a consumer being deactivated would lose its connection, leaving the consumer group
   without an active consumer.

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


### Management Plugin

#### Bug Fixes

 * The Policies page in the management UI incorrectly displayed quorum queue arguments
   twice on the declaration form in place of stream queue arguments.

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

 * The clustering listener now correctly reports its TLS enablement status.

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

#### Enhancements

 * `GET /api/overview` and `GET /api/nodes` now report crypto library (such as OpenSSL) version.

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

 * RabbitMQ and Erlang/OTP versions are now included in `GET /api/nodes` responses.

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

 * Login page usability improvements: autofocus on the username field and `autocomplete` attributes
   for browser password manager integration.

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


### CLI Tools

#### Enhancements

 * `rabbitmq-upgrade has_reached_target_cluster_size` is a new command that checks whether
   the cluster has reached its target size, as provided in `rabbitmq.conf`.
 
   This is useful for automating rolling upgrades, particularly on Kubernetes.

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


### Shovel Plugin

#### Bug Fixes

 * Stopping and deleting a shovel could fail with a `badmatch` exception
   when the underlying worker process no longer existed.

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

 
### Trust Store Plugin

#### Enhancements

 * HTTPS endpoint requests now have a configurable timeout (20 seconds by default),
   preventing the plugin from hanging indefinitely when a provider fails to respond.

   GitHub issues: [#15308](https://github.com/rabbitmq/rabbitmq-server/issues/15308), [#15310](https://github.com/rabbitmq/rabbitmq-server/pull/15310)


### AWS Peer Discovery Plugin

#### Bug Fixes

 * Nodes on EC2 instances in non-running states (`stopping`, `stopped`, `shutting-down`, `terminated`)
   are now filtered out from peer discovery results.

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

#### Enhancements

 * Multiple hostname resolution paths can now be configured. This is an upgrade pathway
   for scenarios where resolution hostnames have to change.

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

### Tracing Plugin

#### Bug Fixes

 * The plugin now uses UTF-8 encoding for [traced messages](https://rabbitmq.com/docs/firehose).

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


### Dependency Changes

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