rabbitmq-server/release-notes/3.6.7.md

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

414 lines
16 KiB
Markdown
Raw Permalink Normal View History

## RabbitMQ 3.6.7
RabbitMQ `3.6.7` is a maintenance release that includes a [new reworked management plugin](https://github.com/rabbitmq/rabbitmq-management/issues/236) that stores collected stats on all cluster nodes (as opposed to one dedicated node).
### Upgrades and Compatibility
See the ["Upgrading clusters" section of the documentation](https://www.rabbitmq.com/clustering.html#upgrading) and a note at the end of this release notes document for general documentation on upgrades.
#### ⚠️ Erlang/OTP R16B03 and 17.x Compatibility
Erlang/OTP R16B03 users on Debian and Ubuntu may run into [runtime code compilation errors](https://groups.google.com/forum/#!topic/rabbitmq-users/XfQgta5v6Z0).
While this [was addressed in 3.6.8](https://github.com/rabbitmq/rabbitmq-server/releases/tag/rabbitmq_v3_6_8), we recommend upgrading to at least Erlang 18.0 if possible
(see [Debian installation guide](https://www.rabbitmq.com/install-debian.html) and [RPM installation guide](https://www.rabbitmq.com/install-rpm.html)).
#### ⚠️ New Management Plugin
In clusters that have rabbitmq_management or rabbitmq_management_agent plugins enabled all nodes must be upgraded at the same time.
There is a couple of public-facing changes in the HTTP API.
##### Test Suites that use HTTP API
Integration test suites that rely on HTTP API for listing
or closing connections, channels, etc need to be adjusted with this plugin:
* We recommend reducing stats retention periods (see [Hop](https://github.com/rabbitmq/hop/blob/master/bin/before_build.sh#L11), [rabbit-hole](https://github.com/michaelklishin/rabbit-hole/blob/master/bin/ci/before_build.sh))
* Because stats emission is now two-step and asynchronous, test suites may need
to wait for events to propagate before asserting on them (see [Hop](https://github.com/rabbitmq/hop/blob/master/src/test/groovy/com/rabbitmq/http/client/ClientSpec.groovy#L168), [rabbit-hole](https://github.com/michaelklishin/rabbit-hole/blob/master/rabbithole_test.go#L130)).
##### POST and PUT Responses Use `201 Created`
POST and PUT responses now use `201 Created` instead of `204 No Content`.
#### ⚠️ Single Atom TCP Listener Options
Single atom TCP listener options such as `binary` in this example:
``` erlang
[
{rabbit, [
{tcp_listen_options, [
binary,
{backlog, 4096},
{sndbuf, 32768},
{recbuf, 32768}
]}
%% …
}].
```
won't serialise to JSON correctly in this release. This is [addressed for 3.6.8](https://github.com/rabbitmq/rabbitmq-management-agent/issues/34).
Note that `binary` is one of the default options and there is no need to override it.
There are no other known incompatibilities with 3.6.2 or later releases.
### Server
#### Bug Fixes
* queue leader process could terminate with a `{bad_match, {error, not_found}}` error.
GitHub issue: [rabbitmq-server#1035](https://github.com/rabbitmq/rabbitmq-server/issues/1035)
* `rabbitmq-service.bat` should exit with a non-0 code when installation fails.
GitHub issue: [rabbitmq-server#1052](https://github.com/rabbitmq/rabbitmq-server/issues/1052)
* `rabbitmqctl stop_app` now produces a more technically correct output about
what the operation does.
GitHub issue: [rabbitmq-server#1043](https://github.com/rabbitmq/rabbitmq-server/issues/1043)
#### Enhancements
* Nodes in a cluster now can be restared in arbitrary order. They will attempt to contact
one of the previously seen peers periodically (10 times with 30 second intervals by default).
GitHub issue: [rabbitmq-server#1033](https://github.com/rabbitmq/rabbitmq-server/issues/1033)
* Increased credit flow default settings, background GC is disabled by default
for more predictable latency.
GitHub issue: [rabbitmq-server#1098](https://github.com/rabbitmq/rabbitmq-server/pull/1098)
* TLS listeners now support SNI (via [Ranch 1.3.0](https://ninenines.eu/articles/ranch-1.3/)).
GitHub issue: [rabbitmq-server#789](https://github.com/rabbitmq/rabbitmq-server/issues/789)
* Successful connection authentication now leaves additional log entries, just like authentication
failures. It is now easier to see from the log what user connected to what vhost.
GitHub issue: [rabbitmq-server#1140](https://github.com/rabbitmq/rabbitmq-server/issues/1140)
* Internal authentication backend now supports credential validators.
GitHub issue: [rabbitmq-server#1054](https://github.com/rabbitmq/rabbitmq-server/issues/1054)
* Worker process shutdown timeout now can be configured.
GitHub issue: [rabbitmq-server#847](https://github.com/rabbitmq/rabbitmq-server/issues/847)
* Default Erlang VM ETS limit was increased from 1400 to 50000. This is necessary to support
a larger number of virtual hosts with the new management plugin.
GitHub issue: [rabbitmq-server#1059](https://github.com/rabbitmq/rabbitmq-server/issues/1059)
* `RABBITMQ_PLUGINS_DIR` now supports multiple directories (colon-separated on Linux and other UNIX-like
platforms, semicolon-separated on Windows).
Contributed by Alexey Lebedeff.
GitHub issue: [rabbitmq-server#1001](https://github.com/rabbitmq/rabbitmq-server/issues/1001)
* Background GC now can be disabled and configured to use a different target interval value.
Original patch by Tim Stewart.
GitHub issue: [rabbitmq-server#1026](https://github.com/rabbitmq/rabbitmq-server/issues/1026)
* `L`-prefixed (`long-long-int`) attribute table (header) keys are now accepted by the parser.
GitHub issue: [rabbitmq-server#1093](https://github.com/rabbitmq/rabbitmq-server/issues/1093)
### Management Plugin
#### Bug Fixes
* Node health check responded with status 500 if health check failed due to a timeout.
GitHub issue: [rabbitmq-management#307](https://github.com/rabbitmq/rabbitmq-management/issues/307)
* `GET /api/nodes` response entries contained a duplicate JSON document property (key).
GitHub issue: [rabbitmq-management#305](https://github.com/rabbitmq/rabbitmq-management/issues/305)
* `rabbitmqadmin` listing commands failed to output values that contained non-ASCII characters
(such as queue names in Asian languages).
GitHub issue: [rabbitmq-management#343](https://github.com/rabbitmq/rabbitmq-management/issues/343)
* Queue details page now correctly displays the number of paged out transient messages.
GitHub issue: [rabbitmq-management#345](https://github.com/rabbitmq/rabbitmq-management/issues/345)
* When user filter returned no results, the message incorrectly said "no vhosts."
GitHub issue: [rabbitmq-management#357](https://github.com/rabbitmq/rabbitmq-management/issues/357)
#### Enhancements
* New management plugin implementation that stores stats on all cluster nodes.
GitHub issue: [rabbitmq-management#236](https://github.com/rabbitmq/rabbitmq-management/issues/236)
* Purging a queue via UI now requires a confirmation.
GitHub issue: [rabbitmq-management#195](https://github.com/rabbitmq/rabbitmq-management/issues/195)
* Queue deletion and purging buttons now use separate UI panes.
GitHub issue: [rabbitmq-management#158](https://github.com/rabbitmq/rabbitmq-management/issues/158)
* Plugins that use HTTP (management, Web STOMP, Web MQTT) now register their ports
as TCP listeners.
GitHub issue: [rabbitmq-web-dispatch#14](https://github.com/rabbitmq/rabbitmq-web-dispatch/issues/14)
* Overview chart legend labels are now clearer and grouped in a more useful way.
GitHub issue: [rabbitmq-management#339](https://github.com/rabbitmq/rabbitmq-management/issues/339)
* Creating a queue in a vhost the user has no access to now provides
reasonable feedback.
GitHub issue: [rabbitmq-management#241](https://github.com/rabbitmq/rabbitmq-management/issues/241)
* Listing queues in a vhost the user has no access to now provides
reasonable feedback.
GitHub issue: [rabbitmq-management#237](https://github.com/rabbitmq/rabbitmq-management/issues/237)
* Deletion UI dialog has clearer wording.
GitHub issue: [rabbitmq-management#159](https://github.com/rabbitmq/rabbitmq-management/issues/159)
* When creating exchanges/queues, virtual host is now pre-selected to match the "current" one.
GitHub issue: [rabbitmq-management#235](https://github.com/rabbitmq/rabbitmq-management/issues/235)
* User creation form now features the "impersonator" tag.
GitHub issue: [rabbitmq-management#284](https://github.com/rabbitmq/rabbitmq-management/issues/284)
* Queue declaration form now includes a shortcut button for switching queue
mode to "lazy."
GitHub issue: [rabbitmq-management#205](https://github.com/rabbitmq/rabbitmq-management/issues/205)
### MQTT Plugin
#### Bug Fixes
* Fixed a memory leak in statistics tables in case of certain
abnormal connection termination scenarios.
GitHub issue: [rabbitmq-mqtt#117](https://github.com/rabbitmq/rabbitmq-mqtt/issues/117)
* Last Will messages that had the `retained` flag set were not retained.
GitHub issue: [rabbitmq-mqtt#74](https://github.com/rabbitmq/rabbitmq-mqtt/issues/74)
* More metrics are reported for MQTT connections.
GitHub issue: [rabbitmq-mqtt#121](https://github.com/rabbitmq/rabbitmq-mqtt/issues/121)
* Certain virtual host names could cause MQTT retainer to not start.
GitHub issue: [rabbitmq-mqtt#123](https://github.com/rabbitmq/rabbitmq-mqtt/issues/123)
#### Enhancements
* Improved logging around connection termination due to unparseable traffic,
e.g. HTTP requests sent to MQTT plugin port.
GitHub issue: [rabbitmq-mqtt#119](https://github.com/rabbitmq/rabbitmq-mqtt/issues/119)
* There is now a way to map MQTT listener ports (target client connection ports)
to vhosts.
GitHub issue: [rabbitmq-mqtt#111](https://github.com/rabbitmq/rabbitmq-mqtt/issues/111)
* There is now a way to map client certificate CN values to vhosts and thus make
specific clients connect to designated vhosts.
GitHub issue: [rabbitmq-mqtt#73](https://github.com/rabbitmq/rabbitmq-mqtt/issues/73)
* Connections to non-existent hosts are now gracefully closed with a reasonable
error code (invalid credentials).
GitHub issue: [rabbitmq-mqtt#100](https://github.com/rabbitmq/rabbitmq-mqtt/issues/100)
* More configuration values are accepted as strings (as well as binaries).
GitHub issue: [rabbitmq-mqtt#86](https://github.com/rabbitmq/rabbitmq-mqtt/issues/86)
### STOMP Plugin
#### Bug Fixes
* Fixed a memory leak in statistics tables in case of certain
abnormal connection termination scenarios.
GitHub issue: [rabbitmq-stomp#103](https://github.com/rabbitmq/rabbitmq-stomp/pull/103)
* More metrics are reported for STOMP connections.
GitHub issue: [rabbitmq-stomp#102](https://github.com/rabbitmq/rabbitmq-stomp/issues/102)
### Federation Plugin
#### Bug Fixes
* The plugin now tolerates a higher rate of link [re-]connection failures.
The rate sustained depends on the `reconnect-delay` parameter configured for the upstream
(see the issue below for details).
GitHub issue: [rabbitmq-federation#46](https://github.com/rabbitmq/rabbitmq-federation/issues/46)
#### Enhancements
* Improved logging for federation links that voluntarily stop, e.g. because
something in their controlling policy has changed.
GitHub issue: [rabbitmq-federation#43](https://github.com/rabbitmq/rabbitmq-federation/issues/43)
* Improved logging around network partitions that can affect federation links.
GitHub issue: [rabbitmq-federation#53](https://github.com/rabbitmq/rabbitmq-federation/issues/53)
### Federation Management Plugin
#### Enhancements
* New HTTP API endpoint that lists only down links.
GitHub issue: [rabbitmq-federation-management#18](https://github.com/rabbitmq/rabbitmq-federation-management/issues/18)
* New HTTP API endpoint that restarts a link.
GitHub issue: [rabbitmq-federation-management#17](https://github.com/rabbitmq/rabbitmq-federation-management/issues/17)
### LDAP Plugin
#### Bug Fixes
* Match query was matching too eagerly ("bi-directionally").
GitHub issue: [rabbitmq-auth-backend-ldap#56](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/56)
* Default LDAP server port was unintentionally set to `3890` (instead of `389`).
GitHub issue: [rabbitmq-auth-backend-ldap#64](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/64)
#### Enhancements
* LDAP server connection pool now supports time-based expiration (and closure) of inactive
LDAP connections.
GitHub issue: [rabbitmq-auth-backend-ldap#7](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/7)
### Top Plugin
#### Enhancements
* Internal buffer length of processes that implement the `gen_server2` behaviour
(most notably queues) are now collected and visible in `rabbitmq_top`. Combined
with Erlang mailbox length this provides a more or less complete picture of Erlang
message backlog a process has.
GitHub issue: [rabbitmq-top#20](https://github.com/rabbitmq/rabbitmq-top/issues/20)
### Event Exchange Plugin
#### Enhacements
* Resource alarm events are now accessible via the event exchange.
GitHub issue: [rabbitmq-server#1120](https://github.com/rabbitmq/rabbitmq-server/issues/1120)
### Web MQTT Plugin
#### Enhancements
* Web MQTT port is now registered as a TCP listener and shows up in the management UI
listeners section.
GitHub issue: [rabbitmq-web-mqtt#17](https://github.com/rabbitmq/rabbitmq-web-mqtt/issues/17)
### Web STOMP Plugin
#### Bug Fixes
* When HTTP basic authentication is used but credentials are not provided, the plugin should
fall back to default configured STOMP plugin credentials.
GitHub issue: [rabbitmq-web-stomp#60](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/60)
#### Enhancements
* Web STOMP port is now registered as a TCP listener and shows up in the management UI
listeners section.
GitHub issue: [rabbitmq-web-stomp#65](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/65)
### Trust Store Plugin
#### Enhancements
* Pluggable certificate providers (sources).
GitHub issue: [rabbitmq-trust-store#1](https://github.com/rabbitmq/rabbitmq-trust-store/issues/1)
* HTTP(S) certificate provider (source).
GitHub issue: [rabbitmq-trust-store#54](https://github.com/rabbitmq/rabbitmq-trust-store/issues/54)
### .NET Client
#### Bug Fixes
* `AutorecoveringConnection` had unsynchronised concurrent access to several of its mutable field.
GitHub issues: [rabbitmq-dotnet-client#288](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/288),
[rabbitmq-dotnet-client#291](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/291)
### Erlang Client
#### Bug Fixes
* The client OTP app now correctly defines dependencies on
`compiler` and `syntax_tools`.
GitHub issue: [rabbitmq-erlang-client#72](https://github.com/rabbitmq/rabbitmq-erlang-client/issues/72)
#### Enhancements
* URI parser now accepts binaries as well as strings.
GitHub issue: [rabbitmq-erlang-client#76](https://github.com/rabbitmq/rabbitmq-erlang-client/issues/76)
## Upgrading
To upgrade a non-clustered RabbitMQ simply install the new version. All configuration and persistent message data are retained. When upgrading using definitions export/import from versions earlier than 3.6.0, see http://rabbitmq.com/passwords.html.
To upgrade a RabbitMQ cluster, follow the instructions [in RabbitMQ documentation](https://www.rabbitmq.com/clustering.html#upgrading).
## 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-3.6.7.tar.gz`.