RabbitMQ 3.8.5-rc.2
RabbitMQ 3.8.5-rc.2
is a maintenance release candidate.
It focuses on bug fixes and usability improvements.
This release is compatible with Erlang 23.
Erlang/OTP Compatibility Notes
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
.
Upgrade and Compatibility Notes
Deprecations
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.
Upgrade Doc Guides and Change Log
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.
Upgrading to Erlang 21.x or Later Versions
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.
Getting Help
Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list.
Changes Worth Mentioning
Core Server
Bug Fixes
-
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 inrabbitmq.conf
were ignored because
distribution was started too early on node boot.GitHub issue: rabbitmq/rabbitmq-server#2377
Enhancements
-
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
Bug Fixes
-
CLI tools now take
NODENAME
into account as well asRABBITMQ_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
Deprecations
-
rabbitmq-diagnostics node_health_check
(néerabbitmqctl 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
Management Plugin
Bug Fixes
-
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.4.1
.GitHub issue: rabbitmq/rabbitmq-management#815
Consistent Hashing Exchange
Bug Fixes
-
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
Enhancements
-
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
MQTT Plugin
Bug Fixes
-
Client ID tracker operation timeout has been increased from default 5 seconds.
GitHub issue: rabbitmq/rabbitmq-mqtt#231
Web STOMP Plugin
Enhacenements
-
More graceful handling of incorrect or unparseable data.
GitHub issue: rabbitmq/rabbitmq-web-stomp#121
AWS Peer Discovery Plugin
Enhancements
-
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 Plugin
Enhancements
-
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
etcd Peer Discovery Plugin
Bug Fixes
-
Locking operation against
etcd
v3 API failed with acase_clause
.GitHub issue: rabbitmq/rabbitmq-peer-discovery-etcd#30
Enhancements
-
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 Plugin
Enhancements
-
Kubernetes peer discovery backend can be specified as
k8s
orkubernetes
: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
Web STOMP Plugin
Enhancements
-
Basic HTTP auth setting is now exposed to new style configuration:
web_stomp.use_http_auth = true
GitHub issue: rabbitmq/rabbitmq-web-stomp#119
Debian Package
Enhancements
-
Invocations of
rabbitmqctl wait
in service management scripts now use a timeout.Contributed by Nicolas @nicolasbock Bock.
GitHub issue: rabbitmq/rabbitmq-server-release#129
RPM Package
Enhancements
-
Invocations of
rabbitmqctl wait
in service management scripts now use a timeout.Contributed by Nicolas @nicolasbock Bock.
GitHub issue: rabbitmq/rabbitmq-server-release#129
Dependency Upgrades
recon
was upgraded from 2.5.0 to 2.5.1observer_cli
was upgraded from 1.5.3 to 1.5.4
Source code archives
Warning: 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
.