235 lines
9.6 KiB
Markdown
235 lines
9.6 KiB
Markdown
|
## RabbitMQ 3.6.6
|
||
|
|
||
|
`3.6.6` is a maintenance release that includes a fix for an **important security vulnerability** ([CVE-2016-9877](https://pivotal.io/security/cve-2016-9877)) in the MQTT plugin.
|
||
|
|
||
|
### Upgrades and Compatibility
|
||
|
|
||
|
> :warning:
|
||
|
> **Upgrading from versions between 3.6.0 and 3.6.5 to this release requires a cluster shutdown.**
|
||
|
This is also true for versions prior to 3.6.0.
|
||
|
See the ["Upgrading clusters" section of the documentation](https://www.rabbitmq.com/clustering.html#upgrading).
|
||
|
|
||
|
### Server
|
||
|
|
||
|
#### Bug Fixes
|
||
|
|
||
|
* Changing queue mode to `lazy` could block queue process in certain circumstances.
|
||
|
|
||
|
GitHub issue: [rabbitmq-server#850](https://github.com/rabbitmq/rabbitmq-server/issues/850)
|
||
|
|
||
|
* Mirroring implementation didn't handle certain internal protocol messages arriving
|
||
|
out of order.
|
||
|
|
||
|
GitHub issue: [rabbitmq-server#922](https://github.com/rabbitmq/rabbitmq-server/issues/922)
|
||
|
|
||
|
* Mirror set changes weren't handled gracefully in certain circumstances (e.g. in the middle of a mirror promotion).
|
||
|
|
||
|
GitHub issue: [rabbitmq-server#914](https://github.com/rabbitmq/rabbitmq-server/issues/914)
|
||
|
|
||
|
* Mirrored queue could terminate after promotion if HA policy was reapplied during sync.
|
||
|
|
||
|
GitHub issue: [rabbitmq-server#803](https://github.com/rabbitmq/rabbitmq-server/issues/803)
|
||
|
|
||
|
* Autoheal partition handling mode could run into a multi-node deadlock.
|
||
|
|
||
|
GitHub issue: [rabbitmq-server#928](https://github.com/rabbitmq/rabbitmq-server/issues/928)
|
||
|
|
||
|
* Queue mirror group membership now correctly handles certain partial partition cases.
|
||
|
|
||
|
GitHub issues: [rabbitmq-server#950](https://github.com/rabbitmq/rabbitmq-server/issues/950),
|
||
|
[rabbitmq-server#953](https://github.com/rabbitmq/rabbitmq-server/issues/953)
|
||
|
|
||
|
* Eager queue sync will now stop as soon as a mirror shutdown/unavailability is detected.
|
||
|
|
||
|
GitHub issue: [rabbitmq-server#975](https://github.com/rabbitmq/rabbitmq-server/issues/975)
|
||
|
|
||
|
* Lazy queues now trigger runtime GC significantly less frequently, making moving data
|
||
|
to the message store more efficient.
|
||
|
|
||
|
GitHub issue: [rabbitmq-server#973](https://github.com/rabbitmq/rabbitmq-server/issues/973)
|
||
|
|
||
|
* Mirroring policies now respect the `nodes` parameter when re-electing a master.
|
||
|
|
||
|
GitHub issue: [](https://github.com/rabbitmq/rabbitmq-server/issues/990)
|
||
|
|
||
|
* After a partial network partitions, nodes with newly elected masters will now be more defensive
|
||
|
about the (no longer relevant) policy change notifications.
|
||
|
|
||
|
GitHub issue: [rabbitmq-server#1007](https://github.com/rabbitmq/rabbitmq-server/issues/1007)
|
||
|
|
||
|
* Late responses from peers in certain partial network partition scenarios are now
|
||
|
ignored by channels.
|
||
|
|
||
|
GitHub issue: [rabbitmq-server#1005](https://github.com/rabbitmq/rabbitmq-server/issues/1005)
|
||
|
|
||
|
* After a partial network partitions, nodes with newly elected masters will now be more defensive
|
||
|
about the (no longer relevant) synchronization start requests.
|
||
|
|
||
|
GitHub issue: [rabbitmq-server#1006](https://github.com/rabbitmq/rabbitmq-server/issues/1006)
|
||
|
|
||
|
* Network partition triggered late and duplicate acknowledgements are now ignored/filterd out
|
||
|
by queue leader processes.
|
||
|
|
||
|
GitHub issue: [rabbitmq-server#960](https://github.com/rabbitmq/rabbitmq-server/issues/960)
|
||
|
|
||
|
* Queue mirrors now try detect leader replica changes during partial partitions and do a clean stop
|
||
|
instead of failing because their state is in sync with the old leader and not the newly promoted one.
|
||
|
|
||
|
GitHub issue: [rabbitmq-server#944](https://github.com/rabbitmq/rabbitmq-server/issues/944)
|
||
|
|
||
|
* `rabbitmqctl` and server startup could be affected by some DNS configurations.
|
||
|
|
||
|
GitHub issue: [rabbitmq-server#890](https://github.com/rabbitmq/rabbitmq-server/issues/890)
|
||
|
|
||
|
* RPM package was split into two: for CentOS 6 and 7. The latter includes systemd support.
|
||
|
|
||
|
GitHub issue: [rabbitmq-server#932](https://github.com/rabbitmq/rabbitmq-server/issues/932)
|
||
|
|
||
|
* Workaround for Erlang/OTP bug OTP-13425 where crash dump generation failed on UNIX
|
||
|
platforms.
|
||
|
|
||
|
GitHub issue: [rabbitmq-server#956](https://github.com/rabbitmq/rabbitmq-server/issues/956)
|
||
|
|
||
|
#### Enhancements
|
||
|
|
||
|
* Inter-node traffic buffer increased to 32 MB by default, configurable with `RABBITMQ_DISTRIBUTION_BUFFER_SIZE` (in kilobytes).
|
||
|
|
||
|
This improves network bandwidth utilization for inter-node traffic and reduces the probability
|
||
|
of spurious network partitions due to latency spikes caused by the buffer being full.
|
||
|
|
||
|
GitHub issue: [rabbitmq-server#908](https://github.com/rabbitmq/rabbitmq-server/issues/908)
|
||
|
|
||
|
* Default flow control settings were increased to `{200, 100}`. This helps with consumer throughput
|
||
|
in some cases. The value still can be configured using the `rabbit.credit_flow_default_credit` setting.
|
||
|
|
||
|
GitHub issue: [rabbitmq-server#949](https://github.com/rabbitmq/rabbitmq-server/issues/949)
|
||
|
|
||
|
* `rabbitmqctl list_queues` now has more filtering options.
|
||
|
|
||
|
GitHub issue: [rabbitmq-server#851](https://github.com/rabbitmq/rabbitmq-server/issues/851)
|
||
|
|
||
|
* `RABBITMQ_IGNORE_SIGINT` is a new environment variable that lets the user disable the
|
||
|
`+B` VM flag that is known to have issues in Erlang 18.x series (prevents crash dumps from being produced).
|
||
|
|
||
|
GitHub issue: [rabbitmq-server#956](https://github.com/rabbitmq/rabbitmq-server/issues/956)
|
||
|
|
||
|
* The `pg2_fixed` module is now replaced by the standard `pg2` from a newer Erlang/OTP release.
|
||
|
|
||
|
GitHub issue: [rabbitmq-server#980](https://github.com/rabbitmq/rabbitmq-server/issues/980)
|
||
|
|
||
|
### MQTT Plugin
|
||
|
|
||
|
#### Bug Fixes
|
||
|
|
||
|
* Authentication with correct username but omitted password succeeded when TLS/x509
|
||
|
certificate wasn't provided by the client. CVE allocation for this vulnerability is pending.
|
||
|
|
||
|
GitHub issue: [rabbitmq-mqtt#96](https://github.com/rabbitmq/rabbitmq-mqtt/issues/96)
|
||
|
|
||
|
|
||
|
### JMS Topic Exchange Plugin
|
||
|
|
||
|
#### Bug Fixes
|
||
|
|
||
|
* The plugin no longer tries to check if JMS client's version is identical/compatible.
|
||
|
This caused certain legitimate use cases, such as exchange declaration over HTTP API, to fail.
|
||
|
|
||
|
GitHub issue: [rabbitmq-jms-topic-exchange#9](https://github.com/rabbitmq/rabbitmq-jms-topic-exchange/issues/9)
|
||
|
|
||
|
|
||
|
### Java Client
|
||
|
|
||
|
#### Bug Fixes
|
||
|
|
||
|
* Fixed a NPE that can occur when a thread attempts to create a new channel after a connection
|
||
|
has been recovered but before channel recovery has completed.
|
||
|
|
||
|
GitHub issue: [rabbitmq-java-client#197](https://github.com/rabbitmq/rabbitmq-java-client/pull/197)
|
||
|
|
||
|
Contributed by Michael Dent.
|
||
|
|
||
|
* Binding cache entries of auto-delete queues should be cleaned up when the last consumer is cancelled.
|
||
|
|
||
|
GitHub issue: [rabbitmq-java-client#199](https://github.com/rabbitmq/rabbitmq-java-client/pull/199)
|
||
|
|
||
|
Contributed by Michael Dent.
|
||
|
|
||
|
* When a channel is closed, consumers will be correctly cleaned up from AutorecoveringConnection cache.
|
||
|
|
||
|
GitHub issue: [rabbitmq-java-client#208](https://github.com/rabbitmq/rabbitmq-java-client/issues/208)
|
||
|
|
||
|
* `junit` is no longer listed as a dependency in the OSGi manifest
|
||
|
|
||
|
GitHub issue: [rabbitmq-java-client#211](https://github.com/rabbitmq/rabbitmq-java-client/issues/211)
|
||
|
|
||
|
#### Enhancements
|
||
|
|
||
|
* `com.rabbitmq.client.AddressResolver` is a new interface that can be used to "expand"
|
||
|
endpoints into groups of IP addresses, e.g. to a list of IP addresses resolved from a DNS
|
||
|
record.
|
||
|
|
||
|
GitHub issue: [rabbitmq-java-client#153](https://github.com/rabbitmq/rabbitmq-java-client/issues/153)
|
||
|
|
||
|
* Building on the new `AddressResolver` interface, the client now includes a resolver
|
||
|
that uses DNS SVR records to discover endpoints.
|
||
|
|
||
|
GitHub issue: [rabbitmq-java-client#104](https://github.com/rabbitmq/rabbitmq-java-client/issues/104)
|
||
|
|
||
|
* `com.rabbitmq.client.BuiltinExchangeType` is an enum that contains built-in exchange types.
|
||
|
|
||
|
GitHub issue: [rabbitmq-java-client#150](https://github.com/rabbitmq/rabbitmq-java-client/issues/150)
|
||
|
|
||
|
|
||
|
### .NET Client
|
||
|
|
||
|
#### Bug Fixes
|
||
|
|
||
|
* Fixed a possible `NullReferenceException` in `HeartbeatReadTimerCallback` during
|
||
|
connection closure.
|
||
|
|
||
|
GitHub issue: [rabbitmq-dotnet-client#257](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/257)
|
||
|
|
||
|
* Fixed a potential race condition in `EventingBasicConsumer`
|
||
|
|
||
|
GitHub issue: [rabbitmq-dotnet-client#242](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/242)
|
||
|
|
||
|
### Federation Plugin
|
||
|
|
||
|
#### Enhancements
|
||
|
|
||
|
* Federation links now specify a name which makes them easier to tell from other connections
|
||
|
in the management UI (requires RabbitMQ 3.6.3+).
|
||
|
|
||
|
GitHub issue: [rabbitmq-federation#39](https://github.com/rabbitmq/rabbitmq-federation/issues/39)
|
||
|
|
||
|
|
||
|
### Shovel Plugin
|
||
|
|
||
|
#### Enhancements
|
||
|
|
||
|
* Shovel connections now specify a name which makes them easier to tell from other connections
|
||
|
in the management UI (requires RabbitMQ 3.6.3+).
|
||
|
|
||
|
GitHub issue: [rabbitmq-shovel#19](https://github.com/rabbitmq/rabbitmq-shovel/issues/19)
|
||
|
|
||
|
## Release Artifacts
|
||
|
|
||
|
Available from:
|
||
|
|
||
|
* GitHub (see below)
|
||
|
* [Bintray](https://bintray.com/rabbitmq/)
|
||
|
* [Package Cloud](https://packagecloud.io/rabbitmq/)
|
||
|
* [rabbitmq.com](https://www.rabbitmq.com/download.html)
|
||
|
|
||
|
|
||
|
## 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.6.tar.gz`.
|