316 lines
11 KiB
Markdown
316 lines
11 KiB
Markdown
## RabbitMQ 3.8.5
|
|
|
|
RabbitMQ `3.8.5` is a maintenance release.
|
|
It focuses on bug fixes and usability improvements.
|
|
|
|
This release is [compatible](https://groups.google.com/forum/#!topic/rabbitmq-users/wlPIWz3UYHQ) with [Erlang 23](http://blog.erlang.org/OTP-23-Highlights/).
|
|
|
|
### Erlang/OTP Compatibility Notes
|
|
|
|
This release [**requires Erlang/OTP 21.3**](https://www.rabbitmq.com/which-erlang.html) or later.
|
|
`22.3` or `23.0` releases are recommended.
|
|
|
|
[Provisioning Latest Erlang Releases](https://www.rabbitmq.com/which-erlang.html#erlang-repositories) 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](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.8.0) upgrade and
|
|
compatibility notes first if upgrading from an earlier release.
|
|
|
|
See the [Upgrading guide](https://www.rabbitmq.com/upgrade.html) for general documentation on upgrades and
|
|
[RabbitMQ change log](https://www.rabbitmq.com/changelog.html) 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](https://groups.google.com/forum/#!forum/rabbitmq-users).
|
|
|
|
|
|
|
|
## Changes Worth Mentioning
|
|
|
|
### Core Server
|
|
|
|
#### Bug Fixes
|
|
|
|
* In `3.8.4`, [`RABBITMQ_CONF_ENV_FILE`](https://www.rabbitmq.com/configure.html#customise-environment) value was ignored on Windows.
|
|
|
|
GitHub issue: [rabbitmq/rabbitmq-common#392](https://github.com/rabbitmq/rabbitmq-common/issues/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](https://github.com/rabbitmq/rabbitmq-server/issues/2324)
|
|
|
|
* On Windows, `RABBITMQ_HOME` locations with brackets are supported again.
|
|
|
|
Contributed by @twjs76.
|
|
|
|
GitHub issues: [rabbitmq/rabbitmq-server#2371](https://github.com/rabbitmq/rabbitmq-server/pull/2371),
|
|
[rabbitmq/rabbitmq-server#1756](https://github.com/rabbitmq/rabbitmq-server/issues/1756)
|
|
|
|
* `RABBITMQ_LOG_BASE` was not respected in some installations.
|
|
|
|
GitHub issue: [rabbitmq/rabbitmq-server-release#131](https://github.com/rabbitmq/rabbitmq-server-release/issues/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](https://github.com/rabbitmq/rabbitmq-server/issues/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](https://github.com/rabbitmq/rabbitmq-server/issues/2377)
|
|
|
|
#### Enhancements
|
|
|
|
* Raft data directory now can be configured using `ra.data_dir` configuration key:
|
|
|
|
``` ini
|
|
ra.data_dir = /path/to/raft/data/directory
|
|
```
|
|
|
|
GitHub issue: [rabbitmq/rabbitmq-server#2354](https://github.com/rabbitmq/rabbitmq-server/issues/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](https://github.com/rabbitmq/rabbitmq-server/issues/2363)
|
|
|
|
|
|
### CLI Tools
|
|
|
|
#### Bug Fixes
|
|
|
|
* CLI tools now take `NODENAME` into account as well as `RABBITMQ_NODENAME`, just like the server does.
|
|
|
|
GitHub issue: [rabbitmq/rabbitmq-cli#421](https://github.com/rabbitmq/rabbitmq-cli/issues/421)
|
|
|
|
* `rabbitmq-diagnostics observer` is now compatible with Erlang 23.
|
|
|
|
GitHub issue: [zhongwencool/observer_cli#68](https://github.com/zhongwencool/observer_cli/issues/68)
|
|
|
|
#### Deprecations
|
|
|
|
* `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](https://www.rabbitmq.com/monitoring.html#health-checks)
|
|
but this command has never been deprecated. Until now.
|
|
|
|
GitHub issue: [rabbitmq/rabbitmq-cli#426](https://github.com/rabbitmq/rabbitmq-cli/issues/426)
|
|
|
|
|
|
### Management Plugin
|
|
|
|
#### Bug Fixes
|
|
|
|
* [Definition import](https://www.rabbitmq.com/definitions.html) 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](https://github.com/rabbitmq/rabbitmq-management/issues/818)
|
|
|
|
* jQuery was upgraded to `3.5.1`.
|
|
|
|
GitHub issue: [rabbitmq/rabbitmq-management#815](https://github.com/rabbitmq/rabbitmq-management/issues/815)
|
|
|
|
|
|
### Consistent Hashing Exchange
|
|
|
|
### Bug Fixes
|
|
|
|
* Due to [later plugin activation](https://github.com/rabbitmq/rabbitmq-server/issues/2381) 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](https://github.com/rabbitmq/rabbitmq-consistent-hash-exchange/issues/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](https://github.com/rabbitmq/rabbitmq-consistent-hash-exchange/pull/47)
|
|
|
|
|
|
### MQTT Plugin
|
|
|
|
#### Bug Fixes
|
|
|
|
* Client ID tracker operation timeout has been increased from default 5 seconds.
|
|
|
|
GitHub issue: [rabbitmq/rabbitmq-mqtt#231](https://github.com/rabbitmq/rabbitmq-mqtt/pull/231)
|
|
|
|
|
|
### Web STOMP Plugin
|
|
|
|
#### Enhacenements
|
|
|
|
* More graceful handling of incorrect or unparseable data.
|
|
|
|
GitHub issue: [rabbitmq/rabbitmq-web-stomp#121](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/121)
|
|
|
|
|
|
### AWS Peer Discovery Plugin
|
|
|
|
#### Enhancements
|
|
|
|
* AWS peer discovery backend can be specified as `aws`:
|
|
|
|
``` ini
|
|
cluster_formation.peer_discovery_backend = aws
|
|
```
|
|
|
|
as well as the module name, or plugin name (`rabbitmq_peer_discovery_aws`):
|
|
|
|
``` ini
|
|
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_aws
|
|
```
|
|
|
|
GitHub issue: [rabbitmq/rabbitmq-peer-discovery-aws#34](https://github.com/rabbitmq/rabbitmq-peer-discovery-aws/issues/34)
|
|
|
|
|
|
### Consul Peer Discovery Plugin
|
|
|
|
#### Enhancements
|
|
|
|
* Consul peer discovery backend can be specified as `consul`:
|
|
|
|
``` ini
|
|
cluster_formation.peer_discovery_backend = consul
|
|
```
|
|
|
|
as well as the module name, or plugin name (`rabbitmq_peer_discovery_consul`):
|
|
|
|
``` ini
|
|
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_consul
|
|
```
|
|
|
|
GitHub issue: [rabbitmq/rabbitmq-peer-discovery-consul#43](https://github.com/rabbitmq/rabbitmq-peer-discovery-consul/issues/43)
|
|
|
|
|
|
### etcd Peer Discovery Plugin
|
|
|
|
#### Bug Fixes
|
|
|
|
* Locking operation against `etcd` v3 API failed with a `case_clause`.
|
|
|
|
GitHub issue: [rabbitmq/rabbitmq-peer-discovery-etcd#30](https://github.com/rabbitmq/rabbitmq-peer-discovery-etcd/issues/30)
|
|
|
|
#### Enhancements
|
|
|
|
* etcd peer discovery backend can be specified as `etcd`:
|
|
|
|
``` ini
|
|
cluster_formation.peer_discovery_backend = etcd
|
|
```
|
|
|
|
as well as the module name, or plugin name (`rabbitmq_peer_discovery_etcd`):
|
|
|
|
``` ini
|
|
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_etcd
|
|
```
|
|
|
|
GitHub issue: [rabbitmq/rabbitmq-peer-discovery-etcd#26](https://github.com/rabbitmq/rabbitmq-peer-discovery-etcd/issues/26)
|
|
|
|
|
|
### Kubernetes Peer Discovery Plugin
|
|
|
|
#### Enhancements
|
|
|
|
* Kubernetes peer discovery backend can be specified as `k8s` or `kubernetes`:
|
|
|
|
``` ini
|
|
cluster_formation.peer_discovery_backend = k8s
|
|
```
|
|
|
|
as well as the module name, or plugin name (`rabbitmq_peer_discovery_k8s`):
|
|
|
|
``` ini
|
|
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_k8s
|
|
```
|
|
|
|
GitHub issue: [rabbitmq/rabbitmq-peer-discovery-k8s#65](https://github.com/rabbitmq/rabbitmq-peer-discovery-k8s/issues/65)
|
|
|
|
|
|
### Web STOMP Plugin
|
|
|
|
#### Enhancements
|
|
|
|
* [Basic HTTP auth setting](https://www.rabbitmq.com/web-stomp.html) is now exposed to new style configuration:
|
|
|
|
``` ini
|
|
web_stomp.use_http_auth = true
|
|
```
|
|
|
|
GitHub issue: [rabbitmq/rabbitmq-web-stomp#119](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/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](https://github.com/rabbitmq/rabbitmq-server-release/pull/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](https://github.com/rabbitmq/rabbitmq-server-release/pull/129)
|
|
|
|
|
|
## Dependency Upgrades
|
|
|
|
* `recon` was upgraded [from 2.5.0 to 2.5.1](https://github.com/ferd/recon/compare/2.5.0...2.5.1)
|
|
* `observer_cli` was upgraded [from 1.5.3 to 1.5.4](https://github.com/zhongwencool/observer_cli/compare/1.5.3...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`.
|