414 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Markdown
		
	
	
	
		
		
			
		
	
	
			414 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Markdown
		
	
	
	
|  | ## 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`. |