@michaelklishin michaelklishin released this Dec 11, 2016 · 2030 commits to master since this release

Assets 46

RabbitMQ 3.6.7

RabbitMQ 3.6.7 is a maintenance release that includes a new reworked management plugin that stores collected stats on all cluster nodes (as opposed to one dedicated node).

Upgrades and Compatibility

⚠️ This release contains breaking changes that require all cluster nodes
to be upgraded at the same time.

See the "Upgrading clusters" section of the documentation 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.
While this was addressed in 3.6.8, we recommend upgrading to at least Erlang 18.0 if possible
(see Debian installation guide and RPM installation guide).

⚠️ 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, rabbit-hole)
  • 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, rabbit-hole).
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:

[
 {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.
Note that binary is one of the default options and there is no need to override it.

⚠️ TCP Listener Table Change

This release includes a breaking schema change in the internal table that stores TCP/TLS listeners.

There are no other known incompatibilities with 3.6.2 or later releases.

Server

Bug Fixes

  • Queue master process could terminate with a {bad_match, {error, not_found}} error.

    GitHub issue: rabbitmq-server#1035

  • rabbitmq-service.bat should exit with a non-0 code when installation fails.

    GitHub issue: rabbitmq-server#1052

  • rabbitmqctl stop_app now produces a more technically correct output about
    what the operation does.

    GitHub issue: rabbitmq-server#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

  • Increased credit flow default settings, background GC is disabled by default
    for more predictable latency.

    GitHub issue: rabbitmq-server#1098

  • TLS listeners now support SNI (via Ranch 1.3.0).

    GitHub issue: rabbitmq-server#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

  • Internal authentication backend now supports credential validators.

    GitHub issue: rabbitmq-server#1054

  • Worker process shutdown timeout now can be configured.

    GitHub issue: rabbitmq-server#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

  • 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

  • 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

  • L-prefixed (long-long-int) attribute table (header) keys are now accepted by the parser.

    GitHub issue: rabbitmq-server#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

  • GET /api/nodes response entries contained a duplicate JSON document property (key).

    GitHub issue: rabbitmq-management#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

  • Queue details page now correctly displays the number of paged out transient messages.

    GitHub issue: rabbitmq-management#345

  • When user filter returned no results, the message incorrectly said "no vhosts."

    GitHub issue: rabbitmq-management#357

Enhancements

MQTT Plugin

Bug Fixes

  • Fixed a memory leak in statistics tables in case of certain
    abnormal connection termination scenarios.

    GitHub issue: rabbitmq-mqtt#117

  • Last Will messages that had the retained flag set were not retained.

    GitHub issue: rabbitmq-mqtt#74

  • More metrics are reported for MQTT connections.

    GitHub issue: rabbitmq-mqtt#121

  • Certain virtual host names could cause MQTT retainer to not start.

    GitHub issue: rabbitmq-mqtt#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

  • There is now a way to map MQTT listener ports (target client connection ports)
    to vhosts.

    GitHub issue: rabbitmq-mqtt#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

  • Connections to non-existent hosts are now gracefully closed with a reasonable
    error code (invalid credentials).

    GitHub issue: rabbitmq-mqtt#100

  • More configuration values are accepted as strings (as well as binaries).

    GitHub issue: rabbitmq-mqtt#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

  • More metrics are reported for STOMP connections.

    GitHub issue: rabbitmq-stomp#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

Enhancements

  • Improved logging for federation links that voluntarily stop, e.g. because
    something in their controlling policy has changed.

    GitHub issue: rabbitmq-federation#43

  • Improved logging around network partitions that can affect federation links.

    GitHub issue: rabbitmq-federation#53

Federation Management Plugin

Enhancements

LDAP Plugin

Bug Fixes

Enhancements

  • LDAP server connection pool now supports time-based expiration (and closure) of inactive
    LDAP connections.

    GitHub issue: rabbitmq-auth-backend-ldap#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

Event Exchange Plugin

Enhacements

  • Resource alarm events are now accessible via the event exchange.

    GitHub issue: rabbitmq-server#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

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

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

Trust Store Plugin

Enhancements

.NET Client

Bug Fixes

Erlang Client

Bug Fixes

  • The client OTP app now correctly defines dependencies on
    compiler and syntax_tools.

    GitHub issue: rabbitmq-erlang-client#72

Enhancements

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. This release includes breaking changes
in the management and management-agent plugins as well as TCP/TLS listeners table.
Therefore all cluster nodes must be upgraded at the same time.

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.