Project: RabbitMQ (App Definition and Development / Streaming & Messaging)
File: 3.8.12.md

RabbitMQ `3.8.12` is a maintenance release that contains bug fixes. This release or . explains what package repositories and tools can be used to provision latest patch versions of Erlang `22.3.x`. See upgrade and compatibility notes first if upgrading from an earlier release series (e.g. `3.7.x`). See the for general documentation on upgrades and for release notes of other releases. When upgrading to this release from `3.7.15` or an older version, extra care has to be taken. Because older RabbitMQ CLI tools can be incompatible with Erlang 22+ releases, RabbitMQ must be upgraded at the same time as Erlang. Alternatively the node can be upgraded to `3.7.18` on Erlang 21.3 first, then Erlang 22.x or 23.x, then RabbitMQ to the most recent 3.8.x release. Any questions about this release, upgrades or RabbitMQ in general are welcome on the and . no longer transfers leaders of classic mirrored queue. The original transfer implementation was not guaranteed to be safe when only a subset of cluster nodes hosted replicas. In addition, the process could take a lot of time in environments with a lot of classic mirrored queues, more than in case of node shutdown. Quorum queue leadership transfer is still performed as it is dramatically more efficient and never suffered from any downsides of leadership transfer of CMQs. GitHub issue: Exclusive queues that happen to be matched by classic queue mirroring policies will no longer be considered for rebalancing operations since they are not actually mirrored (the lifecycle is by design tied to a single client connection). GitHub issue: Default replica count for quorum queues was using an incorrect configuration key name. The default value is now `3`, so in a cluster of five or seven nodes, only three will host replicas for newly declared quorum queues. One replica is the node to which the declaring client is connected to, two others are selected randomly. Declaring connections can control the number of replicas using the `x-quorum-initial-group-size` optional queue argument at declaration time. GitHub issue: Default settings were changed to `none` by default, which reduces CPU footprint on nodes that are mostly idle. The values can be overridden for workloads that benefit from different

Contributed by @carlhoerberg (CloudAMQP) GitHub issue: Definition import now imports runtime parameters after exchanges, queues, and bindings to reduce the likelihood of starting dynamic Shovels from racing with topology imports. GitHub issue: Memory monitor could run into an exception if queried very early on node boot before it was fully initialized. Contributed by @tomyouyou. GitHub issue: `rabbitmq.conf` validation of TLS certificate and private key paths is now more thorough: it checks if the files have read or read/write permissions instead of checking if it can read the file's metadata. GitHub issue: `rabbitmqctl closealluser_connections` is a new command that closes all connections that authenticated using a specific username: ``` rabbitmqctl closealluser_connections "user-99fc15d3f" "closed to force reconnection" ``` GitHub issue: AuthN authentication attempts metrics produced duplicate `TYPE` and `HELP` strings in the scraping API endpoint output. Some metrics were renamed to avoid duplication. The new names are `authattemptsdetailed_total`, `authattemptsdetailedsucceededtotal`, and `authattemptsdetailedfailedtotal`. This issue is specific to RabbitMQ `3.8.10` and `3.8.11`. GitHub issue: The plugin now supports two new configuration settings that control SNI and hostname verification behavior for TLS-enabled LDAP client connections: ``` ini authldap.ssloptions.hostname_verification = wildcard authldap.ssloptions.sni = a.rabbitmq.hostname.dev ``` These changes are based on the from Patrick @patcable Cable. GitHub issue: Dynamic Shovels now can specify for the queues they declare. Note that these settings will not have any effects for cases where the plugin uses already existing queues. This allows for the Shovel-managed queues to be . For the arguments that must not be provided at queue declaration time, is the right approach. The arguments are specified using the `""` and `""` arguments for source and destination queues, respectively: ``` json { "src-protocol": "amqp091", "src-uri": ["amqp://localhost"], "src-queue": "src-queue", "dest-protocol": "amqp091", "dest-uri": ["amqp://localhost"], "dest-queue": "dest-queue", "src-queue-args": { "x-queue-type": "quorum" }, "dest-queue-args": { "x-queue-type": "quorum" } } ``` GitHub issue: Cache operation timeout has been increased to 15s (same as the channel operation timeout in the core). This prevents sporadic timeouts in heavily loaded systems. GitHub issue: The client performed hostname resolution twice even if IP version preference was specified by the user. Contributed by Pawel @haljin Antemijczuk. GitHub issue: No dependency changes. To obtain source code of the entire distribution, please download the archive named `rabbitmq-server-3.8.12.tar.xz` instead of the source tarball produced by GitHub.