release-notes/3.8.5.md
RabbitMQ 3.8.5 is a maintenance release.
It focuses on bug fixes and usability improvements.
This release is compatible with Erlang 23.
This release requires Erlang/OTP 21.3 or later.
22.3 or 23.0 releases are recommended.
Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 22.3.x.
This release deprecates rabbitmq-diagnostics node_health_check (née rabbitmqctl node_health_check).
See the section on CLI tools changes below to learn more.
See 3.8.0 release notes upgrade and compatibility notes first if upgrading from an earlier release.
See the Upgrading guide for general documentation on upgrades and RabbitMQ change log for release notes of other releases.
When upgrading to this release from 3.7.6 or an older version, extra care has to be taken.
Since CLI tools from RabbitMQ releases older than 3.7.7 will fail on Erlang 21 or later, RabbitMQ must be upgraded at the same time as Erlang.
Alternatively the node can be upgraded to 3.7.18 first, then Erlang 22.x or 23.x, then RabbitMQ to most recent
3.8.x release.
Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list.
In 3.8.4, RABBITMQ_CONF_ENV_FILE value was ignored on Windows.
GitHub issue: rabbitmq/rabbitmq-common#392
Message store shutdown now uses a much higher timeout (up to 10 minutes instead of 30 seconds).
In environments with large message backlogs this means that the chances of queue indices rebuilding after node restart is now substantially lower.
GitHub issue: rabbitmq/rabbitmq-server#2324
On Windows, RABBITMQ_HOME locations with brackets are supported again.
Contributed by @twjs76.
GitHub issues: rabbitmq/rabbitmq-server#2371, rabbitmq/rabbitmq-server#1756
RABBITMQ_LOG_BASE was not respected in some installations.
GitHub issue: rabbitmq/rabbitmq-server-release#131
Setting RABBITMQ_QUORUM_DIR to a location outside of node's data directory for a new node resulted
in feature flags not being implicitly enabled on boot.
GitHub issue: rabbitmq/rabbitmq-server#2317
net_ticktime and other Erlang distribution settings set in rabbitmq.conf were ignored because
distribution was started too early on node boot.
GitHub issue: rabbitmq/rabbitmq-server#2377
Raft data directory now can be configured using ra.data_dir configuration key:
ra.data_dir = /path/to/raft/data/directory
GitHub issue: rabbitmq/rabbitmq-server#2354
User and permission management operations now produce clear log entries when they succeed, not just when they fail. This helps auditing in environments that have stricter security and audit requirements.
GitHub issue: rabbitmq/rabbitmq-server#2363
CLI tools now take NODENAME into account as well as RABBITMQ_NODENAME, just like the server does.
GitHub issue: rabbitmq/rabbitmq-cli#421
rabbitmq-diagnostics observer is now compatible with Erlang 23.
GitHub issue: zhongwencool/observer_cli#68
rabbitmq-diagnostics node_health_check (née rabbitmqctl node_health_check) is deprecated and will be
removed in a future version.
node_health_check (as well as its HTTP API counterpart) is an opinionated, intrusive, aspirational attempt
at producing One True Health Check™ for RabbitMQ that was envisioned and added to CLI tools around 2015-2016.
It has proven to be too prone to false positives, can consume a prohibitive amount of CPU and runtime scheduler resources, and tends to be too opinionated for many technical operations teams.
A much more modular, pick-and-choose approach has been adopted since but this command has never been deprecated. Until now.
GitHub issue: rabbitmq/rabbitmq-cli#426
Definition import was not performed when management.load_definitions = /path/to/definitions/file.json
was used, although it was for its newer counterpart, load_definitions = /path/to/definitions/file.json.
GitHub issue: rabbitmq/rabbitmq-management#818
jQuery was upgraded to 3.5.1.
GitHub issue: rabbitmq/rabbitmq-management#815
Due to later plugin activation in 3.8.4, durable
consistent hashing exchanges were skipped during topology recovery. In practice that meant these exchanges
did not route messages published to it.
Now the plugin reconstructs consistent hashing ring manually for every durable exchange of this type and routing functions as expected.
Kudos to Rob Gerritsen and Raimond @rai69 Kuipers for helping with discovery of this issue.
GitHub issue: rabbitmq/rabbitmq-consistent-hash-exchange#45
rabbitmq-diagnostics consistent_hash_exchange_ring_state <exchange> is a new CLI command that makes it
easy to inspect consistent hashing ring state for an exchange.
GitHub issue: rabbitmq/rabbitmq-consistent-hash-exchange#47
Client ID tracker operation timeout has been increased from default 5 seconds.
GitHub issue: rabbitmq/rabbitmq-mqtt#231
More graceful handling of incorrect or unparseable data.
GitHub issue: rabbitmq/rabbitmq-web-stomp#121
AWS peer discovery backend can be specified as aws:
cluster_formation.peer_discovery_backend = aws
as well as the module name, or plugin name (rabbitmq_peer_discovery_aws):
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_aws
GitHub issue: rabbitmq/rabbitmq-peer-discovery-aws#34
Consul peer discovery backend can be specified as consul:
cluster_formation.peer_discovery_backend = consul
as well as the module name, or plugin name (rabbitmq_peer_discovery_consul):
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_consul
GitHub issue: rabbitmq/rabbitmq-peer-discovery-consul#43
Locking operation against etcd v3 API failed with a case_clause.
GitHub issue: rabbitmq/rabbitmq-peer-discovery-etcd#30
etcd peer discovery backend can be specified as etcd:
cluster_formation.peer_discovery_backend = etcd
as well as the module name, or plugin name (rabbitmq_peer_discovery_etcd):
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_etcd
GitHub issue: rabbitmq/rabbitmq-peer-discovery-etcd#26
Kubernetes peer discovery backend can be specified as k8s or kubernetes:
cluster_formation.peer_discovery_backend = k8s
as well as the module name, or plugin name (rabbitmq_peer_discovery_k8s):
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_k8s
GitHub issue: rabbitmq/rabbitmq-peer-discovery-k8s#65
Basic HTTP auth setting is now exposed to new style configuration:
web_stomp.use_http_auth = true
GitHub issue: rabbitmq/rabbitmq-web-stomp#119
Invocations of rabbitmqctl wait in service management scripts now use a timeout.
Contributed by Nicolas @nicolasbock Bock.
GitHub issue: rabbitmq/rabbitmq-server-release#129
Invocations of rabbitmqctl wait in service management scripts now use a timeout.
Contributed by Nicolas @nicolasbock Bock.
GitHub issue: rabbitmq/rabbitmq-server-release#129
recon was upgraded from 2.5.0 to 2.5.1observer_cli was upgraded from 1.5.3 to 1.5.4Warning: The source code archive provided by GitHub only contains the source of the broker, not the plugins or the client libraries.
Please download the archive named rabbitmq-server-3.8.5.tar.xz.