From eff69f5772498f6a6585b93c98401d8c248854ec Mon Sep 17 00:00:00 2001 From: Michael Klishin Date: Fri, 30 Jul 2021 19:23:19 +0300 Subject: [PATCH] Move release notes from rabbitmq/rabbitmq-website Keeping them in this repo might encourage more people to update them as changes are merged, and simplify release automation a bit. So let's try it. Per suggestion from @gerhard. --- release-notes/3.5.7.md | 169 ++++++++++ release-notes/3.5.8.md | 30 ++ release-notes/3.6.0.md | 462 ++++++++++++++++++++++++++ release-notes/3.6.1.md | 280 ++++++++++++++++ release-notes/3.6.10.md | 183 +++++++++++ release-notes/3.6.11.md | 236 +++++++++++++ release-notes/3.6.12.md | 67 ++++ release-notes/3.6.13.md | 119 +++++++ release-notes/3.6.14.md | 48 +++ release-notes/3.6.15.md | 142 ++++++++ release-notes/3.6.16.md | 143 ++++++++ release-notes/3.6.2.md | 375 +++++++++++++++++++++ release-notes/3.6.3.md | 218 ++++++++++++ release-notes/3.6.4.md | 77 +++++ release-notes/3.6.5.md | 24 ++ release-notes/3.6.6.md | 234 +++++++++++++ release-notes/3.6.7.md | 413 +++++++++++++++++++++++ release-notes/3.6.8.md | 59 ++++ release-notes/3.6.9.md | 63 ++++ release-notes/3.7.0.md | 475 +++++++++++++++++++++++++++ release-notes/3.7.1.md | 121 +++++++ release-notes/3.7.10.md | 248 ++++++++++++++ release-notes/3.7.11.md | 139 ++++++++ release-notes/3.7.12.md | 209 ++++++++++++ release-notes/3.7.13.md | 177 ++++++++++ release-notes/3.7.14.md | 100 ++++++ release-notes/3.7.15.md | 255 ++++++++++++++ release-notes/3.7.16.md | 174 ++++++++++ release-notes/3.7.17.md | 122 +++++++ release-notes/3.7.18.md | 163 +++++++++ release-notes/3.7.19.md | 114 +++++++ release-notes/3.7.2.md | 30 ++ release-notes/3.7.20.md | 163 +++++++++ release-notes/3.7.21.md | 98 ++++++ release-notes/3.7.22.md | 100 ++++++ release-notes/3.7.23.md | 78 +++++ release-notes/3.7.24.md | 114 +++++++ release-notes/3.7.25.md | 115 +++++++ release-notes/3.7.26.md | 79 +++++ release-notes/3.7.27.md | 83 +++++ release-notes/3.7.28.md | 64 ++++ release-notes/3.7.3.md | 110 +++++++ release-notes/3.7.4.md | 117 +++++++ release-notes/3.7.5.md | 201 ++++++++++++ release-notes/3.7.6.md | 122 +++++++ release-notes/3.7.7.md | 86 +++++ release-notes/3.7.8.md | 339 +++++++++++++++++++ release-notes/3.7.9.md | 251 ++++++++++++++ release-notes/3.8.0.md | 288 ++++++++++++++++ release-notes/3.8.1.md | 219 ++++++++++++ release-notes/3.8.10.md | 351 ++++++++++++++++++++ release-notes/3.8.11.md | 72 ++++ release-notes/3.8.12.md | 214 ++++++++++++ release-notes/3.8.13.md | 155 +++++++++ release-notes/3.8.14.md | 77 +++++ release-notes/3.8.15.md | 175 ++++++++++ release-notes/3.8.16.md | 87 +++++ release-notes/3.8.17.md | 145 ++++++++ release-notes/3.8.18.md | 179 ++++++++++ release-notes/3.8.19.md | 79 +++++ release-notes/3.8.2.md | 204 ++++++++++++ release-notes/3.8.3.md | 305 +++++++++++++++++ release-notes/3.8.4.md | 413 +++++++++++++++++++++++ release-notes/3.8.5.md | 315 ++++++++++++++++++ release-notes/3.8.6.md | 306 +++++++++++++++++ release-notes/3.8.7.md | 113 +++++++ release-notes/3.8.8.md | 153 +++++++++ release-notes/3.8.9.md | 135 ++++++++ release-notes/3.9.0.md | 240 ++++++++++++++ release-notes/3.9.1.md | 58 ++++ release-notes/README-1.1.0-alpha.txt | 84 +++++ release-notes/README-1.1.1.txt | 61 ++++ release-notes/README-1.2.0.txt | 63 ++++ release-notes/README-1.3.0.txt | 96 ++++++ release-notes/README-1.4.0.txt | 108 ++++++ release-notes/README-1.5.0.txt | 143 ++++++++ release-notes/README-1.5.1.txt | 81 +++++ release-notes/README-1.5.2.txt | 79 +++++ release-notes/README-1.5.3.txt | 79 +++++ release-notes/README-1.5.4.txt | 81 +++++ release-notes/README-1.5.5.txt | 91 +++++ release-notes/README-1.6.0.txt | 86 +++++ release-notes/README-1.7.0.txt | 105 ++++++ release-notes/README-1.7.1.txt | 123 +++++++ release-notes/README-1.7.2.txt | 75 +++++ release-notes/README-1.8.0.txt | 208 ++++++++++++ release-notes/README-1.8.1.txt | 69 ++++ release-notes/README-2.0.0.txt | 98 ++++++ release-notes/README-2.1.0.txt | 53 +++ release-notes/README-2.1.1.txt | 60 ++++ release-notes/README-2.2.0.txt | 106 ++++++ release-notes/README-2.3.0.txt | 163 +++++++++ release-notes/README-2.3.1.txt | 36 ++ release-notes/README-2.4.0.txt | 143 ++++++++ release-notes/README-2.4.1.txt | 87 +++++ release-notes/README-2.5.0.txt | 135 ++++++++ release-notes/README-2.5.1.txt | 34 ++ release-notes/README-2.6.0.txt | 181 ++++++++++ release-notes/README-2.6.1.txt | 59 ++++ release-notes/README-2.7.0.txt | 142 ++++++++ release-notes/README-2.7.1.txt | 105 ++++++ release-notes/README-2.8.0.txt | 202 ++++++++++++ release-notes/README-2.8.1.txt | 41 +++ release-notes/README-2.8.2.txt | 106 ++++++ release-notes/README-2.8.3.txt | 89 +++++ release-notes/README-2.8.4.txt | 30 ++ release-notes/README-2.8.5.txt | 47 +++ release-notes/README-2.8.6.txt | 64 ++++ release-notes/README-2.8.7.txt | 70 ++++ release-notes/README-3.0.0.txt | 244 ++++++++++++++ release-notes/README-3.0.1.txt | 66 ++++ release-notes/README-3.0.2.txt | 88 +++++ release-notes/README-3.0.3.txt | 55 ++++ release-notes/README-3.0.4.txt | 25 ++ release-notes/README-3.1.0.txt | 173 ++++++++++ release-notes/README-3.1.1.txt | 64 ++++ release-notes/README-3.1.2.txt | 90 +++++ release-notes/README-3.1.3.txt | 12 + release-notes/README-3.1.4.txt | 91 +++++ release-notes/README-3.1.5.txt | 39 +++ release-notes/README-3.2.0.txt | 191 +++++++++++ release-notes/README-3.2.1.txt | 55 ++++ release-notes/README-3.2.2.txt | 60 ++++ release-notes/README-3.2.3.txt | 64 ++++ release-notes/README-3.2.4.txt | 87 +++++ release-notes/README-3.3.0.txt | 244 ++++++++++++++ release-notes/README-3.3.1.txt | 107 ++++++ release-notes/README-3.3.2.txt | 118 +++++++ release-notes/README-3.3.3.txt | 46 +++ release-notes/README-3.3.4.txt | 46 +++ release-notes/README-3.3.5.txt | 99 ++++++ release-notes/README-3.4.0.txt | 269 +++++++++++++++ release-notes/README-3.4.1.txt | 69 ++++ release-notes/README-3.4.2.txt | 66 ++++ release-notes/README-3.4.3.txt | 107 ++++++ release-notes/README-3.4.4.txt | 104 ++++++ release-notes/README-3.5.0.txt | 170 ++++++++++ release-notes/README.md | 16 + 138 files changed, 18620 insertions(+) create mode 100644 release-notes/3.5.7.md create mode 100644 release-notes/3.5.8.md create mode 100644 release-notes/3.6.0.md create mode 100644 release-notes/3.6.1.md create mode 100644 release-notes/3.6.10.md create mode 100644 release-notes/3.6.11.md create mode 100644 release-notes/3.6.12.md create mode 100644 release-notes/3.6.13.md create mode 100644 release-notes/3.6.14.md create mode 100644 release-notes/3.6.15.md create mode 100644 release-notes/3.6.16.md create mode 100644 release-notes/3.6.2.md create mode 100644 release-notes/3.6.3.md create mode 100644 release-notes/3.6.4.md create mode 100644 release-notes/3.6.5.md create mode 100644 release-notes/3.6.6.md create mode 100644 release-notes/3.6.7.md create mode 100644 release-notes/3.6.8.md create mode 100644 release-notes/3.6.9.md create mode 100644 release-notes/3.7.0.md create mode 100644 release-notes/3.7.1.md create mode 100644 release-notes/3.7.10.md create mode 100644 release-notes/3.7.11.md create mode 100644 release-notes/3.7.12.md create mode 100644 release-notes/3.7.13.md create mode 100644 release-notes/3.7.14.md create mode 100644 release-notes/3.7.15.md create mode 100644 release-notes/3.7.16.md create mode 100644 release-notes/3.7.17.md create mode 100644 release-notes/3.7.18.md create mode 100644 release-notes/3.7.19.md create mode 100644 release-notes/3.7.2.md create mode 100644 release-notes/3.7.20.md create mode 100644 release-notes/3.7.21.md create mode 100644 release-notes/3.7.22.md create mode 100644 release-notes/3.7.23.md create mode 100644 release-notes/3.7.24.md create mode 100644 release-notes/3.7.25.md create mode 100644 release-notes/3.7.26.md create mode 100644 release-notes/3.7.27.md create mode 100644 release-notes/3.7.28.md create mode 100644 release-notes/3.7.3.md create mode 100644 release-notes/3.7.4.md create mode 100644 release-notes/3.7.5.md create mode 100644 release-notes/3.7.6.md create mode 100644 release-notes/3.7.7.md create mode 100644 release-notes/3.7.8.md create mode 100644 release-notes/3.7.9.md create mode 100644 release-notes/3.8.0.md create mode 100644 release-notes/3.8.1.md create mode 100644 release-notes/3.8.10.md create mode 100644 release-notes/3.8.11.md create mode 100644 release-notes/3.8.12.md create mode 100644 release-notes/3.8.13.md create mode 100644 release-notes/3.8.14.md create mode 100644 release-notes/3.8.15.md create mode 100644 release-notes/3.8.16.md create mode 100644 release-notes/3.8.17.md create mode 100644 release-notes/3.8.18.md create mode 100644 release-notes/3.8.19.md create mode 100644 release-notes/3.8.2.md create mode 100644 release-notes/3.8.3.md create mode 100644 release-notes/3.8.4.md create mode 100644 release-notes/3.8.5.md create mode 100644 release-notes/3.8.6.md create mode 100644 release-notes/3.8.7.md create mode 100644 release-notes/3.8.8.md create mode 100644 release-notes/3.8.9.md create mode 100644 release-notes/3.9.0.md create mode 100644 release-notes/3.9.1.md create mode 100644 release-notes/README-1.1.0-alpha.txt create mode 100644 release-notes/README-1.1.1.txt create mode 100644 release-notes/README-1.2.0.txt create mode 100644 release-notes/README-1.3.0.txt create mode 100644 release-notes/README-1.4.0.txt create mode 100644 release-notes/README-1.5.0.txt create mode 100644 release-notes/README-1.5.1.txt create mode 100644 release-notes/README-1.5.2.txt create mode 100644 release-notes/README-1.5.3.txt create mode 100644 release-notes/README-1.5.4.txt create mode 100644 release-notes/README-1.5.5.txt create mode 100644 release-notes/README-1.6.0.txt create mode 100644 release-notes/README-1.7.0.txt create mode 100644 release-notes/README-1.7.1.txt create mode 100644 release-notes/README-1.7.2.txt create mode 100644 release-notes/README-1.8.0.txt create mode 100644 release-notes/README-1.8.1.txt create mode 100644 release-notes/README-2.0.0.txt create mode 100644 release-notes/README-2.1.0.txt create mode 100644 release-notes/README-2.1.1.txt create mode 100644 release-notes/README-2.2.0.txt create mode 100644 release-notes/README-2.3.0.txt create mode 100644 release-notes/README-2.3.1.txt create mode 100644 release-notes/README-2.4.0.txt create mode 100644 release-notes/README-2.4.1.txt create mode 100644 release-notes/README-2.5.0.txt create mode 100644 release-notes/README-2.5.1.txt create mode 100644 release-notes/README-2.6.0.txt create mode 100644 release-notes/README-2.6.1.txt create mode 100644 release-notes/README-2.7.0.txt create mode 100644 release-notes/README-2.7.1.txt create mode 100644 release-notes/README-2.8.0.txt create mode 100644 release-notes/README-2.8.1.txt create mode 100644 release-notes/README-2.8.2.txt create mode 100644 release-notes/README-2.8.3.txt create mode 100644 release-notes/README-2.8.4.txt create mode 100644 release-notes/README-2.8.5.txt create mode 100644 release-notes/README-2.8.6.txt create mode 100644 release-notes/README-2.8.7.txt create mode 100644 release-notes/README-3.0.0.txt create mode 100644 release-notes/README-3.0.1.txt create mode 100644 release-notes/README-3.0.2.txt create mode 100644 release-notes/README-3.0.3.txt create mode 100644 release-notes/README-3.0.4.txt create mode 100644 release-notes/README-3.1.0.txt create mode 100644 release-notes/README-3.1.1.txt create mode 100644 release-notes/README-3.1.2.txt create mode 100644 release-notes/README-3.1.3.txt create mode 100644 release-notes/README-3.1.4.txt create mode 100644 release-notes/README-3.1.5.txt create mode 100644 release-notes/README-3.2.0.txt create mode 100644 release-notes/README-3.2.1.txt create mode 100644 release-notes/README-3.2.2.txt create mode 100644 release-notes/README-3.2.3.txt create mode 100644 release-notes/README-3.2.4.txt create mode 100644 release-notes/README-3.3.0.txt create mode 100644 release-notes/README-3.3.1.txt create mode 100644 release-notes/README-3.3.2.txt create mode 100644 release-notes/README-3.3.3.txt create mode 100644 release-notes/README-3.3.4.txt create mode 100644 release-notes/README-3.3.5.txt create mode 100644 release-notes/README-3.4.0.txt create mode 100644 release-notes/README-3.4.1.txt create mode 100644 release-notes/README-3.4.2.txt create mode 100644 release-notes/README-3.4.3.txt create mode 100644 release-notes/README-3.4.4.txt create mode 100644 release-notes/README-3.5.0.txt create mode 100644 release-notes/README.md diff --git a/release-notes/3.5.7.md b/release-notes/3.5.7.md new file mode 100644 index 0000000000..a1a298e146 --- /dev/null +++ b/release-notes/3.5.7.md @@ -0,0 +1,169 @@ +## RabbitMQ 3.5.7 + +RabbitMQ `3.5.7` is primarily a bug fix release. + +### Server + +#### Bug Fixes + + * Fix a race condition that could prevent nodes from stopping. + + GitHub issue: [rabbitmq-server#465](https://github.com/rabbitmq/rabbitmq-server/issues/465) + + * `file_handle_cache:clear_read_cache/0` no longer silently fails. + + The function is mean to be used with `rabbitmqctl eval` in environments where + in-process buffering of file data is enabled. + + GitHub issue: [rabbitmq-server#436](https://github.com/rabbitmq/rabbitmq-server/issues/436) + + * Default `RABBITMQ_PLUGINS_DIR` value on Windows should be calculated as relative to RabbitMQ + server installation directory, not `RABBITMQ_BASE`. + + If you override `RABBITMQ_BASE`, you may need to copy plugins from `%RABBITMQ_BASE%\plugins` + to the `plugins` directory under RabbitMQ installation. + + GitHub issue: [rabbitmq-server#433](https://github.com/rabbitmq/rabbitmq-server/issues/433) + + * When rabbitmq-server failed to start due to an unreadable config file, exit code was 0 + + GitHub issue: [rabbitmq-server#464](https://github.com/rabbitmq/rabbitmq-server/issues/464) + + * Overriding `RABBITMQ_LOGS` and `RABBITMQ_SASL_LOGS` on Windows prevented node from starting. + + GitHub issue: [rabbitmq-server#375](https://github.com/rabbitmq/rabbitmq-server/issues/375) + + * Some startup code bits assumed IPv4 is enabled in the environment + + GitHub issue: [rabbitmq-server#117](https://github.com/rabbitmq/rabbitmq-server/issues/117) + + * More robust disk monitor, fewer errors logged. + + GitHub issue: [rabbitmq-server#91](https://github.com/rabbitmq/rabbitmq-server/issues/91) + + * `rabbitmqctl forget_cluster_node` no longer attempts to impersonate live + (reachable) nodes. + + GitHub issue: [rabbitmq-server#470](https://github.com/rabbitmq/rabbitmq-server/issues/470) + + * `rabbitmq-plugins` was using an incorrect env variable. + + GitHub issue: [rabbitmq-server#451](https://github.com/rabbitmq/rabbitmq-server/issues/451) + +#### Enhancements + + * RAM watermark can be configured as an absolute value in bytes (just like with disk space monitoring): + + ``` + [{rabbit, [{vm_memory_high_watermark, {absolute, 1073741824}}]}]. + ``` + + GitHub issue: [rabbitmq-server#207](https://github.com/rabbitmq/rabbitmq-server/issues/207) + + * `rabbitmqctl authenticate_user` is a new command that can be used to test user authentication. + + GitHub issue: [rabbitmq-server#119](https://github.com/rabbitmq/rabbitmq-server/issues/119) + + * `rabbitmqctl` now supports `exclusive` as a queue info item. + + Contributed by Alexey Lebedeff (@binarin). + + GitHub issue: [rabbitmq-server#371](https://github.com/rabbitmq/rabbitmq-server/issues/371) + + +### Java client + +#### Enhancements + + * Heartbeats are now enabled by default. + + GitHub issue: [rabbitmq-java-client#109](https://github.com/rabbitmq/rabbitmq-java-client/issues/109). + +#### Bug Fixes + + * `AutorecoveringChannel#basicCancel` could throw a `NullPointerException`. + + GitHub issue: [rabbitmq-java-client#105](https://github.com/rabbitmq/rabbitmq-java-client/issues/105) + + +### .NET client + +#### Enhancements + + * Heartbeats are now enabled by default. + + GitHub issue: [rabbitmq-dotnet-client#142](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/142). + + +#### Bug Fixes + + * `IConnection.Dispose` could throw an exception. + + GitHub issue: [rabbitmq-dotnet-client#133](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/133) + + +### MQTT plugin + +#### Bug Fixes + + * Auto-deletion of queues that back QoS 1 subscriptions is again controlled + by the clean session flag. + + GitHub issues: [rabbitmq-mqtt#30](https://github.com/rabbitmq/rabbitmq-mqtt/issues/30) (original report which introduced the issue), [rabbitmq-mqtt#37](https://github.com/rabbitmq/rabbitmq-mqtt/issues/37) (clarification and fix) + + + +### STOMP plugin + +#### Enhancements + + * Queue names now can be set explicitly using the `x-queue-name` header, for all + destination types. + + GitHub issue: [rabbitmq-stomp#43](https://github.com/rabbitmq/rabbitmq-stomp/issues/43) + + + +### Management plugin + +#### Bug Fixes + + * Management plugin could prevent a node from starting when it recovers after a network split. + + GitHub issue: [rabbitmq-management#81](https://github.com/rabbitmq/rabbitmq-management/issues/81) + + * Sorting arrow direction in the UI is now more conventional. + + Contributed by Philippe Serhal. + + GitHub issue: [rabbitmq-management#88](https://github.com/rabbitmq/rabbitmq-management/pull/88). + + * 401 responses correctly set content type to `application/json` + + GitHub issue: [rabbitmq-management#67](https://github.com/rabbitmq/rabbitmq-management/issues/67) + + * Consumer utilisation is correctly reported as a number instead of `""` when it equals 0. + + GitHub issue: [rabbitmq-management#26](https://github.com/rabbitmq/rabbitmq-management/issues/26) + + * `rabbitmqadmin` misinterpreted boolean settings in config as strings + + GitHub issue: [rabbitmq-management#20](https://github.com/rabbitmq/rabbitmq-management/issues/20) + + +### AMQP 1.0 plugin + +#### Bug Fixes + + * Fixed an edge case in serialisation of collections. + + GitHub issue: [rabbitmq-amqp1.0#21](https://github.com/rabbitmq/rabbitmq-amqp1.0/issues/21) + + +### Erlang client + +#### Enhancements + + * Heartbeats are now enabled by default. + + GitHub issue: [rabbitmq-erlang-client#25](https://github.com/rabbitmq/rabbitmq-erlang-client/issues/25). diff --git a/release-notes/3.5.8.md b/release-notes/3.5.8.md new file mode 100644 index 0000000000..c93803a0c8 --- /dev/null +++ b/release-notes/3.5.8.md @@ -0,0 +1,30 @@ +## RabbitMQ 3.5.8 + +RabbitMQ `3.5.8` fixes a security vulnerability ([CVE-2016-9877](https://pivotal.io/security/cve-2016-9877)) in the MQTT plugin. + +### Server + +#### Security + + * `rabbit_diagnostics:maybe_stuck/0` no longer prints process' dictionary + because it may contain PRNG seed values and other sensitive information. + +### MQTT Plugin + +#### Security + + * 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) + +## Upgrading + +To upgrade a non-clustered RabbitMQ simply install the new version. All configuration and persistent message data are retained. + +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.5.8.tar.gz`. diff --git a/release-notes/3.6.0.md b/release-notes/3.6.0.md new file mode 100644 index 0000000000..2783b3bee6 --- /dev/null +++ b/release-notes/3.6.0.md @@ -0,0 +1,462 @@ +## Release Highlights + +This is the release notes for RabbitMQ 3.6.0 RC3. This is a preview of +a feature release. + +Key improvements in this release are: + + * Lazy queues + * Much better queue synchronisation throughput + * Lower RAM use, tunable flow control + * Stronger password encryption with pluggable algorithms + * Development moved to GitHub; build system now uses erlang.mk + * Significant improvements to Web STOMP + * Experimental WinRT-compatible .NET client, SQL CLR compatibility in the "regular" one + * Pagination in management UI + + +### Server + +#### Bug Fixes + + * Cluster-wide alarm state is not updated when alarmed node goes down. + + Contributed by Alexey Lebedeff (@binarin). + + GitHub issue: [rabbitmq-server#362](https://github.com/rabbitmq/rabbitmq-server/issues/362) + + * Blocked connections could be unblocked too early. + + When multiple resource alarms were in effect, clearing just one of them would + unblock all publishers prematurely. + + Contributed by Alexey Lebedeff (@binarin). + + GitHub issue: [rabbitmq-server#379](https://github.com/rabbitmq/rabbitmq-server/issues/379) + + * Blocked connections that are closed by clients are now expired + and cleaned up by the heartbeat mechanism. + + Contributed by Alexey Lebedeff (@binarin). + + GitHub issue: [rabbitmq-server#384](https://github.com/rabbitmq/rabbitmq-server/issues/384) + + * If `RABBITMQ_MNESIA_DIR` was set to a value with a trailing slash, it could prevent + automatic clustering (and other operations that assume pristine node state) from starting. + + GitHub issue: [rabbitmq-server#118](https://github.com/rabbitmq/rabbitmq-server/issues/118) + + * Standard output and error redirection in package scripts not respects `RABBITMQ_LOG_BASE`. + + GitHub issue: [rabbitmq-server#88](https://github.com/rabbitmq/rabbitmq-server/issues/88) + + * Properly seed pseudo-random number generator when picking client port + + Contributed by Alexey Lebedeff (@binarin). + + GitHub issue: [rabbitmq-common#3](https://github.com/rabbitmq/rabbitmq-common/issues/3) + + * `RABBITMQ_ALLOW_INPUT` was ignored on Windows + + GitHub issue: [rabbitmq-server#490](https://github.com/rabbitmq/rabbitmq-server/issues/490) + + +#### Enhancements + + * Lazy queues. + + Lazy queues is a new feature that can significantly reduce RAM use of queues + that can grow very long (e.g. don't have consumers online for hours or day). + Such queues page messages to disk as they enter the queue. + + This feature is opt-in and has virtually no overhead for consumers in most cases, + making throughput for publishers much more even and reducing RAM use. + + GitHub issue: [rabbitmq-server#351](https://github.com/rabbitmq/rabbitmq-server/issues/351) + + * Queue synchronisation to mirrors now happens in batches of configurable size, + 4096 messages by default. This can improve sync throughput by an order of magnitude. + + GitHub issue: [rabbitmq-server#336](https://github.com/rabbitmq/rabbitmq-server/issues/336) + + * queue leader-to-node distribution is now more flexible: there are several + strategies to choose from. + + GitHub issue: [rabbitmq-server#121](https://github.com/rabbitmq/rabbitmq-server/issues/121) + + * Stronger password encryption algorithm. + + SHA-256 is the hashing function used by default now, with SHA-512 being an option provided + out of the box. Support for more options (Scrypt, bcrypt, etc) can be added with plugins. + + Existing user records will continue using MD5. To force re-hashing/encryption, change + user password using `rabbitmqctl` or management UI/HTTP API. + + This should improve FIPS-180 compatibility. + + GitHub issue: [rabbitmq-server#270](https://github.com/rabbitmq/rabbitmq-server/issues/270) + + * Lower RAM use thanks to disabled in-process caching. + + RabbitMQ's in-process read buffers are now disabled by default. This often significantly + reduces RAM usage at effectively no throughput or latency cost because the OS and file + system do the same job fairly well. + + GitHub issue: [rabbitmq-server#228](https://github.com/rabbitmq/rabbitmq-server/issues/228) + + * [Configurable flow control settings](https://blog.rabbitmq.com/posts/2015/10/new-credit-flow-settings-on-rabbitmq-3-5-5/) + + Note that larger values will not necessarily lead to higher throughput or lower latency. + They can also result in larger RAM use and therefore can be dangerous. + + GitHub issue: [rabbitmq-server#143](https://github.com/rabbitmq/rabbitmq-server/issues/143) + + * Build system switched to erlang.mk. + + [erlang.mk](https://github.com/ninenines/erlang.mk) is a modern build system for Erlang + projects. RabbitMQ and all of its sub-projects have been switched to it. + + This yields several benefits for RabbitMQ maintainers and plugin developers, + for example, dependency management for plugins is much more straightforward, build + times are significantly improved, there is no need to depend on `rabbitmq-server` for most + plugins. + + Various 3rd party plugins need to migrate to erlang.mk in order to be built against + RabbitMQ 3.6.0 (`rabbit_common`). + + GitHub issue: [rabbitmq-server#388](https://github.com/rabbitmq/rabbitmq-server/issues/388) + + * Streaming `rabbitmqctl`: `rabbitmqctl` list operations now stream results + instead of waiting for the entire result set to arrive. This both improves + responsiveness and makes it possible to list individual items, including those + which did not respond in time. + + GitHub issue: [rabbitmq-server#62](https://github.com/rabbitmq/rabbitmq-server/issues/62) + + * (More) standard exit codes for command line tools + + `rabbitmqctl` and `rabbitmq-plugins` now use more standard, or at least distinctive, + error codes for various failures. + + Contributed by Alexey Lebedeff (@binarin). + + GitHub issue: [rabbitmq-server#396](https://github.com/rabbitmq/rabbitmq-server/issues/396) + + * Improved log message for channel exceptions. + + GitHub issues: [rabbitmq-server#416](https://github.com/rabbitmq/rabbitmq-server/issues/416) + + * Improved log message when a client's TCP connection is closed unexpectedly. + + GitHub issue: [rabbitmq-server#60](https://github.com/rabbitmq/rabbitmq-server/issues/60) + + * Improved log message when a client connects to a non-existent vhost + + GitHub issue: [rabbitmq-server#320](https://github.com/rabbitmq/rabbitmq-server/issues/320) + + * Improved log message for `access_refused` connection errors. + + GitHub issue: [rabbitmq-server#418](https://github.com/rabbitmq/rabbitmq-server/issues/418) + + * Improved log message for `command_invalid` connection errors. + + GitHub issue: [rabbitmq-server#419](https://github.com/rabbitmq/rabbitmq-server/issues/419) + + * More sensible error code when a client connects to a non-existent vhost (or vhost it has + no permissions for). The code returned is now `530`. + + GitHub issue: [rabbitmq-server#237](https://github.com/rabbitmq/rabbitmq-server/issues/237) + + * Memory monitoring interval is now configurable. + + GitHub issue: [rabbitmq-server#112](https://github.com/rabbitmq/rabbitmq-server/issues/112) + + * Prevent background GC interval from becoming too large due to backoff. + + Contributed by Dallas Marlow (@dallasmarlow). + + GitHub issue: [rabbitmq-server#100](https://github.com/rabbitmq/rabbitmq-server/issues/100) + + * Windows installer now supports "unattended" NSIS installs. + + Contributed by Ryan Zink (@ryanzink). + + GitHub issue: [rabbitmq-server#264](https://github.com/rabbitmq/rabbitmq-server/issues/264) + + * Windows package name now includes RabbitMQ version it provides. + + GitHub issue: [rabbitmq-server#80](https://github.com/rabbitmq/rabbitmq-server/issues/80) + + * `kernel.net_ticktime` is now included into `rabbitmqctl status` output. + + GitHub issue: [rabbitmq-server#63](https://github.com/rabbitmq/rabbitmq-server/issues/63) + + * `rabbitmqctl` now has a command for setting up free disk space limit at runtime. + + GitHub issue: [rabbitmq-server#461](https://github.com/rabbitmq/rabbitmq-server/issues/461) + + * Backup directory location is now mentioned in failed upgrade messages. + + GitHub issue: [rabbitmq-server#169](https://github.com/rabbitmq/rabbitmq-server/issues/169) + + * `rabbit_diagnostics:maybe_stuck/0` now includes date and time in its output. + + GitHub issue: [rabbitmq-server#506](https://github.com/rabbitmq/rabbitmq-server/issues/506) + +#### Other + + * Erlang R16B03 is now required. + + 17.5 or 18.x are recommended. + + GitHub issue: [rabbitmq-server#250](https://github.com/rabbitmq/rabbitmq-server/issues/250) + + * Use/support new Erlang/OTP 18 date and time API. + + Only when it is available, of course. + + GitHub issue: [rabbitmq-server#233](https://github.com/rabbitmq/rabbitmq-server/issues/233) + + * RabbitMQ server now supports tracing of credit flow events (e.g. when a process is blocked + by credit flow). This is currently a compile-time flag aimed to be used in development + environments. + + GitHub issue: [rabbitmq-server#137](https://github.com/rabbitmq/rabbitmq-server/issues/137) + + +### Java Client + +#### Enhancements + + * Shutdown threads can use an executor. + + In environments with very constrainted per-process thread reasources, e.g. basic PaaS plans, + temporary threads created during connection shutdown may make the app run over the limit. + + It is now possible to use a user-provided executor for shutdown operations instead. + + GitHub issue: [rabbitmq-java-client#87](https://github.com/rabbitmq/rabbitmq-java-client/issues/87) + + * ChannelManager now can use an executor. + + Similar to the above but for `ChannelManager` operations. + + GitHub issue: [rabbitmq-java-client#94](https://github.com/rabbitmq/rabbitmq-java-client/issues/94) + + * `Channel#consumerCount(string)` is a new convenience method for retrieving number of consumers on a queue. + + GitHub issue: [rabbitmq-java-client#49](https://github.com/rabbitmq/rabbitmq-java-client/issues/49) + + * `Channel#messageCount(string)` is a new convenience method for retrieving number of messages in a queue. + + GitHub issue: [rabbitmq-java-client#41](https://github.com/rabbitmq/rabbitmq-java-client/issues/41) + + * `LongString#toString` is part of the API + + GitHub issue: [rabbitmq-java-client#84](https://github.com/rabbitmq/rabbitmq-java-client/issues/84) + + +### .NET Client + +#### Enhancements + + * Host/address list support is back. Host selection strategy (when recovering a connection) is now pluggable. + + GitHub issue: [rabbitmq-dotnet-client#81](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/81) + + * Experimental .NET client with Windows RT support is now available. + + GitHub issue: [rabbitmq-dotnet-client#16](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/16) + + * SQL CLR compatibility. + + GitHub issue: [rabbitmq-dotnet-client#57](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/57) + + * `IModel#ConsumerCount(string)` is a new convenience method for retrieving number of consumers on a queue. + + GitHub issue: [rabbitmq-dotnet-client#73](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/73) + + * `IModel#MessageCount(string)` is a new convenience method for retrieving number of messages in a queue. + + GitHub issue: [rabbitmq-dotnet-client#74](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/74) + + * Continuation timeout is now configurable. + + GitHub issue: [rabbitmq-dotnet-client#80](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/80) + + * `RabbitMQ.Client.Headers` is a new class that contains constants for commonly used headers. + + Contributed by Yury Pliner (@Pliner). + + GitHub issue: [](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/52) + +#### Other + + * .NET 4.5 is now required by the library. + + GitHub issue: [rabbitmq-dotnet-client#134](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/134) + + * Code examples are removed from the .NET client repository. All examples belong + to `rabbitmq-tutorials` now. + + GitHub issue: [rabbitmq-dotnet-client#39](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/39) + + + +### Management plugin + +#### Enhancements + + * Pagination for connections, channels, exchanges, and queues. + + Management UI now supports pagination, making the UI much more responsive + in environments with many connections, queues, etc. + + GitHub issue: [rabbitmq-management#50](https://github.com/rabbitmq/rabbitmq-management/issues/50) + + * Queue information objects in responses now has a boolean property for queue + exclusivity instead of a confusing `owner_pid`. + + GitHub issue: [rabbitmq-management#40](https://github.com/rabbitmq/rabbitmq-management/issues/40) + +#### Bug Fixes + + * Connection and channel filtering should respect active vhost. + + GitHub issue: [rabbitmq-management#34](https://github.com/rabbitmq/rabbitmq-management/issues/34) + + * GET requests to `/api/queues/{vhost}/{name}/get` now accept/provide `application/json` + + GitHub issue: [rabbitmq-management#46](https://github.com/rabbitmq/rabbitmq-management/issues/46) + + +### MQTT plugin + +#### Enhancements + + * Pluggable retained message stores. Since MQTT 3.1.1 spec doesn't dictate any consistency + or availability from the store in clustered environments, we only provide an in-memory implementation + suitable for development environments with a single node. For production environments, plugins that + provide stores with specific consistency guarantees are expected to be developed. + + GitHub issue: [rabbitmq-mqtt#16](https://github.com/rabbitmq/rabbitmq-mqtt/issues/16) + + * Default subscription (queue) TTL for non-clean sessions is now 24 hours + + GitHub issue: [rabbitmq-mqtt#49](https://github.com/rabbitmq/rabbitmq-mqtt/issues/49) + + * Socket-based authentication plugins now can work with plugins such as MQTT and STOMP + (those using direct Erlang client). + + Contributed by Petr Gotthard (@gotthardp). + + GitHub issue: [rabbitmq-server#111](https://github.com/rabbitmq/rabbitmq-server/issues/111) + + +### STOMP plugin + +#### Enhancement + + * Control over queue properties. + + It is now possible to control queue properties (durable, auto-delete, exclusive plus several + supported x-arguments) for all STOMP destinations. + + When using durable topics, it is now necessary to configure queue auto-deletion to `false` + explicitly via a header. + + GitHub issue: [rabbitmq-stomp#24](https://github.com/rabbitmq/rabbitmq-stomp/issues/24) + + * Socket-based authentication plugins now can work with plugins such as MQTT and STOMP + (those using direct Erlang client). + + Contributed by Petr Gotthard (@gotthardp). + + GitHub issue: [rabbitmq-server#111](https://github.com/rabbitmq/rabbitmq-server/issues/111) + + +### Web STOMP plugin + +#### Enhancements + + * Raw WebSocket endpoint. + + The plugin now supports a new endpoint, `/ws`, which supports WebSocket connections directly + without the need to use SockJS. + + GitHub issue: [rabbitmq-web-stomp#17](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/17). + + * Support for binary data streams. + + Thanks to the new direct WebSocket support, binary data now can be transferred over + Web STOMP connections. + + GitHub issue: [rabbitmq-web-stomp#19](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/19) + + * STOMP heartbeat support. + + GitHub issue: [rabbitmq-web-stomp#15](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/15) + + * Heartbeats are disabled for SockJS. + + GitHub issue: [rabbitmq-web-stomp#28](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/28) + + * CORS headers support + + GitHub issue: [rabbitmq-web-stomp#12](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/12) + + * Cowboy configuration. + + Key settings of Cowboy, the HTTP/WebSocket server powering the plugin, now can be fine tuned + via this plugin. + + GitHub issue: [rabbitmq-web-stomp#22](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/22) + + * Cowboy is upgraded to `1.0.3` + + GitHub issue: [rabbitmq-web-stomp#13](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/13) + + * SockJS is upgraded to `1.0.3`. + + GitHub issue: [rabbitmq-web-stomp#4](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/4) + + * Queue parameters now can be configured via headers (just like in the regular STOMP plugin). + + GitHub issue: [rabbitmq-web-stomp#7](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/7) + + * Address Web STOMP listener binds to now can be configured. + Previously only port was configurable. + + GitHub issue: [rabbitmq-web-stomp#2](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/2) + + +### LDAP plugin + +#### Enhancements + + * LDAP server connections are now pooled. This significantly reduces + the load on LDAP servers. + + Contributed by [LShift](http://www.lshift.net). + + GitHub issue: [rabbitmq-auth-backend-ldap#1](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/1). + + + +### Sharding plugin + +#### Enhancements + + * Routing key policy is now optional. + + GitHub issue: [rabbitmq-sharding#6](https://github.com/rabbitmq/rabbitmq-sharding/issues/6) + + + +### Delayed Message Exchange + +#### Enhancement + + * Initial public release. + + GitHub issue: [rabbitmq-delayed-message-exchange#1](https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/issues/1) diff --git a/release-notes/3.6.1.md b/release-notes/3.6.1.md new file mode 100644 index 0000000000..6316dd1a1a --- /dev/null +++ b/release-notes/3.6.1.md @@ -0,0 +1,280 @@ +## RabbitMQ 3.6.1 + +RabbitMQ `3.6.1` is a maintenance release that includes a fix for CVE-2015-8786, +a vulnerability in RabbitMQ management plugin. + +### Server + +#### Bug Fixes + + * Purging a lazy queue could result in an exception + + GitHub issue: [rabbitmq-server#514](https://github.com/rabbitmq/rabbitmq-server/issues/514) + + * Ensure `epmd` is running before starting RabbitMQ node on Windows + + GitHub issue: [rabbitmq-server#625](https://github.com/rabbitmq/rabbitmq-server/issues/625) + + * Channel error could make broker unreachable + + Those errors were misleadingly logged as `channel_termination_timeout`, which + the issue really was with unhandled messages from concurrently closed TCP socket process. + + GitHub issue: [rabbitmq-server#530](https://github.com/rabbitmq/rabbitmq-server/issues/530) + + * (Automatic) deletion of an auto-delete queue could lead + to blocked channels + + GitHub issue: [rabbitmq-server#581](https://github.com/rabbitmq/rabbitmq-server/issues/581) + + * During (from scratch) queue sync, queue leader node didn't respect mirror alarm state. + With large data sets this could drive mirror node out of memory. + + GitHub issue: [rabbitmq-server#616](https://github.com/rabbitmq/rabbitmq-server/issues/616) + + * Changing password for users with non-standard (think broker configuration) password + hashing function, for example, those migrated from `3.5.x` releases, didn't update + effective hashing function. + + GitHub issue: [rabbitmq-server#623](https://github.com/rabbitmq/rabbitmq-server/issues/623) + + * Heavy and/or prolonged `rabbitmqctl` use could exhaust Erlang VM atom table + + GitHub issue: [rabbitmq-server#549](https://github.com/rabbitmq/rabbitmq-server/issues/549) + + * "Min masters" queue leader location strategy could result + in an error. + + GitHub issue: [rabbitmq-server#521](https://github.com/rabbitmq/rabbitmq-server/issues/521) + + * Fixed a race condition in `pause_minority` handling mode. + + GitHub issue: [rabbitmq-server#307](https://github.com/rabbitmq/rabbitmq-server/issues/307) + + * Significantly reduce possibility of a race condition when + an exchange is deleted and immediately re-declared, e.g. by a federation + link. + + This could result in a link operation being blocked, preventing + nodes from stopping. + + GitHub issue: [rabbitmq-federation#7](https://github.com/rabbitmq/rabbitmq-federation/issues/7) + + * `amq.rabbitmq.log` messages now have information about originating + node in message headers + + GitHub issue: [rabbitmq-server#595](https://github.com/rabbitmq/rabbitmq-server/issues/595) + + * `scripts/rabbitmq-env` now works with GNU sed 4.2.2 + + GitHub issue: [rabbitmq-server#592](https://github.com/rabbitmq/rabbitmq-server/issues/592) + + * Exceptions in VM memory use calculator no longer affect broker startup + + GitHub issue: [rabbitmq-server#328](https://github.com/rabbitmq/rabbitmq-server/issues/328) + + * [Direct Reply-to](https://www.rabbitmq.com/direct-reply-to.html) capability is now advertised to clients + + GitHub issue: [rabbitmq-server#520](https://github.com/rabbitmq/rabbitmq-server/issues/520) + +#### Enhancements + + * Paths with non-ASCII characters on Windows are now handled + + RabbitMQ now can be installed into a location with non-ASCII characters, + e.g. when username contains them. + + GitHub issues: [rabbitmq-server#493](https://github.com/rabbitmq/rabbitmq-server/issues/493) + + * Configurable number of TCP connection acceptors + + Plus a x10 increase of the default. This helps with workloads where connection + churn is very high (e.g. all clients are PHP Web apps that cannot maintain + long-lived connections). + + GitHub issues: [rabbitmq-server#528](https://github.com/rabbitmq/rabbitmq-server/issues/528) + + * `rabbitmqctl cluster_status` now includes cluster-wide resource alarm status + + GitHub issue: [rabbitmq-server#392](https://github.com/rabbitmq/rabbitmq-server/issues/392) + + * Windows installer no longer jumps over installation log + + GitHub issue: [rabbitmq-server#634](https://github.com/rabbitmq/rabbitmq-server/issues/634) + + * Improved `rabbitmqctl reset` error messages + + GitHub issue: [rabbitmq-server#167](https://github.com/rabbitmq/rabbitmq-server/issues/167) + + * More unsigned field data types are supported. + + GitHub issue: [rabbitmq-server#20](https://github.com/rabbitmq/rabbitmq-server/issues/20) + + + +### Java client + +#### Enhancements + + * Endpoints (hostnames) are now also accepted as a `java.util.List` + + GitHub issue: [rabbitmq-java-client#125](https://github.com/rabbitmq/rabbitmq-java-client/issues/125) + + * Autorecovering connections now shuffle hosts in a more + reliable way + + GitHub issue: [rabbitmq-java-client#124](https://github.com/rabbitmq/rabbitmq-java-client/issues/124) + +#### Bug Fixes + + * Binding recovery could fail + + GitHub issue: [rabbitmq-java-client#129](https://github.com/rabbitmq/rabbitmq-java-client/issues/129) + + * `Channel.queueDelete` could throw a `NullPointerException` + + GitHub issue: [rabbitmq-java-client#120](https://github.com/rabbitmq/rabbitmq-java-client/issues/120) + + + +### .NET client + +#### Bug Fixes + + * Autorecovering connections now use full list of provided hostnames + during recovery + + GitHub issues: [rabbitmq-dotnet-client#153](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/153) + + + +### Federation Plugin + +#### Bug Fixes + + * Significantly reduce possibility of a race condition when + an exchange is deleted and immediately re-declared, e.g. by a federation + link + + This rendered federation links dysfunctional. + + GitHub issue: [rabbitmq-federation#7](https://github.com/rabbitmq/rabbitmq-federation/issues/7) + + + +### Management plugin + +#### Vulnerability Fixes + + * CVE-2015-8786: user-provided query parameters `lengths_age` and `lengths_incr` had no validation + and could be used to exhaust server resources. + + The attacker needs to have access to HTTP API (authenticate successfully and have sufficient + tags to pass authorisation) in order to carry out the attack. + + There is no workaround for earlier releases. + + Kudos to Vladimir Ivanov (Positive Technologies) for the responsible disclosure. + + GitHub issue: [rabbitmq-management#97](https://github.com/rabbitmq/rabbitmq-management/issues/97) + + +#### Enhancements + + * Password hashing function is now included in exported definitions + + Those upgrading from versions earlier than `3.6.0` via definitions export + won't have to temporarily set hashing function to MD5 to ensure export succeeds. + + GitHub issue: [rabbitmq-management#117](https://github.com/rabbitmq/rabbitmq-management/issues/117) + +#### Bug Fixes + + * Internet Explorer (9+) compatibility restored + + GitHub issue: [rabbitmq-management#98](https://github.com/rabbitmq/rabbitmq-management/issues/98) + + * Internet Explorer 11 compatibility fixes + + GitHub issues: [rabbitmq-management#112](https://github.com/rabbitmq/rabbitmq-management/issues/112), + [rabbitmq-management#114](https://github.com/rabbitmq/rabbitmq-management/issues/114) + + * When policy fails to be created with invalid paramaters a sensible + error message will be displayed. + + GitHub issue: [rabbitmq-management#110](https://github.com/rabbitmq/rabbitmq-management/issues/110) + + +### Federation Management plugin + +#### Enhancements + + * Federation link form now includes more settings (that are exchange- and queue-federation specific) + + GitHub issue: [rabbitmq-federation-management#5](https://github.com/rabbitmq/rabbitmq-federation-management/issues/5) + + +### Erlang client + +#### Bug Fixes + + * `password` and `depth` query parameters are now propagated to TLS options + + GitHub issue: [rabbitmq-erlang-client#36](https://github.com/rabbitmq/rabbitmq-erlang-client/issues/36) + + +### STOMP plugin + +#### Bug Fixes + + * `durable` and `persistent` headers weren't always used interchangeably, + leading to non-durable subscriptions + + GitHub issue: [rabbitmq-stomp#58](https://github.com/rabbitmq/rabbitmq-stomp/issues/58) + + * Client heartbeat timeouts resulted in confusing error messages + in broker log. + + GitHub issues: [rabbitmq-stomp#63](https://github.com/rabbitmq/rabbitmq-stomp/issues/63) + + +### Web STOMP plugin + +#### Bug Fixes + + * Cowboy options are now supported for TLS listeners. + + GitHub issue: [rabbitmq-web-stomp#36](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/36) + + +### Web STOMP Examples plugin + +#### Bug Fixes + + * Multi-byte UTF-8 characters are now handled + by the bundled version of stomp.js. + + GitHub issue: [rabbitmq-web-stomp-examples#2](https://github.com/rabbitmq/rabbitmq-web-stomp-examples/issues/2) + + +### Event Exchange plugin + +#### Bug Fixes + + * Event timestamps are now in seconds, not milliseconds + + Per AMQP 0-9-1 spec. This is not a particularly great choice for events, + so we will add an optional header with millisecond precision in a future release. + + GitHub issue: [rabbitmq-event-exchange#8](https://github.com/rabbitmq/rabbitmq-event-exchange/issues/8) + + +### JSON RPC plugin + +Note: this plugin is deprecated and its use is highly discouraged. + +#### Enhancements + + * RabbitmQ `3.6.x` support. + + GitHub issue: [rabbitmq-jsonrpc#3](https://github.com/rabbitmq/rabbitmq-jsonrpc/issues/3) diff --git a/release-notes/3.6.10.md b/release-notes/3.6.10.md new file mode 100644 index 0000000000..67f8d0339d --- /dev/null +++ b/release-notes/3.6.10.md @@ -0,0 +1,183 @@ +## RabbitMQ 3.6.10 + +RabbitMQ `3.6.10` is a maintenance release. + +### Upgrades and Compatibility + +See the ["Upgrading clusters" section of the documentation](https://www.rabbitmq.com/clustering.html#upgrading) +for general documentation on upgrades. + +:warning: This release introduces stricter validation for `rabbitmq_management_agent.sample_retention_policies` values. +In case your installation overrides default sample retention policies, please make sure to read +the discussion in [rabbitmq-management-agent#41](https://github.com/rabbitmq/rabbitmq-management-agent/issues/41) before +upgrading to make sure your configuration passes validation. + +This release has no other known incompatibilities with versions 3.6.7 through 3.6.9. See [3.6.7 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/rabbitmq_v3_6_7) +upgrade and compatibility notes if upgrading from an earlier release. + + +### Core Server + +#### Bug Fixes + + * `rabbitmqctl wait` exited with the status code of 0 when node stopped because it could + not contact any cluster peers to [re-]join. + + GitHub issue: [rabbitmq-server#1214](https://github.com/rabbitmq/rabbitmq-server/issues/1214) + + * `rabbitmqctl forget_cluster_node` used in offline mode could result in promotion of a node that's no longer a cluster member. + + GitHub issue: [rabbitmq-server#1213](https://github.com/rabbitmq/rabbitmq-server/issues/1213) + + * Queue status (e.g. `running` vs. `idle`) was reported incorrectly in some cases. + + GitHub issue: [rabbitmq-common#196](https://github.com/rabbitmq/rabbitmq-common/issues/196) + + * queue leader locator could not be set using optional queue arguments (`x-arguments`). + + GitHub issue: [rabbitmq-server#1172](https://github.com/rabbitmq/rabbitmq-server/issues/1172) + + * CLI tool (e.g. `rabbitmqctl`) man pages were not rendered correctly. + + GitHub issue: [rabbitmq-server#1180](https://github.com/rabbitmq/rabbitmq-server/issues/1180) + +#### Enhancements + + * Disk space monitor will periodically retry (every 2 minutes by default, up to 10 times) + before going into disabled state as external tools used to monitor available disk space + can fail or produce unexpected output temporarily. + + GitHub issue: [rabbitmq-server#1178](https://github.com/rabbitmq/rabbitmq-server/issues/1178) + + * Memory relative free disk space limits now support integer values as well as floats. + + GitHub issue: [rabbitmq-server#1194](https://github.com/rabbitmq/rabbitmq-server/issues/1194) + + +### Management and Management Agent Plugins + +#### Bug Fixes + + * TLS-related settings in HTTP API listeners could break JSON serialisation for the `GET /api/overview` endpoint. + + GitHub issue: [rabbitmq-management#393](https://github.com/rabbitmq/rabbitmq-management/issues/393) + + * Non-numerical values for numerical stats are now handled safety by stats aggregation. For example, if + free disk space monitor had to stop reporting data because it could not parse external tool output + that would break HTTP API `GET /api/overview` responses. + + GitHub issue: [rabbitmq-management#375](https://github.com/rabbitmq/rabbitmq-management/issues/375). + + * Stats are no longer emitted for connections that are not considered to be in the fully initialised + state. + + GitHub issue: [rabbitmq-management-agent#42](https://github.com/rabbitmq/rabbitmq-management-agent/issues/42) + + * `POST` requests now instruct clients to close TCP connections. + + In some popular browsers (Chrome, Internet Explorer) a `POST` request followed by an immediate `GET` request + would result in a 400 response. Other browsers do no exhibit this behaviour. + + GitHub issue: [rabbitmq-management#377](https://github.com/rabbitmq/rabbitmq-management/issues/377) + + * I/O average time per operation graph didn't match the legend. + + GitHub issue: [rabbitmq-management#384](https://github.com/rabbitmq/rabbitmq-management/issues/384) + + * Definitions import and export forms are now separte to reduce the chance of user confusion. + + GitHub issue: [rabbitmq-management#389](https://github.com/rabbitmq/rabbitmq-management/issues/389) + + * Sample retention policies are now validated more strictly to avoid configurations that + are not supported and will lead to exceptions. + + GitHub issue: [rabbitmq-management-agent#41](https://github.com/rabbitmq/rabbitmq-management-agent/issues/41) + + * Certain stats for connections were not initialised as numerical values, which resulted in log noise. + + GitHub issue: [rabbitmq-management-agent#45](https://github.com/rabbitmq/rabbitmq-management-agent/issues/45) + + * UI operation for binding deletion did not respect optional (extra) binding arguments. + + GitHub issue: [rabbitmq-management#243](https://github.com/rabbitmq/rabbitmq-management/issues/243) + +#### Enhancements + + * Current virtual host is pre-selected on the "Add/update policy" form. + + GitHub issue: [rabbitmq-management#382](https://github.com/rabbitmq/rabbitmq-management/issues/382) + + +### MQTT Plugin + +#### Bug Fixes + + * A non-initialized connection (e.g. one that failed early because client-provided + payload wasn't a valid MQTT payload) produced a crash report log entry during termination. + + GitHub issue: [rabbitmq-mqtt#134](https://github.com/rabbitmq/rabbitmq-mqtt/issues/134) + + +### LDAP Plugin + +#### Bug Fixes + + * Stale connection purging in LDAP connection pool could fail + with a `badmatch`. + + GitHub issue: [rabbitmq-auth-backend-ldap#66](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/66) + + +### Trust Store Plugin + +#### Enhancements + + * Certificate change detection algorithm no longer uses `stat(2)` on certificate directory because + of its limitations that could lead to undetected changes in certain scenarios. + + GitHub issue: [rabbitmq-trust-store#58](https://github.com/rabbitmq/rabbitmq-trust-store/issues/58) + + +### Web STOMP Plugin + +#### Bug Fixes + + * The plugin failed to start after being stopped and re-enabled. + + GitHub issue: [rabbitmq-web-stomp#72](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/72) + + * Server-initiated [consumer cancellation](https://www.rabbitmq.com/consumer-cancel.html) failed with + an exception. + + GitHub issue: [rabbitmq-web-stomp#75](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/75) + + +### Top Plugin + +#### Bug Fixes + + * Node selection control used the wrong HTTP API path. + + GitHub issue: [rabbitmq-top#15](https://github.com/rabbitmq/rabbitmq-top/issues/15) + + +### Management Visualiser Plugin + +#### Bug Fixes + + * The plugin wasn't compatible with recent `3.6.x` releases. + + GitHub issue: [rabbitmq-management-visualiser#8](https://github.com/rabbitmq/rabbitmq-management-visualiser/issues/8) + + + +## 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.10.tar.gz`. diff --git a/release-notes/3.6.11.md b/release-notes/3.6.11.md new file mode 100644 index 0000000000..27562355a1 --- /dev/null +++ b/release-notes/3.6.11.md @@ -0,0 +1,236 @@ +## RabbitMQ 3.6.11 + +RabbitMQ `3.6.11` is a maintenance release. + +### Upgrades and Compatibility + +See the ["Upgrading clusters" section of the documentation](https://www.rabbitmq.com/clustering.html#upgrading) +for general documentation on upgrades. + +⚠️ This release [changes how nodes compute the amount of RAM they use](https://groups.google.com/forum/#!topic/rabbitmq-users/TVZt45O3WzU) (and report). Previously the value was underreported. +We recommend monitoring — or at least manually sampling — the [RSS of +the Erlang VM](http://www.linfo.org/ps.html) running RabbitMQ, comparing it to the value reported in the management UI +to compute the delta. Then adjust configured [VM high memory watermark](https://www.rabbitmq.com/alarms.html) an +possibly provisioning more RAM as needed. + +This release has no other known incompatibilities with versions 3.6.7 through 3.6.10. +See the upgrade and compatibility sections in the [3.6.7 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/rabbitmq_v3_6_7) if upgrading from an earlier release. + +⚠️ This is the first release that [supports Erlang/OTP 20](https://groups.google.com/forum/#!searchin/rabbitmq-users/OTP$2020%7Csort:relevance/rabbitmq-users/_imbAavBYjY/ninEKhMYAgAJ). + + +### Core Server + +#### Bug Fixes + + * Node RAM consumption calculation strategy [has changed](https://groups.google.com/forum/#!topic/rabbitmq-users/TVZt45O3WzU) + to a more precise one. Previously the value **was underreported**. It is possible to switch to the behavior in earlier versions + if desired. This will **affect monitoring charts** and possibly **require bumping VM memory high watermark** + or provisioning more RAM. + + GitHub issue: [rabbitmq-server#1223](https://github.com/rabbitmq/rabbitmq-server/issues/1223), [rabbitmq-server#1270](https://github.com/rabbitmq/rabbitmq-server/pull/1270) + + + * Erlang/OTP 20 is [now supported](https://groups.google.com/forum/#!searchin/rabbitmq-users/OTP$2020%7Csort:relevance/rabbitmq-users/_imbAavBYjY/ninEKhMYAgAJ). + + GitHub issues: [rabbitmq-server#1243](https://github.com/rabbitmq/rabbitmq-server/issues/1243), [rabbitmq-server#1246](https://github.com/rabbitmq/rabbitmq-server/pull/1246), [rabbitmq-federation#58](https://github.com/rabbitmq/rabbitmq-federation/pull/58), [rabbitmq-management-agent#47](https://github.com/rabbitmq/rabbitmq-management-agent/pull/47), [rabbitmq-management#415](https://github.com/rabbitmq/rabbitmq-management/pull/415), [rabbitmq-stomp#115](https://github.com/rabbitmq/rabbitmq-stomp/issues/115) + + * `supervisor2`: supervisor could fail to restart failed child processes in some cases. + This could affect multiple plugins, e.g. federation. + + Contributed by Aliaksey Artamonau (Couchbase). + + GitHub issues: [rabbitmq-common#201](https://github.com/rabbitmq/rabbitmq-common/pull/201), + [rabbitmq-server#1238](https://github.com/rabbitmq/rabbitmq-server/pull/1238) + + * Memory used by binary heap ("binaries") was reduced for some scenarios that involve mirrored queues. + + GitHub issue: [rabbitmq-common#208](https://github.com/rabbitmq/rabbitmq-common/issues/208) + + * Exclusive queues were not cleaned up when node failed or was considered unavailable by one of its + peers. + + GitHub issue: [rabbitmq-server#1323](https://github.com/rabbitmq/rabbitmq-server/issues/1323) + + * `rabbitmq-service.bat start` and `rabbitmq-service.bat stop` did not report access violation + errors. + + GitHub issue: [rabbitmq-server#1324](https://github.com/rabbitmq/rabbitmq-server/issues/1324) + + * When high VM memory watermarked is set to a value greater than 1.0, + `1.0` will be used as effective value now instead of the default (`0.4`). + + GitHub issue: [rabbitmq-server#1285](https://github.com/rabbitmq/rabbitmq-server/issues/1285) + +#### Enhancements + + * Total amount of RAM as seen by a node now can be overridden via config file. + + GitHub issue: [rabbitmq-server#1224](https://github.com/rabbitmq/rabbitmq-server/issues/1224) + + * Default value of `RABBITMQ_DISTRIBUTION_BUFFER_SIZE` is now `128000`. This makes inter-node communication + throughput more stable on 1 GBbit/s (or greater) network links. + + GitHub issue: [rabbitmq-server#1306](https://github.com/rabbitmq/rabbitmq-server/issues/1306) + + * Plugins that are already expanded (unarhived from `.ez` archives on node boot) won't be + expanded again. + + Contributed by Alex Lebedeff (Mirantis). + + GitHub issue: [rabbitmq-server#1226](https://github.com/rabbitmq/rabbitmq-server/pull/1226) + + +### Management plugin + +#### Enhancements + + * Listing queues, exchanges, vhosts via HTTP API is now more efficient for common cases + (e.g. when pagination is not used or only a subset of fields is requested). + + GitHub issue: [rabbitmq-management#402](https://github.com/rabbitmq/rabbitmq-management/issues/402) + + * Inter-node cluster link traffic information was missing. + + GitHub issue: [rabbitmq-management#434](https://github.com/rabbitmq/rabbitmq-management/issues/434) + + * Exclusive queues didn't have feature markers in the UI. + + GitHub issue: [rabbitmq-management#459](https://github.com/rabbitmq/rabbitmq-management/issues/459) + + * queue leader locator now has a feature marker in the UI. + + GitHub issue: [rabbitmq-management#468](https://github.com/rabbitmq/rabbitmq-management/pull/468) + + * It is now possible to pre-configure user permission at the time of its creation. + + GitHub issue: [rabbitmq-management#441](https://github.com/rabbitmq/rabbitmq-management/issues/441) + + * `rabbitmqadmin` now supports `--ssl-insecure` (`-k`), serving the same purpose as `-k` in curl + + GitHub issue: [rabbitmq-management#452](https://github.com/rabbitmq/rabbitmq-management/issues/452) + + * `rabbitmqadmin` now supports setting HTTP API endpoint hostname, port, username, and password + using a URI. + + GitHub issue: [rabbitmq-management#437](https://github.com/rabbitmq/rabbitmq-management/issues/437) + + * HTTP API requests now are less likely to produce log noise. + + GitHub issue: [rabbitmq-web-dispatch#27](https://github.com/rabbitmq/rabbitmq-web-dispatch/issues/27) + +#### Bug Fixes + + * queue leader migration no longer leaves statistics database records behind. + + GitHub issue: [rabbitmq-management#427](https://github.com/rabbitmq/rabbitmq-management/issues/427) + + * Consumer argument serialisation to JSON was fixed. + + GitHub issue: [rabbitmq-management#424](https://github.com/rabbitmq/rabbitmq-management/issues/424) + + * It is now again possible to create a user without a password (or password hash). + Such users won't be able to sign in with [internal authentication backend](https://www.rabbitmq.com/access-control.html) + but can be used with external authentication mechanisms (x509 certificates) and backends + (LDAP, HTTP, etc). + + GitHib issue: [rabbitmq-management#383](https://github.com/rabbitmq/rabbitmq-management/issues/383) + + * Pagination combined with a user-provided set of columns returned no results. + + GitHub issue: [rabbitmq-management#404](https://github.com/rabbitmq/rabbitmq-management/issues/404) + + * Regular expressions used for filtering were not correctly escaped. + + GitHub issue: [rabbitmq-management#419](https://github.com/rabbitmq/rabbitmq-management/issues/419) + + * `rabbitmqadmin` now handles float rates. + + GitHub issue: [rabbitmq-management#457](https://github.com/rabbitmq/rabbitmq-management/issues/457) + + * `rabbitmqadmin` now ignores `SIGPIPE` signals and much less likely to terminate when its output is piped to + another process. + + GitHub issue: [rabbitmq-management#438](https://github.com/rabbitmq/rabbitmq-management/issues/438) + + * HTTP requests with unintialised fields are less likely to crash log event handler. + + GitHub issue: [rabbitmq-web-dispatch#27](https://github.com/rabbitmq/rabbitmq-web-dispatch/issues/27) + + +### Federation Plugin + +#### Bug Fixes + + * Federation links now recover better in certain scenarios, e.g. when one side of a link could be reset. + + GitHub issue: [rabbitmq-federation#59](https://github.com/rabbitmq/rabbitmq-federation/issues/59) + + +### STOMP Plugin + +#### Bug Fixes + + * Erlang/OTP 20 is [now supported](https://groups.google.com/forum/#!searchin/rabbitmq-users/OTP$2020%7Csort:relevance/rabbitmq-users/_imbAavBYjY/ninEKhMYAgAJ). + + GitHub issue: [rabbitmq-stomp#115](https://github.com/rabbitmq/rabbitmq-stomp/issues/115) + + +### MQTT Plugin + +#### Enhancements + + * No-op MQTT message retainer. + + GitHub issue: [rabbitmq-mqtt#136](https://github.com/rabbitmq/rabbitmq-mqtt/issues/136) + +#### Bug Fixes + + * MQTT connection processes now use connection log level. + + GitHub issue: [rabbitmq-mqtt#142](https://github.com/rabbitmq/rabbitmq-mqtt/issues/142) + + +### Consistent Hashing Exchange + +#### Bug Fixes + + * Bucket distribution is now consistent (doesn't change) between plugin and node restarts + (assuming bindings haven't changed). + + GitHub issue: [rabbitmq-consistent-hash-exchange#32](https://github.com/rabbitmq/rabbitmq-consistent-hash-exchange/issues/32) + + +### Top Plugin + +#### Bug Fixes + + * `rabbitmq-top` now gracefully covers scenarios when it is enabled only on a subset of cluster nodes. + + GitHub issue: [rabbitmq-top#23](https://github.com/rabbitmq/rabbitmq-top/issues/23) + + * Node drop down on ETS table tab redirected to the processes tab. + + GitHub issue: [rabbitmq-top#24](https://github.com/rabbitmq/rabbitmq-top/issues/24) + + +### Message Timestamp Plugin + +#### Enhancements + + * Timestamp in milliseconds is also injected as a header (unless the header is present). + + GitHub issue: [rabbitmq-message-timestamp#16](https://github.com/rabbitmq/rabbitmq-message-timestamp/issues/16) + + +## 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.11.tar.gz`. diff --git a/release-notes/3.6.12.md b/release-notes/3.6.12.md new file mode 100644 index 0000000000..c49d0da19f --- /dev/null +++ b/release-notes/3.6.12.md @@ -0,0 +1,67 @@ +## RabbitMQ 3.6.12 + +RabbitMQ `3.6.12` is a maintenance release. + +### Upgrades and Compatibility + +See the ["Upgrading clusters" section of the documentation](https://www.rabbitmq.com/clustering.html#upgrading) +for general documentation on upgrades. + +This release has no other known incompatibilities with versions 3.6.7 through 3.6.11. +See the upgrade and compatibility sections in the [3.6.7 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/rabbitmq_v3_6_7) if upgrading from an earlier release. + + +### Core Server + +#### Bug Fixes + + * Process responsible for running the autoheal partition handling strategy + could run into a deadlock with its peers, preventing autoheal from completing. + + GitHub issue: [rabbitmq-server#1346](https://github.com/rabbitmq/rabbitmq-server/issues/1346) + + * Garbage collection of mirrored queue metrics on nodes that did not + host a leader or mirror for a queue affected delivery and acknowledgement rates. + This could result in rates being 0 or negative when they should not be. + + GitHub issue: [rabbitmq-server#1340](https://github.com/rabbitmq/rabbitmq-server/issues/1340) + + * Stats emission could prevent queue mirrors from performing garbage collection + and consume memory even when they were empty. + + GitHub issue: [rabbitmq-common#220](https://github.com/rabbitmq/rabbitmq-common/pull/220) (continuation to [rabbitmq-common#196](https://github.com/rabbitmq/rabbitmq-common/issues/196)) + + * `RABBITMQ_SCHEDULER_BIND_TYPE` and `RABBITMQ_DISTRIBUTION_BUFFER_SIZE` now can be set via `rabbitmq-env.conf`. + + GitHub issue: [rabbitmq-server#1338](https://github.com/rabbitmq/rabbitmq-server/issues/1338) + + +### Shovel Management Plugin + +#### Bug Fixes + + * Passwords in source and destination URIs are now redacted out. + + GitHub issue: [rabbitmq-federation-management#15](https://github.com/rabbitmq/rabbitmq-federation-management/issues/15) + + +### Federation Management Plugin + +#### Bug Fixes + + * Passwords in upstream URIs are now redacted out. + + GitHub issue: [rabbitmq-federation-management#15](https://github.com/rabbitmq/rabbitmq-federation-management/issues/15) + + +## 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.12.tar.gz`. diff --git a/release-notes/3.6.13.md b/release-notes/3.6.13.md new file mode 100644 index 0000000000..14dcb66e3f --- /dev/null +++ b/release-notes/3.6.13.md @@ -0,0 +1,119 @@ +## RabbitMQ 3.6.13 + +RabbitMQ `3.6.13` is a maintenance release. + +### Upgrades and Compatibility + +See the ["Upgrading clusters" section of the documentation](https://www.rabbitmq.com/clustering.html#upgrading) +for general documentation on upgrades. + +This release has no known incompatibilities with versions 3.6.7 through 3.6.12. +See the upgrade and compatibility sections in the [3.6.7 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/rabbitmq_v3_6_7) if upgrading from an earlier release. + +### 3.6.x Series Support Timeline + +Please read this node on [RabbitMQ 3.6.x series support timeline](https://groups.google.com/forum/#!msg/rabbitmq-users/kXkI-f3pgEw/UFowJIK4BQAJ). + + +### Core Server + +#### Bug Fixes + + * Memory usage monitor uses subprocesses a lot more sparingly. They are started + roughly once a second or not started at all, depending on the strategy (e.g. on Windows + Erlang VM allocator information is used instead). + + GitHub issues: [rabbitmq-server#1343](https://github.com/rabbitmq/rabbitmq-server/issues/1343), [rabbitmq-common#224](https://github.com/rabbitmq/rabbitmq-common/issues/224) + + * Very busy queues are now more efficient at prioritizing consumers, avoiding + consumer delivery blocking when relatively long running operations (e.g. bulk flushing + of transient messages to disk) happen. + + GitHub issues: [rabbitmq-server#1388](https://github.com/rabbitmq/rabbitmq-server/pull/1388), [rabbitmq-server#1407](https://github.com/rabbitmq/rabbitmq-server/pull/1407) + + * queue leader strategies now take additional queue HA arguments into account. + + GitHub issue: [rabbitmq-server#1371](https://github.com/rabbitmq/rabbitmq-server/issues/1371) + + * Logging to standard output using `RABBITMQ_LOGS=-` wasn't possible on Windows. + + GitHub issue: [rabbitmq-server#1348](https://github.com/rabbitmq/rabbitmq-server/issues/1348) + + * queue leader locator name now can be specified as Erlang strings. + + GitHub issue: [rabbitmq-server#1411](https://github.com/rabbitmq/rabbitmq-server/issues/1411) + + * Direct Erlang client connections could fail with obscure messages when + target node was still booting. + + GitHub issue: [rabbitmq-server#1356](https://github.com/rabbitmq/rabbitmq-server/issues/1356) + +#### Enhancements + + * `supervisor2` now can be used in environments that perform hot code upgrades. + + GitHub issue: [rabbitmq-common#230](https://github.com/rabbitmq/rabbitmq-common/pull/230) + + * systemd service file now white lists exit code 69. + + GitHub issue: [rabbitmq-server-release#51](https://github.com/rabbitmq/rabbitmq-server-release/issues/51) + + * Example systemd service file now includes service restart settings. + + GitHub issue: [rabbitmq-server#1359](https://github.com/rabbitmq/rabbitmq-server/issues/1359) + + * queue leader locator strategy now can be configured using strings. + + GitHub issue: [rabbitmq-server#1411](https://github.com/rabbitmq/rabbitmq-server/issues/1411) + + * Plugin activation avoids logs things that can be confusing. + + GitHub issue: [rabbitmq-server#1364](https://github.com/rabbitmq/rabbitmq-server/issues/1364) + + +### Management Plugin + +#### Enhancements + + * Minor efficiency improvements around stats collection. + + GitHub issues: [rabbitmq-common#235](https://github.com/rabbitmq/rabbitmq-common/pull/235) + + * jQuery upgraded to 1.12.4. + + GitHub issue: [rabbitmq-management#502](https://github.com/rabbitmq/rabbitmq-management/pull/502) + + * UI improvements. + + * More detailed memory use breakdown on the node page. + + GitHub issue: [rabbitmq-management#500](https://github.com/rabbitmq/rabbitmq-management/pull/500) + + * It is now possible to configure an HTTP API path prefix for the plugin. + + GitHub issue: [rabbitmq-management#481](https://github.com/rabbitmq/rabbitmq-management/issues/481) + + * Queue details page no longer truncates node name. + + GitHub issue: [rabbitmq-management#473](https://github.com/rabbitmq/rabbitmq-management/issues/473) + + * Policy name in queue and exchange info is now a link. + + GitHub issue: [rabbitmq-management#493](https://github.com/rabbitmq/rabbitmq-management/issues/493) + + * `DELETE /api/connections/{name}` is now more defensive. + + GitHub issue: [rabbitmq-management#497](https://github.com/rabbitmq/rabbitmq-management/issues/497) + + +## 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.13.tar.gz`. diff --git a/release-notes/3.6.14.md b/release-notes/3.6.14.md new file mode 100644 index 0000000000..594bf07094 --- /dev/null +++ b/release-notes/3.6.14.md @@ -0,0 +1,48 @@ +## RabbitMQ 3.6.14 + +RabbitMQ `3.6.14` is a maintenance release that primarily fixes an issue in systemd +unit files that affected some systems. It is virtually identical to [3.6.13](https://github.com/rabbitmq/rabbitmq-server/releases/tag/rabbitmq_v3_6_13) +otherwise. + +### Upgrades and Compatibility + +See the ["Upgrading clusters" section of the documentation](https://www.rabbitmq.com/clustering.html#upgrading) +for general documentation on upgrades. + +This release has no known incompatibilities with versions 3.6.7 through 3.6.13. +See the upgrade and compatibility sections in the [3.6.7 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/rabbitmq_v3_6_7) if upgrading from an earlier release. + +### 3.6.x Series Support Timeline + +Please read this node on [RabbitMQ 3.6.x series support timeline](https://groups.google.com/forum/#!msg/rabbitmq-users/kXkI-f3pgEw/UFowJIK4BQAJ). + + +### Debian and RPM packages + +#### Bug Fixes + + * systemd service unit no longer has trailing comments that could lead nodes + into restart loops on some systems. + + GitHub issues: [rabbitmq-server#1422](https://github.com/rabbitmq/rabbitmq-server/issues/1422) + +### Management Plugin + +#### Bug Fix + + * Expandable sections on node metrics page failed to expand. + + GitHub issues: [rabbitmq-management#507](https://github.com/rabbitmq/rabbitmq-management/issues/507) + + +## 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.13.tar.gz`. diff --git a/release-notes/3.6.15.md b/release-notes/3.6.15.md new file mode 100644 index 0000000000..e7ec97b016 --- /dev/null +++ b/release-notes/3.6.15.md @@ -0,0 +1,142 @@ +## RabbitMQ 3.6.15 + +RabbitMQ 3.6.15 is a maintenance release. + +### Upgrades and Compatibility + +See the ["Upgrading clusters" section of the +documentation](https://www.rabbitmq.com/upgrade.html) for general +documentation on upgrades. + +This release has no known incompatibilities with versions 3.6.7 through +3.6.14. See the upgrade and compatibility sections in the [3.6.7 release +notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/rabbitmq_v3_6_7) +if upgrading from an earlier release. + +### 3.6.x Series Support Timeline + +Please read this node on [RabbitMQ 3.6.x series support +timeline](https://groups.google.com/forum/#!msg/rabbitmq-users/kXkI-f3pgEw/UFowJIK4BQAJ). + +### Core Server + +#### Bug Fixes + +* Avoid infinite loop when dropping entries in the GM. + + GitHub issue: [rabbitmq-server#1431](https://github.com/rabbitmq/rabbitmq-server/pull/1431) + +* Various changes to the OCF scripts. + + GitHub issues: [rabbitmq-server-release#66](https://github.com/rabbitmq/rabbitmq-server-release/pull/66), + [rabbitmq-server-release#67](https://github.com/rabbitmq/rabbitmq-server-release/pull/67), + [rabbitmq-server-release#73](https://github.com/rabbitmq/rabbitmq-server-release/pull/73) + +#### Enhancements + + * [Internal authN backend](https://www.rabbitmq.com/access-control.html) will now prohibit logins with a blank passwords. Such attempts + are usually made by mistake because a passwordless user that was meant to authenticate + using [x509 (TLS) certificates](https://github.com/rabbitmq/rabbitmq-auth-mechanism-ssl/) was not configured to use the correct [authentication + mechanism](https://www.rabbitmq.com/authentication.html). + + Note that the same behavior can already be achieved using a [credential validator](https://www.rabbitmq.com/passwords.html), + so this is just an extra safety measure. + + GitHub issue: [rabbitmq-server#1466](https://github.com/rabbitmq/rabbitmq-server/pull/1466) + + +### Management Plugin + +#### Bug Fixes + +* Multi-input forms (such as message properties) again submit all fields. + + GitHub issues: [rabbitmq-management#511](https://github.com/rabbitmq/rabbitmq-management/issues/511) + + * User update form now successfully updates tags for passwordless users (or if the password is cleared at the same time). + + GitHub issue: [rabbitmq-management#533](https://github.com/rabbitmq/rabbitmq-management/issues/533) + +* `Content-Type` header was returned twice in API responses. + + GitHub issue: [rabbitmq-management#527](https://github.com/rabbitmq/rabbitmq-management/issues/527) + +* Avoid duplicated event handlers in the UI. + + GitHub issue: [rabbitmq-management#516](https://github.com/rabbitmq/rabbitmq-management/pull/516) + +* Use `auto` width to make option values fully visible. + + GitHub issue: [rabbitmq-management#519](https://github.com/rabbitmq/rabbitmq-management/issues/519) + +### MQTT Plugin + +#### Bug Fixes + +* Concurrently registering consumers could fail with a "Key exists" exception in the log. + + GitHub issue: [rabbitmq-mqtt#132](https://github.com/rabbitmq/rabbitmq-mqtt/issues/132) + +### Federation Plugin + +#### Bug Fixes + +* Disabling policy (or plugin) now cleans up all internal exchanges and queues used by federation links. + + GitHub issue: [rabbitmq-federation#63](https://github.com/rabbitmq/rabbitmq-federation/issues/63) + +### Standalone MacOS Package + +#### Bug Fixes + +* Standalone MacOS package now ships with Erlang/OTP 20.1 which is compatible with High Sierra. + + GitHub issue: [rabbitmq-server-release#68](https://github.com/rabbitmq/rabbitmq-server-release/issues/68) + +### Debian Package + +#### Bug Fixes + +* Make adm the group owner for RabbitMQ log directories. + + GitHub issue: [rabbitmq-server-release#70](https://github.com/rabbitmq/rabbitmq-server-release/pull/70) + +### Web MQTT Plugin + +#### Bug Fixes + +* `https/web-mqtt` listener displayed incorrect port in management UI. + + GitHub issue: [rabbitmq-web-mqtt#25](https://github.com/rabbitmq/rabbitmq-web-mqtt/issues/25) + +### Top Plugin + +#### Bug Fixes + +* Fix node and row selectors after jQuery upgrade to 1.12. + + GitHub issue: [rabbitmq-top#29](https://github.com/rabbitmq/rabbitmq-top/pull/29) + +### Erlang Client + +#### Buf Fixes + +* Enable hostname verification for OTP 19. + + GitHub issue: [rabbitmq-erlang-client#95](https://github.com/rabbitmq/rabbitmq-erlang-client/pull/95) + +## 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-server-3.6.15.tar.xz`. diff --git a/release-notes/3.6.16.md b/release-notes/3.6.16.md new file mode 100644 index 0000000000..c3f8b3c583 --- /dev/null +++ b/release-notes/3.6.16.md @@ -0,0 +1,143 @@ +## RabbitMQ 3.6.16 + +RabbitMQ 3.6.16 is a maintenance release that primarily includes selected backports from +the [3.7.x series](https://www.rabbitmq.com/changelog.html). Users of earlier 3.6.x releases +are recommended to [upgrade](https://www.rabbitmq.com/upgrade.html) to a 3.7.x release, e.g. [3.7.6](https://github.com/rabbitmq/rabbitmq-server/releases). + +### Upgrades and Compatibility + +See the [Upgrades documentation guide](https://www.rabbitmq.com/upgrade.html) for general +documentation on upgrades. + +This release nearly exclusively contains backports of bug fixes, optimisations and small enhancements +(e.g. safer defaults) from the 3.7.x series. Some of them are **potentially breaking** but +should only affect a very small percentage of users. They are: + + * The max 255 priority cap is now enforced at all levels + * Default `rabbit.channel_max` value is now about 2K, a much safer value than 65K used previously + * Default idle LDAP connection timeout is now 300 seconds instead of infinity + +This release has no other known incompatibilities with versions 3.6.7 through +3.6.15. See the upgrade and compatibility sections in the [3.6.7 release +notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/rabbitmq_v3_6_7) +if upgrading from an earlier release. + +### 3.6.x Series Support Timeline + +Please read this note on [RabbitMQ 3.6.x series support +timeline](https://groups.google.com/forum/#!msg/rabbitmq-users/kXkI-f3pgEw/UFowJIK4BQAJ). + + +### Core Server + +#### Bug Fixes + +* queue leader locator `min-masters` incorrectly calculated the number of masters. + + GitHub issue: [rabbitmq-server#1519](https://github.com/rabbitmq/rabbitmq-server/issues/1519) + +* Maximum supported number of queue priorities (255) is now enforced. + + GitHub issue: [rabbitmq-server#1590](https://github.com/rabbitmq/rabbitmq-server/issues/1590) + +#### Enhancements + + * On Erlang 20.2.3 or later, more optimal memory allocators will be used. On some workloads that leads + to [significant reduction in node's RAM consumption](https://groups.google.com/d/msg/rabbitmq-users/LSYaac9frYw/LNZDZUlrBAAJ). The change is workload-specific, however, on the workloads + tested that do introduce a negative effect (more RAM used) the difference was very small (about 1%). + + + It is possible to go back to the previous settings, `+MBas aoffcbf +MHas aoffcbf +MBlmbcs 5120 +MHlmbcs 5120 +MMmcs 10`, + by specifying them in the `RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS` [environment variable](https://www.rabbitmq.com/configure.html#customise-environment). + + On Erlang/OTP releases older than 20.2.3 there will be no default changes. + + GitHub issue: [rabbitmq/rabbitmq-server#1604](https://github.com/rabbitmq/rabbitmq-server/pull/1604), [rabbitmq/rabbitmq-server#1612](https://github.com/rabbitmq/rabbitmq-server/pull/1612) + + * `queue.delete` operations will now force delete queues that don't have a [promotable + master](https://www.rabbitmq.com/ha.html#unsynchronised-mirrors). + + GitHub issue: [rabbitmq-server#1501](https://github.com/rabbitmq/rabbitmq-server/issues/1501) + + * `ha-promote-on-failure` is a new mirrored queue setting that's similar to [`ha-promote-on-shutdown`](https://www.rabbitmq.com/ha.html#unsynchronised-mirrors) + but for unexpected leader replica termination. + + GitHub issue: [rabbitmq-server#1578](https://github.com/rabbitmq/rabbitmq-server/pull/1578) + * Lock contention in internal database is now much lower when a node with a lot of exclusive queues + shuts down or is otherwise considered to be unavailable by peers. This means fewer CPU cycles + spent cleaning up the exclusive queues. + + GitHub issue: [rabbitmq-server#1570](https://github.com/rabbitmq/rabbitmq-server/pull/1570) + + * Default [max number of channels allowed on a connection](https://www.rabbitmq.com/networking.html#tuning-for-large-number-of-connections-channel-max) (a.k.a. `channel_max`) has been lowered from `65535` to `2047`. + The new default is much safer and will reduce the effect application channel leaks have on node resource consumption. **This is a potentially breaking change**. + + Systems where a lot (at least hundreds) of channels *per connection* are used should explicitly override `channel_max` in the [config file](https://www.rabbitmq.com/configure.html) to a higher suitable value, e.g.: + +``` erlang +[ + {rabbit, [ + {channel_max, 4000} + ]} +]. +``` + + GitHub issue: [rabbitmq-server#1593](https://github.com/rabbitmq/rabbitmq-server/issues/1593) + + +### Management Plugin + +#### Bug Fixes + + * Eliminated unnecessary encoding conversions that could lead to increased memory consumption. + + GitHub issue: [rabbitmq-management#550](https://github.com/rabbitmq/rabbitmq-management/pull/550) + + * `rabbitmqadmin` could run into an exception with certain formatting settings on Python 2.x. + + GitHub issue: [rabbitmq-management#568](https://github.com/rabbitmq/rabbitmq-management/issues/568) + + * `rabbitmqadmin` incorrectly encoded spaces in connection name values + + GitHub issue: [rabbitmq-management#579](https://github.com/rabbitmq/rabbitmq-management/pull/579) + + * HTTP API stats documentation used incorrect field names. + + GitHub issue: [rabbitmq-management#561](https://github.com/rabbitmq/rabbitmq-management/pull/561) + +#### Enhancements + + * Reduced padding usage in tables in the management UI. + + GitHub issue: [rabbitmq-management#541](https://github.com/rabbitmq/rabbitmq-management/pull/541) + + +### LDAP Plugin + +#### Bug Fixes + + * LDAP server-initiated connection closure was not handled gracefully by connection pool. + Kudos to Adam Gardner for [doing all the hard work](https://groups.google.com/forum/#!topic/rabbitmq-users/4Gva3h-yJzM) investigating this issue. + + GitHub issues: [rabbitmq-auth-backend-ldap#82](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/82), [rabbitmq-auth-backend-ldap#90](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/90) + + * `rabbit.idle_timeout` now defaults to 300 seconds instead of `infinity`. + + GitHub issue: [rabbitmq-auth-backend-ldap#81](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/81) + + +## 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-server-3.6.16.tar.xz`. diff --git a/release-notes/3.6.2.md b/release-notes/3.6.2.md new file mode 100644 index 0000000000..c5e1558465 --- /dev/null +++ b/release-notes/3.6.2.md @@ -0,0 +1,375 @@ +## RabbitMQ 3.6.2 + +RabbitMQ `3.6.2` is a maintenance release that includes a [new statistics +collector in the management plugin](https://github.com/rabbitmq/rabbitmq-management/issues/41). + +### Management Plugin Incompatibility with Earlier 3.6.x Releases + +Because this version includes significant changes to the management plugin, +it should not be deployed into clusters with mixed `3.6.x` node versions +unless **all nodes that have the management plugin enabled** run `3.6.2`. +Otherwise HTTP API requests will fail with exceptions in some scenarios and parts of +management UI may not be updated. + +There are no other known incompatibilities with earlier `3.6.x` releases. + + +### OpenSSL Requirement for Standalone Mac Release + +Standalone Mac OS X package now requires OpenSSL 1.0.x to be provided by the system, for example, +from Homebrew. + +### Optional `socat` Package Dependency for Distributions that Use `systemd` + +Starting with `3.6.2`, RabbitMQ Debian and RPM packages have an optional +[dependency on socat](https://groups.google.com/forum/#!searchin/rabbitmq-users/socat/rabbitmq-users/ktzOsgNEBkY/cOlF_eP6AAAJ). When +installing using `dpkg`, this dependency won't be automatically installed. To install it manually, use + + sudo apt-get install socat + + +### Server + +#### Bug Fixes + + * Channel operations that time out no longer produce noisy crash reports in + RabbitMQ log files + + GitHub issue: [rabbitmq-common#63](https://github.com/rabbitmq/rabbitmq-common/issues/63) + + * Channel operation timeout default is bumped to 15 seconds + + GitHub issue: [rabbitmq-server/issues/667](https://github.com/rabbitmq/rabbitmq-server/issues/667) + + * Windows service will pick up RabbitMQ config file regardless of whether + it was present during service installation + + GitHub issue: [rabbitmq-server#659](https://github.com/rabbitmq/rabbitmq-server/issues/659) + + * Erlang distribution failures for `rabbitmqctl` and cross-node links will + provide more detail when running on Erlang 19 (scheduled for release in Q3 2016). + + GitHub issue: [rabbitmq-server#401](https://github.com/rabbitmq/rabbitmq-server/issues/401) + + * `rabbitmqctl list_consumers` now lists all consumers on a given queue + + Previously it would only list one. + + Contributed by Alexey Lebedeff (Mirantis). + + GitHub issue: [rabbitmq-server#701](https://github.com/rabbitmq/rabbitmq-server/issues/701) + + * `rabbitmqctl list_queues` now correctly outputs rows for unavailable queues + + Contributed by Alexey Lebedeff (Mirantis). + + GitHub issue: [rabbitmq-server#696](https://github.com/rabbitmq/rabbitmq-server/issues/696) + + * `rabbitmqctl set_disk_free_limit mem_relative` erroneously rejected values greater than `1.0` + + GitHub issue: [rabbitmq-server#717](https://github.com/rabbitmq/rabbitmq-server/issues/717) + + * Messages with an invalid client-provided `x-death` header value caused queue process termination + + GitHub issue: [rabbitmq-server#767](https://github.com/rabbitmq/rabbitmq-server/issues/767) + + * Messages with priorities higher than queue max are now assigned max configured priority + and no longer cause an unhandled exception that results in queue process restart + + GitHub issue: [rabbitmq-server#795](https://github.com/rabbitmq/rabbitmq-server/issues/795) + + * Policy-related `rabbitmqctl` commands could return unformatted messages + + GitHub issue: [rabbitmq-server#742](https://github.com/rabbitmq/rabbitmq-server/issues/742) + + * `RABBITMQ_IO_THREAD_POOL_SIZE` is no longer ignored by `rabbitmq-server.bat` + + GitHub issue: [rabbitmq-server#705](https://github.com/rabbitmq/rabbitmq-server/issues/705) + + * Deleting a vhost in parallel with updating a policy in it resulted + in unhandled exceptions + + GitHub issues: [rabbitmq-server#755](https://github.com/rabbitmq/rabbitmq-server/issues/755), + [rabbitmq-server#759](https://github.com/rabbitmq/rabbitmq-server/issues/759), + [rabbitmq-server#744](https://github.com/rabbitmq/rabbitmq-server/issues/744) + +#### Enhancements + + * Connections now emit stats unconditionally when they are blocked and unblocked + by resource alarms. This makes management UI and HTTP API-reported data to be more up-to-date + + GitHub issue: [rabbitmq-server#679](https://github.com/rabbitmq/rabbitmq-server/issues/679) + + * New (node-local) health check command + + `rabbitmqctl node_health_check` is a new command that performs basic health check of a node + + GitHub issue: [rabbitmq-server#398](https://github.com/rabbitmq/rabbitmq-server/issues/398) + + * Automatic restart policy enabled for Windows service + + GitHub issue: [rabbitmq-server#645](https://github.com/rabbitmq/rabbitmq-server/issues/645) + + * Default number of async I/O VM threads is now calculated based on the + number of available CPU cores + + GitHub issue: [rabbitmq-server#151](https://github.com/rabbitmq/rabbitmq-server/issues/151) + + * `rabbitmqctl list_queues` now supports new flags, `--offline` and `--online`, that limit + result to only unavailable or available queues (queue leaders, to be more precise) + + Contributed by Alexey Lebedeff (Mirantis). + + GitHub issue: [rabbitmq-server#688](https://github.com/rabbitmq/rabbitmq-server/issues/688) + + * RabbitMQ will no longer log a warning about disabled kernel polling on Windows + + The runtime does not support kernel polling (I/O completion ports) on Windows, + so there is nothing the user can do about it. + + GitHub issue: [rabbitmq-server#695](https://github.com/rabbitmq/rabbitmq-server/issues/695) + + * Queue index is now updated in batches when messages are requeued + + GitHub issue: [rabbitmq-server#343](https://github.com/rabbitmq/rabbitmq-server/issues/343) + + +### Management plugin + +#### Bug Fixes + + * Samples (stats) for abnormally terminated connections and channels will now be cleaned up more aggressively + + GitHub issue: [rabbitmq-management#198](https://github.com/rabbitmq/rabbitmq-management/issues/198) + + * Cluster name could be returned by HTTP API as a non-string value + + GitHub issue: [rabbitmq-management#143](https://github.com/rabbitmq/rabbitmq-management/issues/143) + + * Improved IE 11 compatibility + + GitHub issue: [rabbitmq-management#123](https://github.com/rabbitmq/rabbitmq-management/issues/123) + +#### Enhancements + + * Management plugin has a new, better parallelised event collector which is less likely to + fall behind. + + GitHub issues: [rabbitmq-management#41](https://github.com/rabbitmq/rabbitmq-management/issues/41), + [rabbitmq-management#166](https://github.com/rabbitmq/rabbitmq-management/issues/166), + [rabbitmq-management#173](https://github.com/rabbitmq/rabbitmq-management/issues/173), + [rabbitmq-management#185](https://github.com/rabbitmq/rabbitmq-management/issues/185), + [rabbitmq-management#174](https://github.com/rabbitmq/rabbitmq-management/issues/174) + + * Clients now can provide a human-readable connection name that will be displayed + in the management UI. Currently Java, .NET and Erlang clients support this. + In order to use this feature, set the `connection_name` key in client properties. + Note that this name doesn't have to be unique and cannot be used as a connection identifier, + for example, in HTTP API requests. + + GitHub issue: [rabbitmq-server#104](https://github.com/rabbitmq/rabbitmq-server/issues/104) + + * `GET /api/nodes/{node}/memory` and `GET /api/nodes/{node}/memory/relative` are new HTTP API + endpoints that return memory usage breakdown in absolute (same as `rabbitmqctl status`) and + relative terms. + + GitHub issue: [rabbitmq-management#161](https://github.com/rabbitmq/rabbitmq-management/issues/161) + + * HTTPS related improvements in `rabbitmqadmin`. + + GitHub issues: [rabbitmq-management#152](https://github.com/rabbitmq/rabbitmq-management/issues/152), [rabbitmq-management#151](https://github.com/rabbitmq/rabbitmq-management/issues/151), [rabbitmq-management#149](https://github.com/rabbitmq/rabbitmq-management/issues/149). + + * Policies now can be listed (read) by the users tagged with `management` and `monitoring` + + As well as those tagged with `policymaker` and `administrator`, of course. + + GitHub issue: [rabbitmq-management#156](https://github.com/rabbitmq/rabbitmq-management/issues/156) + + * Effective rates mode is now displayed for cluster nodes by default + + GitHub issue: [rabbitmq-management#177](https://github.com/rabbitmq/rabbitmq-management/issues/177) + + +### MQTT plugin + +#### Bug Fixes + + * Resource alarms are handled correctly by MQTT connections + + GitHub issues: [rabbitmq-mqtt#62](https://github.com/rabbitmq/rabbitmq-mqtt/issues/62) + + * Session [pre-existing] presence is now correctly communicated to clients + + GitHub issue: [rabbitmq-mqtt#61](https://github.com/rabbitmq/rabbitmq-mqtt/issues/61) + +#### Enhancements + + * Connections now emit stats unconditionally when they are blocked and unblocked + by resource alarms. This makes management UI and HTTP API-reported data to be more up-to-date. + + GitHub issue: [rabbitmq-mqtt#71](https://github.com/rabbitmq/rabbitmq-mqtt/issues/71) + + * More connection details for MQTT connections reported to management UI + + GitHub issue: [rabbitmq-mqtt#66](https://github.com/rabbitmq/rabbitmq-mqtt/pull/66) + +### STOMP plugin + +#### Bug Fixes + + * Resource alarms are handled correctly by STOMP connections + + GitHub issues: [rabbitmq-stomp#68](https://github.com/rabbitmq/rabbitmq-stomp/issues/68), + [rabbitmq-stomp#67](https://github.com/rabbitmq/rabbitmq-stomp/issues/67) + +#### Enhancements + + * Connections now emit stats unconditionally when they are blocked and unblocked + by resource alarms. This makes management UI and HTTP API-reported data to be more up-to-date. + + GitHub issue: [rabbitmq-stomp#70](https://github.com/rabbitmq/rabbitmq-stomp/issues/70) + + * More connection details for STOMP connections reported to management UI + + GitHub issue: [rabbitmq-stomp#55](https://github.com/rabbitmq/rabbitmq-stomp/issues/55) + + + +### Web STOMP plugin + +#### Enhancements + + * More connection details for STOMP-over-WebSockets connections reported to management UI + + GitHub issue: [rabbitmq-web-stomp#45](https://github.com/rabbitmq/rabbitmq-web-stomp/pull/45) + + * The plugin now sends a protocol header (`Sec-WebSocket-Protocol`) response when + client presents it. + + GitHub issue: [rabbitmq-web-stomp#53](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/53) + + +### Web MQTT plugin + +#### Bug Fixes + + * More connection details for MQTT-over-WebSockets connections reported to management UI + + GitHub issue: [rabbitmq-web-mqtt#3](https://github.com/rabbitmq/rabbitmq-web-mqtt/pull/3) + + * Plugin deactivation now correctly stops TCP listener + + GitHub issue: [rabbitmq-web-mqtt#7](https://github.com/rabbitmq/rabbitmq-web-mqtt/issues/7) + + +### .NET client + +#### Bug Fixes + + * Compatibility with SQL Server 2014 CLR restored + + GitHub issue: [rabbitmq-dotnet-client#167](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/167) + + * Autorecovering connections now respect all provided hostnames + when reconnecting. + + GitHub issue: [rabbitmq-dotnet-client#157](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/157) + + * `ConnectionFactory#CreateConnection` now respects all provided hostnames + when automatic connection recovery is disabled. + + GitHub issue: [rabbitmq-dotnet-client#176](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/176) + +### Erlang client + +#### Bug Fixes + + * Certain channel failures resulted in a race condition during process [tree] shutdown. + + GitHub issue: [rabbitmq-erlang-client#42](https://github.com/rabbitmq/rabbitmq-erlang-client/issues/42) + + +### LDAP Authentication/Authorisation Backend + +#### Bug Fixes + + * LDAP connection pool is now more resilient to TCP connection closure/loss on Erlang/OTP 18.3 + + GitHub issue: [rabbitmq-auth-backend-ldap#41](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/41) + + * Non-existent group in `tag_queries` shouldn't terminate authorisation + + GitHub issue: [rabbitmq-auth-backend-ldap#15](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/15) + + * `attribute` query should not fail when multiple values are returned + + GitHub issue: [rabbitmq-auth-backend-ldap#16](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/16) + +#### Enhancements + + * Virtual host is now available as a variable in `tag_queries` + + GitHub issue: [rabbitmq-auth-backend-ldap#13](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/13) + + * Default LDAP connection pool size was increased from `10` to `64` + + GitHub issue: [rabbitmq-auth-backend-ldap#35](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/35) + + +### HTTP Authentication/Authorisation Backend + +#### Enhancements + + * The plugin now uses HTTP 1.1 and keep-alive connections for requests. + + GitHub issue: [rabbitmq-auth-backend-http#20](https://github.com/rabbitmq/rabbitmq-auth-backend-http/issues/20) + + * It is now possible to configure the plugin to use `POST` requests instead of + `GET`, so that no sensitive information is logged. + + GitHub issue: [rabbitmq-auth-backend-http#7](https://github.com/rabbitmq/rabbitmq-auth-backend-http/issues/7) + + * The plugin now supports HTTP client TLS options, so authenticating apps can use HTTPS + + GitHub issue: [rabbitmq-auth-backend-http#29](https://github.com/rabbitmq/rabbitmq-auth-backend-http/issues/29) + + * Vhost access requests now include client IP address + + GitHub issue: [rabbitmq-auth-backend-http#33](https://github.com/rabbitmq/rabbitmq-auth-backend-http/pull/33) + + Contributed by Abdulrazak Alkl. + +### Event Exchange plugin + +#### Enhancements + + * Policy events now include a vhost field + + GitHub issue: [rabbitmq-event-exchange#17](https://github.com/rabbitmq/rabbitmq-event-exchange/issues/17) + + * Binding events now include a vhost field + + GitHub issue: [rabbitmq-event-exchange#9](https://github.com/rabbitmq/rabbitmq-event-exchange/issues/9) + + * Millesecond resolution timestamp of events is now back as a message header + + GitHub issue: [rabbitmq-event-exchange#12](https://github.com/rabbitmq/rabbitmq-event-exchange/issues/12) + + * `user.authentication.success` no longer has the `vhost` field + since vhost is only available at a later point. `connection.created` + events should be used to track successful connections if vhost + information is desired. + + GitHub issue: [rabbitmq-event-exchange#13](https://github.com/rabbitmq/rabbitmq-event-exchange/issues/13) + + +## 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.1, see http://rabbitmq.com/passwords.html. + +To upgrade a RabbitMQ cluster, follow the instructions [in RabbitMQ documentation](https://www.rabbitmq.com/clustering.html#upgrading). All nodes that have RabbitMQ management plugin enabled +must be upgraded in lock step. + +## 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.2.tar.gz`. diff --git a/release-notes/3.6.3.md b/release-notes/3.6.3.md new file mode 100644 index 0000000000..dd3e6ed9ba --- /dev/null +++ b/release-notes/3.6.3.md @@ -0,0 +1,218 @@ +## RabbitMQ 3.6.3 + +RabbitMQ `3.6.3` is a maintenance release that includes +bug fixes, packaging and build system enhancements. + +As of `3.6.3`, RabbitMQ also comes with several additional plugins in the distribution: + + * [rabbitmq_top](http://github.com/rabbitmq/rabbitmq-top), which helps identify (Erlang) processes + that consume most RAM and CPU resources + + * [rabbitmq_trust_store](https://github.com/rabbitmq/rabbitmq-trust-store) which manages + trusted client x509/TLS certificates + + * [rabbitmq_jms_topic_exchange](https://github.com/rabbitmq/rabbitmq-jms-topic-exchange/) which, together with [RabbitMQ JMS Java client](https://github.com/rabbitmq/rabbitmq-jms-client), provides support for the JMS 1.1 API + atop RabbitMQ. + +### Breaking Changes + + * Debian package now [supports systemd and also drops support for some older distributions](https://groups.google.com/forum/#!topic/rabbitmq-users/orFuEYExcxk). + + * All artifacts in this release are signed with a [new 4096-bit OpenGPG key](https://groups.google.com/forum/#!msg/rabbitmq-users/BO5cmEsdEhc/Jupz1_Q4AwAJ). + +### Known Issues on Erlang 19.0 + +An undocumented runtime metric change in Erlang 19.0 [breaks management plugin](https://github.com/rabbitmq/rabbitmq-management/issues/244). + +### Server + +#### Bug Fixes + + * (Newly elected) queue leader process could terminate immediately after promotion + + GitHub issue: [rabbitmq-server#812](https://github.com/rabbitmq/rabbitmq-server/issues/812) + + * Priority queue mirror could fail to synchronize after restart + + GitHub issues: [rabbitmq-server#687](https://github.com/rabbitmq/rabbitmq-server/issues/687), [rabbitmq-server#802](https://github.com/rabbitmq/rabbitmq-server/issues/802) + + * Shutdown timeouts for worker processes are now much more reasonable. + Earlier the timeouts were virtually infinite which could lead to a deadlock during node shutdown. + + GitHub issue: [rabbitmq-server#541](https://github.com/rabbitmq/rabbitmq-server/issues/541) + + * Purging of a durable queue could result in undelivered publisher confirms. + Contributed by Andreas Ländle. + + GitHub issue: [rabbitmq-server#854](https://github.com/rabbitmq/rabbitmq-server/issues/854) + + * Old incarnations of queue mirrors are now ensured to be stopped before new ones are started + + GitHub issue: [rabbitmq-server#863](https://github.com/rabbitmq/rabbitmq-server/issues/863) + +#### Enhancements + + * `systemd` support in Debian and RPM packages + + Contributed by Alexey Lebedeff (Mirantis). + + GitHub issue: [rabbitmq-server#570](https://github.com/rabbitmq/rabbitmq-server/issues/570) + + * Debian repository and release artifacts are now signed with a [new 4096-bit OpenGPG key](https://groups.google.com/forum/#!msg/rabbitmq-users/BO5cmEsdEhc/Jupz1_Q4AwAJ) + + GitHub issue: [rabbitmq-server#718](https://github.com/rabbitmq/rabbitmq-server/issues/718) + + * More resilient `worker_pool`, particularly important for LDAP plugin users + + GitHub issue: [rabbitmq-server#834](https://github.com/rabbitmq/rabbitmq-server/issues/834) + + * More efficient file handle management + + GitHub issue: [rabbitmq-server#828](https://github.com/rabbitmq/rabbitmq-server/issues/828) + + * Test suite ported to Common Test + + Plugin developers will be encouraged to port their test suites to Common Test + in the future. + + GitHub issue: [rabbitmq-server#725](https://github.com/rabbitmq/rabbitmq-server/issues/725) + + * Compilation on [Erlang/OTP 19.0](http://erlang.org/download/otp_src_19.0.readme). + + GitHub issue: [rabbitmq-server#860](https://github.com/rabbitmq/rabbitmq-server/issues/860) + +### Management Plugin + +#### Enhancements + + * New API endpoint for reporting ETS tables memory consumption (absolute and relative) + + GitHub issue: [rabbitmq-management#219](https://github.com/rabbitmq/rabbitmq-management/issues/219) + + * Node information page now includes GC and context switching stats + + GitHub issue: [rabbitmq-management#208](https://github.com/rabbitmq/rabbitmq-management/issues/208) + + * Connection, channel, and queue information pages now include several runtime metrics + + GitHub issues: [rabbitmq-management#209](https://github.com/rabbitmq/rabbitmq-management/issues/209), [rabbitmq-management#210](https://github.com/rabbitmq/rabbitmq-management/issues/210), [rabbitmq-management#211](https://github.com/rabbitmq/rabbitmq-management/issues/211) + + * Node metrics now include information about how long it takes to obtain a file handle + + GitHub issue: [rabbitmq-server#825](https://github.com/rabbitmq/rabbitmq-server/issues/825) + + * Partial HTTPS support in `rabbitmqadmin` on Python versions older than `2.7.9` + + GitHub issue: [rabbitmq-management#225](https://github.com/rabbitmq/rabbitmq-management/issues/225) + +#### Bug Fixes + + * A channel statistics-related memory leak fixed. + + GitHub issue: [rabbitmq-management#214](https://github.com/rabbitmq/rabbitmq-management/issues/214) + + * Stats collectors event queue is now bounded (again) + + GitHub issue: [rabbitmq-management#221](https://github.com/rabbitmq/rabbitmq-management/issues/221) + + * Stats table name was logged as a tuple + + GitHub issue: [rabbitmq-management#206](https://github.com/rabbitmq/rabbitmq-management/issues/206) + + +### .NET Client + +#### Bug Fixes + + * Setting user-provided connection name didn't have an effect. + + GitHub issue: [rabbitmq-dotnet-client#187](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/187) + + * `IConnection#CreateModel` could throw a `NullPointerException` due to a race + condition. + + GitHub issue: [rabbitmq-dotnet-client#185](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/185) + + * Connections with automatic recovery enabled ignored ports from the hostname + list. + + GitHub issues: [rabbitmq-dotnet-client#157](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/157), + [rabbitmq-dotnet-client#190](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/190) + + * Fixes an underflow in delivery tag handling after connection recovery + + Contributed by @harishvadali and @Entroper. + + GitHub issue: [rabbitmq-dotnet-client#200](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/200) + +#### Enhancements + + * New [FAKE](https://fsharp.github.io/FAKE/) and [Paket](https://fsprojects.github.io/Paket/)-based build tooling: development on OS X and Linux with Mono is now + possible again. + + GitHub issue: [rabbitmq-dotnet-client#169](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/169) + + +### LDAP Plugin + +#### Enhancements + + * Nested groups are now supported with a separate query type + + GitHub issue: [rabbitmq-auth-backend-ldap#3](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/3) + +#### Bug Fixes + + * Query failures (e.g. `noSuchObject` responses) from LDAP servers are now correctly treated as `false` in + `or` and `and` queries instead of erroring. + + GitHub issue: [rabbitmq-auth-backend-ldap#48](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/48) + +### Trust Store Plugin + +#### Bug Fixes + + * Invalid/unparseable certificates no longer prevent other certificates from (re)loading + + GitHub issue: [rabbitmq-trust-store#27](https://github.com/rabbitmq/rabbitmq-trust-store/issues/27) + +#### Enhancements + + * Certificate verification now can validate only leaf certificates. + This is more convenient in some cases. It will be one of the opt-in modes + in future versions. + + GitHub issue: [rabbitmq-trust-store#34](https://github.com/rabbitmq/rabbitmq-trust-store/issues/34) + + * The plugin now logs when a certificate is added (loaded) or removed (unloaded) + + GitHub issue: [rabbitmq-trust-store#28](https://github.com/rabbitmq/rabbitmq-trust-store/issues/28) + + * The plugin now provides a function for listing trust store certificates + via `rabbitmqctl eval`: `rabbitmqctl eval 'io:format(rabbit_trust_store:list()).'` + + GitHub issue: [rabbitmq-trust-store#31](https://github.com/rabbitmq/rabbitmq-trust-store/issues/31) + +### Erlang Client + +#### Enhancements + + * `amqp_connection:close/4` is now exported + + GitHub issue: [rabbitmq-erlang-client#59](https://github.com/rabbitmq/rabbitmq-erlang-client/issues/59) + +#### Bug Fixes + + * The client now compiles on Erlang/OTP 19.0 + + GitHub issue: [rabbitmq-erlang-client#41](https://github.com/rabbitmq/rabbitmq-erlang-client/issues/41) + +### Delayed Message Exchange Plugin + +#### Enhacements + + * Efficiency improvements when publications and delayed delivery happen concurrently. + + Contributed by Richard Larocque. + + GitHub issues: [rabbitmq-delayed-message-exchange#51](https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/pull/51), [rabbitmq-delayed-message-exchange#54](https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/pull/54) diff --git a/release-notes/3.6.4.md b/release-notes/3.6.4.md new file mode 100644 index 0000000000..f2b3c86f78 --- /dev/null +++ b/release-notes/3.6.4.md @@ -0,0 +1,77 @@ +## RabbitMQ 3.6.4 + +`3.6.4` is a maintanence release. + + +### Server + +#### Bug Fixes + + * Nodes on Windows will successfully start if Erlang is installed in a directory with spaces + in the path. + + GitHub issue: [rabbitmq-server#859](https://github.com/rabbitmq/rabbitmq-server/issues/859) + + * Node health check is now node-local, as it was meant to be. + + GitHub issue: [rabbitmq-server#818](https://github.com/rabbitmq/rabbitmq-server/issues/818) + + * Queue deletion and termination will no longer leave "tomb stone" messages in message store + files. This eliminates the confusing behavior when a node or cluster having no messages + enqueued could have many thousands of such "marker" messages in the message store. + + GitHub issue: [rabbitmq-server#839](https://github.com/rabbitmq/rabbitmq-server/issues/839) + + * `rabbitmqctl cluster_status` will now output an accurate error message + if invoked shortly after a node was removed from the cluster and the node cannot be + contacted. + + GitHub issue: [rabbitmq-server#894](https://github.com/rabbitmq/rabbitmq-server/pull/894) + + Contributed by Peter Lemenkov (Red Hat) + +#### Enhancements + + * Erlang VM scheduler binding type default has changed to `db`. This means fewer + CPU context switches for some workloads. + + GitHub issue: [rabbitmq-server#612](https://github.com/rabbitmq/rabbitmq-server/issues/612) + +### Management Plugin + +#### Bug Fixes + + * HTTP API is now compatible with Erlang 19.0. + + GitHub issue: [rabbitmq-management#244](https://github.com/rabbitmq/rabbitmq-management/issues/244) + + * Temporary tables are no longer named using atoms, preventing a potential + exhaustion of the runtime atom table. + + GitHub issue: [rabbitmq-management#245](https://github.com/rabbitmq/rabbitmq-management/issues/245) + + * Cluster links and traffic charts are correctly displayed again + + GitHub issue: [rabbitmq-management#250](https://github.com/rabbitmq/rabbitmq-management/issues/250) + + * Runtime metric charts now have a description pop-up associated with them. + + GitHub issue: [rabbitmq-management#247](https://github.com/rabbitmq/rabbitmq-management/issues/247) + +### AMQP 1.0 plugin + +#### Bug fixes + + * When an AMQP 1.0 specified its own list of source outcomes in a link + attachment, it caused a crash of its session on the server. Now a + protocol error is raised if the list contains invalid outcomes. + + GitHub issue: [rabbitmq-amqp1.0#31](https://github.com/rabbitmq/rabbitmq-amqp1.0/issues/31) + +### Java Client + +#### Enhancements + + * The client will now try to use TLS v1.2 and v1.1 before falling back to v1.0 by default. + + GitHub issue: [rabbitmq-java-client#155](https://github.com/rabbitmq/rabbitmq-java-client/issues/155) diff --git a/release-notes/3.6.5.md b/release-notes/3.6.5.md new file mode 100644 index 0000000000..461146a8ab --- /dev/null +++ b/release-notes/3.6.5.md @@ -0,0 +1,24 @@ +## RabbitMQ 3.6.5 + +`3.6.5` is a maintenance release. + +### Server + +#### Bug Fixes + + * Loading JSON definitions that included queue leader locator policies could prevent node + from starting. + + GitHub issue: [rabbitmq-server#904](https://github.com/rabbitmq/rabbitmq-server/issues/904) + +### Management Plugin + +#### Bug Fixes + + * Rate stats returned by `GET /api/overview` were always `0.0`. + + GitHub issue: [rabbitmq-management#266](https://github.com/rabbitmq/rabbitmq-management/issues/266) + + * Some message rates chart colors were ambiguous. + + GitHub issue: [rabbitmq-management#224](https://github.com/rabbitmq/rabbitmq-management/issues/224) diff --git a/release-notes/3.6.6.md b/release-notes/3.6.6.md new file mode 100644 index 0000000000..2ee6203046 --- /dev/null +++ b/release-notes/3.6.6.md @@ -0,0 +1,234 @@ +## 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`. diff --git a/release-notes/3.6.7.md b/release-notes/3.6.7.md new file mode 100644 index 0000000000..4229651116 --- /dev/null +++ b/release-notes/3.6.7.md @@ -0,0 +1,413 @@ +## 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`. diff --git a/release-notes/3.6.8.md b/release-notes/3.6.8.md new file mode 100644 index 0000000000..47929271ac --- /dev/null +++ b/release-notes/3.6.8.md @@ -0,0 +1,59 @@ +## RabbitMQ 3.6.8 + +RabbitMQ `3.6.8` is a maintenance release that restores Erlang/OTP R16B03 and 17.x compatibility +that was unintentionally affected in [3.6.7](https://github.com/rabbitmq/rabbitmq-server/releases/tag/rabbitmq_v3_6_7) by producing that release on a significantly newer Erlang/OTP version. + +### Upgrades and Compatibility + +See the ["Upgrading clusters" section of the documentation](https://www.rabbitmq.com/clustering.html#upgrading) for general documentation on upgrades. + +This release has no incompatibilities with 3.6.7. See [3.6.7 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/rabbitmq_v3_6_7) upgrade and compatibility nodes if upgrading from an earlier release. + +### Server + +#### Bug Fixes + + * Erlang/OTP R16B03 and 17.x are supported again by producing this release on R16B03. + Note that [some configurations or community plugins](https://www.rabbitmq.com/which-erlang.html) may require a later version. + We recommend all users to upgrade to a 19.x series release if possible. See [Debian](https://www.rabbitmq.com/install-debian.html) and [RPM installation](https://www.rabbitmq.com/install-rpm.html) guides for some Erlang/OTP installation options. + + GitHub issues: [rabbitmq-server#1148](https://github.com/rabbitmq/rabbitmq-server/issues/1148), [rabbitmq-server#1149](https://github.com/rabbitmq/rabbitmq-server/issues/1149) + + +### Management Plugin + +#### Bug Fixes + + * Certain user permission violations were resulting in a 500 response and scary log entries. + + GitHub issue: [rabbitmq-management#360](https://github.com/rabbitmq/rabbitmq-management/issues/360) + + +### Management Agent Plugin + +#### Bug Fixes + + * Single atom proplist values no longer break JSON serialisation for endpoints such as `GET /api/overview`. + + GitHub issue: [rabbitmq-management-agent#34](https://github.com/rabbitmq/rabbitmq-management-agent/issues/34) + + +### Web STOMP Plugin + +#### Bug Fixes + + * Web STOMP now accepts the same TCP listener options as core RabbitMQ and other plugins. + + GitHub issue: [rabbitmq-web-stomp#69](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/69) + + +## 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.8.tar.gz`. diff --git a/release-notes/3.6.9.md b/release-notes/3.6.9.md new file mode 100644 index 0000000000..a685ff2db8 --- /dev/null +++ b/release-notes/3.6.9.md @@ -0,0 +1,63 @@ +## RabbitMQ 3.6.9 + +RabbitMQ `3.6.9` is a security and maintenance release. + +### Upgrades and Compatibility + +See the ["Upgrading clusters" section of the documentation](https://www.rabbitmq.com/clustering.html#upgrading) +for general documentation on upgrades. + +This release has no incompatibilities with 3.6.7. See [3.6.7 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/rabbitmq_v3_6_7) +upgrade and compatibility notes if upgrading from an earlier release. + + +### Management and Management Agent Plugins + +#### Security Vulnerability Patches + +Details for the CVEs below are pending publication. + + * `CVE-2017-4965`: XSS vulnerabilities in management UI + * `CVE-2017-4966`: authentication details are stored in browser-local storage without expiration + * `CVE-2017-4967`: XSS vulnerabilities in management UI + +As part of the patch addressing `CVE-2017-4966` management UI sessions were limited to 8 hours. + +#### Bug Fixes + + * Certain TCP and TLS listener configuration settings could break JSON serialisation of + `GET /api/overview` responses. + + GitHub issues: [rabbitmq-management-agent#39](https://github.com/rabbitmq/rabbitmq-management-agent/issues/39), + [rabbitmq-management#364](https://github.com/rabbitmq/rabbitmq-management/issues/364), + [rabbitmq-management-agent#36](https://github.com/rabbitmq/rabbitmq-management-agent/issues/36) + +### Federation Plugin + +#### Bug Fixes + + * More numerical types are now handled for the "hops" property. + + GitHub issue: [rabbitmq-federation#56](https://github.com/rabbitmq/rabbitmq-federation/issues/56) + + +### .NET Client + +#### Bug Fixes + + * Calling ExchangeBind more than once with the same arguments threw an exception. + + GitHub issues: [rabbitmq-dotnet-client#314](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/314), + [rabbitmq-dotnet-client#317](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/317) + + +## 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.9.tar.gz`. diff --git a/release-notes/3.7.0.md b/release-notes/3.7.0.md new file mode 100644 index 0000000000..846fcceae8 --- /dev/null +++ b/release-notes/3.7.0.md @@ -0,0 +1,475 @@ +This release introduces new features, changes to RabbitMQ distribution (e.g. what plugins ship +with it), and bug fixes. It also includes all the changes from the [3.6.x release series](https://www.rabbitmq.com/changelog.html) unless stated otherwise. + +Documentation for this release is available at [the RabbitMQ website](https://www.rabbitmq.com). + + +## Breaking Changes + + * Minimum required Erlang/OTP version is now 19.3. Recent Erlang versions can be obtained from [Erlang Solutions](https://www.erlang-solutions.com/resources/download.html), [RabbitMQ zero dependency Erlang RPM](https://github.com/rabbitmq/erlang-rpm), as well as main and backports repositories of recent Ubuntu and Debian releases. + + GitHub issues: [rabbitmq-server#1305](https://github.com/rabbitmq/rabbitmq-server/issues/1305), [rabbitmq-server#1307](https://github.com/rabbitmq/rabbitmq-server/issues/1307), [rabbitmq-common#234](https://github.com/rabbitmq/rabbitmq-common/pull/234). + + * HTTP API has minor breaking changes in several endpoints (see below). + + * .NET client is now [.NET Core-compatible](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/148). + Starting with `3.7.0`, [.NET client releases](https://github.com/rabbitmq/rabbitmq-dotnet-client/releases) are decoupled from RabbitMQ server releases and exclusively distributed via the [RabbitMQ.Client NuGet package](https://www.nuget.org/packages/RabbitMQ.Client/). + + * Starting with `3.7.0`, [Java client releases](https://github.com/rabbitmq/rabbitmq-java-client/releases) are decoupled from RabbitMQ server releases and exclusively distributed via Maven: [RabbitMQ Milestones Maven repository](https://bintray.com/rabbitmq/maven-milestones), [RabbitMQ Maven repository](https://bintray.com/rabbitmq/maven), as well as Maven Central. + + * Users tagged with `administrator` now implicitly have access to most operations in all vhosts, + including those they don't have explicit permissions for. + + GitHub issue: [rabbitmq-management#461](https://github.com/rabbitmq/rabbitmq-management/issues/461) + + * Plugins now must depend on the `rabbit` application [in order to be recognised as such by `rabbitmq-plugins list`](https://github.com/rabbitmq/rabbitmq-server/issues/1124). + Plugins that do not have the dependency will still function, can be enabled or disabled but won't appear + in `rabbitmq-plugins list` output. + + * `rabbitmq_management_visualiser` plugin [no longer ships with RabbitMQ](https://groups.google.com/forum/#!searchin/rabbitmq-users/ANN$20rabbitmq_management_visualiser%7Csort:relevance/rabbitmq-users/WiHmPcmzNtI/YJ356EW4BAAJ) and is considered to be deprecated. Installations that have this plugin enabled **must disable it before upgrading**. This can + be done using `rabbitmq-plugins disable` (which supports offline modifications) + or by updating the list of plugins in `RABBITMQ_ENABLED_PLUGINS_FILE`. + + +### Erlang/OTP 20 Support + +Erlang/OTP 20 has [breaking changes](https://groups.google.com/d/msg/rabbitmq-users/_imbAavBYjY/xHzMiGgMAgAJ) that affected RabbitMQ. + +3.7.0 supports OTP 20, including upgrades of existing installations to OTP 20. This required changes to the core and multiple plugins that ship with RabbitMQ. + +GitHub issues: [rabbitmq-server#1243](https://github.com/rabbitmq/rabbitmq-server/issues/1243), [rabbitmq-server#1250](https://github.com/rabbitmq/rabbitmq-server/pull/1250), [rabbitmq-server#1268](https://github.com/rabbitmq/rabbitmq-server/pull/1268), + [rabbitmq-server#1272](https://github.com/rabbitmq/rabbitmq-server/issues/1272), [rabbitmq-federation#58](https://github.com/rabbitmq/rabbitmq-federation/pull/58), [rabbitmq-management-agent#47](https://github.com/rabbitmq/rabbitmq-management-agent/pull/47), + [rabbitmq-management#415](https://github.com/rabbitmq/rabbitmq-management/pull/415), [rabbitmq-stomp#115](https://github.com/rabbitmq/rabbitmq-stomp/issues/115) + + +### Core Server + +#### Enhancements + + * New configuration file format + + RabbitMQ now supports a [new configuration file format](http://next.rabbitmq.com/configure.html#config-file). + The format is [based on sysctl](https://github.com/basho/cuttlefish/wiki/Cuttlefish-for-Application-Users) + and is similar to `.ini` files. Erlang term configuration files are still supported, it is also + possible to combine the two formats (use both `rabbitmq.conf` and `advanced.config`). + + Most documentation examples were updated to use both new and classic config formats. See the docs + at [next.rabbitmq.com](http://next.rabbitmq.com), in particular [the configuration guide](http://next.rabbitmq.com/configure.html), + for more information. + + GitHub issues: [rabbitmq-server#550](https://github.com/rabbitmq/rabbitmq-server/issues/550), + [rabbitmq-server#1103](https://github.com/rabbitmq/rabbitmq-server/pull/1103), + [rabbitmq-auth-backend-ldap#59](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/59) + + * Pluggable cluster peer discovery + + Automatic clustering for blank (without an existing database) nodes now can discover + peers using pluggable backends. This is a set of features adopted from the [rabbitmq-autocluster](https://github.com/rabbitmq/rabbitmq-autocluster/) plugin by Gavin Roy. + Two implementations are available out of the box: one uses a config file- and another DNS A records. + Several more are available via plugins: + + * [AWS](https://github.com/rabbitmq/rabbitmq-peer-discovery-aws) + * [Consul](https://github.com/rabbitmq/rabbitmq-peer-discovery-consul) + * [etcd](https://github.com/rabbitmq/rabbitmq-peer-discovery-etcd) + * [Kubernetes](https://github.com/rabbitmq/rabbitmq-peer-discovery-k8s) + + GitHub issues: [rabbitmq-server#486](https://github.com/rabbitmq/rabbitmq-server/issues/486), [rabbitmq-server#988](https://github.com/rabbitmq/rabbitmq-server/issues/988), [rabbitmq-server#1143](https://github.com/rabbitmq/rabbitmq-server/issues/1143) + [rabbitmq-server#1202](https://github.com/rabbitmq/rabbitmq-server/issues/1202), [rabbitmq-server#1171](https://github.com/rabbitmq/rabbitmq-server/issues/1171), [rabbitmq-server#1257](https://github.com/rabbitmq/rabbitmq-server/issues/1257), [rabbitmq-server#1247](https://github.com/rabbitmq/rabbitmq-server/issues/1247) + + * 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#1022](https://github.com/rabbitmq/rabbitmq-server/issues/1022), + [rabbitmq-server#487](https://github.com/rabbitmq/rabbitmq-server/issues/487) + + * Every virtual host now has separate message stores. + This improves resiliency and reduces contention in multitenant environments, + plus makes development of tools that perform backups and recovery of resting data easier + in the future. + + During the upgrade nodes will migrate data to this new layout. This can take some time. + To reduce the amount of time, drain as many queues as possible before upgrading, e.g. + by stopping publishers without stopping consumers for a period of time. + + GitHub issues: [rabbitmq-server#567](https://github.com/rabbitmq/rabbitmq-server/issues/567), [rabbitmq-server#1146](https://github.com/rabbitmq/rabbitmq-server/issues/1146), [rabbitmq-server#1280](https://github.com/rabbitmq/rabbitmq-server/issues/1280), + [rabbitmq-management#446](https://github.com/rabbitmq/rabbitmq-management/issues/446), [rabbitmq-server#1303](https://github.com/rabbitmq/rabbitmq-server/issues/1303), [rabbitmq-management#460](https://github.com/rabbitmq/rabbitmq-management/issues/460), [rabbitmq-server#1321](https://github.com/rabbitmq/rabbitmq-server/issues/1321) + + * New [LevelDB-based message store index plugin](https://github.com/rabbitmq/rabbitmq-msg-store-index-eleveldb). + + GitHub issue: [rabbitmq-server#838](https://github.com/rabbitmq/rabbitmq-server/issues/838) + + * Support config file path values with and without file extensions + + RabbitMQ no longer *requires* `RABBITMQ_CONFIG_FILE` values to not have a `.config` or `.conf` suffix. It will try appending both suffixes as needed when searching for suitable config file(s) to load. + + GitHub Issue: [rabbitmq-server#691](https://github.com/rabbitmq/rabbitmq-server/issues/691) + + * Operators now can configure how many concurrent connections are allowed in a vhost. + + GitHub issue: [rabbitmq-server#500](https://github.com/rabbitmq/rabbitmq-server/issues/500) + + * Operators now can configure how many queues can exist in a vhost. + + GitHub issue: [rabbitmq-server#501](https://github.com/rabbitmq/rabbitmq-server/issues/501) + + * Operator policies: their definitions are merged with the standard (user) policies and allow operators put global + limits in place, e.g. max queue length or message TTL. + + GitHub issue: [rabbitmq-server#930](https://github.com/rabbitmq/rabbitmq-server/issues/930) + + * It is now possible to configure a limited [prefetch value](https://www.rabbitmq.com/confirms.html) for all newly opened channels by default. + This helps prevent consumers that never acknowledge deliveries from exhausting server resources. + It is important to make sure that consumers that use [manual acknowledgements](https://www.rabbitmq.com/confirms.html) can cope with this + change before enabling it. + + GitHub issue: [rabbitmq-server#1367](https://github.com/rabbitmq/rabbitmq-server/issues/1367) + + * Plugin version constraints + + RabbitMQ now has a mechanism for plugin authors to indicate what versions a plugin is compatible with. + Incompatible plugins are logged and ignored. + + GitHub issues: [rabbitmq-server#591](https://github.com/rabbitmq/rabbitmq-server/issues/591), [rabbitmq-server#735](https://github.com/rabbitmq/rabbitmq-server/issues/735), [rabbitmq-server#1090](https://github.com/rabbitmq/rabbitmq-server/issues/1090) + + * Lager-based logging: less [not prone to overload](https://s3.us-east-2.amazonaws.com/ferd.erlang-in-anger/text.v1.1.0.pdf), pluggable backends, debug log level, more flexibility in configuration. + + RabbitMQ now uses [Lager](https://github.com/basho/lager) for its logging subsystem. + This brings a group of benefits: (quite verbose) debug log level, pluggable logging + backends (will require Lager plugins), and much + more flexibility in logging configuration. + + See [RabbitMQ 3.7.0 logging guide](http://next.rabbitmq.com/logging.html), [rabbitmq.conf.example](https://github.com/rabbitmq/rabbitmq-server/blob/master/docs/rabbitmq.conf.example) (new style config) + and [rabbitmq.config.example](https://github.com/rabbitmq/rabbitmq-server/blob/v3.7.x/docs/rabbitmq.config.example) (classic/advanced config format) to learn more. + + GitHub issues: [rabbitmq-server#94](https://github.com/rabbitmq/rabbitmq-server/issues/94), [rabbitmq-website#418](https://github.com/rabbitmq/rabbitmq-website/issues/418) + + * Topic authorisation built around topic exchanges. This includes support for certain variables, + such as virtual host and username. + + GitHub issues: [rabbitmq-server#505](https://github.com/rabbitmq/rabbitmq-server/issues/505), [rabbitmq-server#1085](https://github.com/rabbitmq/rabbitmq-server/issues/1085), [rabbitmq-server#1099](https://github.com/rabbitmq/rabbitmq-server/issues/1099), [rabbitmq-server#1229](https://github.com/rabbitmq/rabbitmq-server/issues/1229) + + * When queue length limit is exceeded, publishers of messages that did not fit + now can opt-in to receive a nack by opting in (configuring an overflow behavior). + When the behavior is configured to reject, messages are also discarded more efficiently. + + GitHub issue: [rabbitmq-server#995](https://github.com/rabbitmq/rabbitmq-server/issues/995) + + * [Proxy Protocol](http://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) support. + + GitHub issue: [rabbitmq-server#589](https://github.com/rabbitmq/rabbitmq-server/issues/589) + + * Deleting a vhost now will force close all connections in it. + + GitHub issue: [rabbitmq-server#627](https://github.com/rabbitmq/rabbitmq-server/issues/627) + + * Deleting a user account now will force close all of its connections. + + GitHub issue: [rabbitmq-server#628](https://github.com/rabbitmq/rabbitmq-server/issues/628) + + * OpenSUSE RPM package now supports systemd and requires Leap 42.2. + + GitHub issue: [rabbitmq-server-release#31](https://github.com/rabbitmq/rabbitmq-server-release/pull/31) + + * Standalone MacOS release now bundles Erlang 19.x. + + GitHub issue: [rabbitmq-server-release#10](https://github.com/rabbitmq/rabbitmq-server-release/issues/10) + + * First dead-lettering event now injects a separate set of top-level headers — `x-first-death-queue`, `x-first-death-reason`, + and `x-first-death-exchange` — in addition to the `x-deaths` entries. + + GitHub issue: [rabbitmq-server#1332](https://github.com/rabbitmq/rabbitmq-server/issues/1332) + + * LF and CR are now stripped off of names of queues and exchanges + + Although line feeds in names are permitted under the AMQP 0-9-1 spec, + in practice they can make it very difficult to work with queues and exchanges. + Stripping them out makes life much easier for developers. + + GitHub issue: [rabbitmq-server#710](https://github.com/rabbitmq/rabbitmq-server/issues/710) + + * Deletion of auto-delete and exclusive queues now leaves (debug) log entries + + GitHub issue: [rabbitmq-server#590](https://github.com/rabbitmq/rabbitmq-server/issues/590) + + * `rabbitmqctl set_vm_high_watermark` now produces more useful error messages when + relative values provided are outside of the `0..1.0` range. + + GitHub issue: [rabbitmq-cli#157](https://github.com/rabbitmq/rabbitmq-cli/issues/157) + +#### Bug Fixes + + * Mirrored queue could terminate if a policy is re-applied concurrently after promotion + + GitHub issue: [rabbitmq-server#803](https://github.com/rabbitmq/rabbitmq-server/issues/803) + + * Old incarnations of queue mirrors are stopped before new ones start + + GitHub issue: [rabbitmq-server#863](https://github.com/rabbitmq/rabbitmq-server/issues/863) + + * Channel interceptors are enabled/disabled together with plugins + + GitHub issue: [rabbitmq-server#559](https://github.com/rabbitmq/rabbitmq-server/issues/559) + + +### CLI Tools + +CLI tools were [significatnly redesigned](https://groups.google.com/forum/#!searchin/rabbitmq-users/ANN$20New$20CLI$20tools%7Csort:relevance/rabbitmq-users/x0XugmBt-IE/t2wdjIdSBgAJ), +now can be extended from plugins and support command +aliases (à la Git). There's also a new tool, `rabbitmq-diagnostics`, and several new commands available. + +GitHub issues: [rabbitmq-server#577](https://github.com/rabbitmq/rabbitmq-server/issues/577), [rabbitmq-cli#38](https://github.com/rabbitmq/rabbitmq-cli/issues/38), [rabbitmq-server#1085](https://github.com/rabbitmq/rabbitmq-server/issues/1085), + [rabbitmq-cli#10](https://github.com/rabbitmq/rabbitmq-cli/issues/10), [rabbitmq-cli#178](https://github.com/rabbitmq/rabbitmq-cli/issues/178), [rabbitmq-cli#180](https://github.com/rabbitmq/rabbitmq-cli/issues/180). + +#### Enhancements + + * New CLI command for closing connections in bulk (e.g. a specific vhost). + + GitHub issue: [rabbitmq-server#849](https://github.com/rabbitmq/rabbitmq-server/issues/849) + + * New CLI command for detecting potentially stuck + processes (previously invoked as `rabbit_diagnostics:maybe_stuck/0` via `rabbitmqctl eval`). + + GitHub issue: [rabbitmq-cli#144](https://github.com/rabbitmq/rabbitmq-cli/issues/144) + + * New CLI command that lists non-AMQP connections (e.g. MQTT). + + GitHub issue: [rabbitmq-cli#121](https://github.com/rabbitmq/rabbitmq-cli/issues/121) + + * New CLI command that outputs effective Erlang cookie hash. + + GitHub issue: [rabbitmq-cli#151](https://github.com/rabbitmq/rabbitmq-cli/issues/151) + + * `rabbitmq-plugins list` will now only recognise Erlang applications that depend on + `rabbit` as plugins. Plugins that lacks the dependency will still function and + can be enabled or disabled but won't be listed. + + GitHub issue: [rabbitmq-server#1124](https://github.com/rabbitmq/rabbitmq-server/issues/1124) + + + +### Management plugin + +#### Enhancements + + * Statistics database is now distributed across the cluster: each nodes stores its own stats. + + GitHub issue: [rabbitmq-management#236](https://github.com/rabbitmq/rabbitmq-management/issues/236) + +* Migration to Cowboy REST + + RabbitMQ management plugin as well as its extensions (e.g. those of + Federation and Shovel, `rabbitmq-top`) now uses [Cowboy REST](http://ninenines.eu/docs/en/cowboy/HEAD/guide/rest_handlers/) + instead of Webmachine. Cowboy is a state-of-the-art open source Erlang HTTP 1.1 server and REST micro framework + that is also used in the plugins that provide WebSocket support. + + The change is largely invisible to management UI and HTTP API + clients but there are minor changes that can affect test suites: for example, + `POST` and `PUT` responses now use `201 Created` instead of `204 No Content`. + + Plugins that extend management UI need to be ported to Cowboy REST and Cowboy 2. + + GitHub issue: [rabbitmq-management#63](https://github.com/rabbitmq/rabbitmq-management/issues/63) + + * Users tagged with `administrator` now implicitly have access to most operations in all vhosts, + including those they don't have explicit permissions for. + + GitHub issue: [rabbitmq-management#461](https://github.com/rabbitmq/rabbitmq-management/issues/461) + + * User that creates a vhost is automatically granted full permissions in it. This is a usability + improvement to the management UI. Note that this assumes that a user that has the permissions to create + vhosts also has the permission to grant themselves permissions to any vhost, so this changes nothing in + terms of security. + + GitHub issue: [rabbitmq-management#445](https://github.com/rabbitmq/rabbitmq-management/issues/445) + + * New HTTP API endpoint allows for bulk deletion of users. + + GitHub issue: [rabbitmq-management#448](https://github.com/rabbitmq/rabbitmq-management/issues/448) + + * Node endpoint now returns more information about [memory use breakdown](http://next.rabbitmq.com/memory-use.html). + This is **breaking change**. + + GitHub issue: [rabbitmq-management#499](https://github.com/rabbitmq/rabbitmq-management/issues/499) + + * Report more TLS-related values via HTTP API + + The HTTP API now reports all SSL/TLS options available for the RabbitMQ server as well as for the management plugin. + + GitHub issue: [rabbitmq-management#163](https://github.com/rabbitmq/rabbitmq-management/issues/163) + + * Topic authorisation permission management. + + GitHub issue: [rabbitmq-management#405](https://github.com/rabbitmq/rabbitmq-management/issues/405) + + * Dual IP Stack Support + + Management plugin now can be configured to use IPv6 or both IPv6 and IPv4. + + GitHub issue: [rabbitmq-management#64](https://github.com/rabbitmq/rabbitmq-management/issues/64) + + * "Get messages" in the UI now offers more requeueing options. This is a **breaking change** for HTTP API + clients as the list of accepted `ackmode` field values has [changed](https://rawcdn.githack.com/rabbitmq/rabbitmq-management/v3.7.0/priv/www/api/index.html). + + GitHub issue: [rabbitmq-management#68](https://github.com/rabbitmq/rabbitmq-management/issues/68) + + +### Java client + +These release notes are for the 4.0 release. Please see [Java client release notes](https://github.com/rabbitmq/rabbitmq-java-client/releases) +for information about later releases. + +#### Enhancements + + * Bump default TLS version to v1.2 with a fallback for older JDKs + + The Java client now attempts to use TLS v1.2 by default (which many RabbitMQ servers prefer due to vulnerabilities in TLS v1) + but falls back to TLS v1 for older JDKs such as JDK 6. + + GitHub issue: [rabbitmq-java-client#139](https://github.com/rabbitmq/rabbitmq-java-client/issues/139) + + * Begin recovery after all shutdown listeners have been given a chance to run + + GitHub issue: [rabbitmq-java-client#135](https://github.com/rabbitmq/rabbitmq-java-client/issues/135) + + * `com.rabbitmq.client.Connection` and `com.rabbitmq.client.Channel` now implement `java.io.Closeable` + + GitHub issue: [rabbitmq-java-client#131](https://github.com/rabbitmq/rabbitmq-java-client/issues/131) + + +### .NET Client + +These release notes are for the 4.0 release. Please see [.NET client release notes](https://github.com/rabbitmq/rabbitmq-dotnet-client/releases) +for information about later releases. + +#### Enhancements + + * .NET Core support (as of .NET client `4.0.0`). + + GitHub issues: [rabbitmq-dotnet-client#148](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/148), [rabbitmq-dotnet-client#213](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/213), [rabbitmq-dotnet-client#206](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/206) + + * AppVeyor CI and NuGet feed of Nightly Builds + + GitHub issue: [rabbitmq-dotnet-client#206](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/206) + + +### MQTT plugin + +#### Enhancements + + * Topic authorisation. + + GitHub issues: [rabbitmq-mqtt#95](https://github.com/rabbitmq/rabbitmq-mqtt/issues/95), [rabbitmq-server#505](https://github.com/rabbitmq/rabbitmq-server/issues/505), [rabbitmq-mqtt#114](https://github.com/rabbitmq/rabbitmq-mqtt/issues/114). + + * Client ID is propagated to [authentication backends](http://rabbitmq.com/access-control.html). + + GitHub issue: [rabbitmq-mqtt#139](https://github.com/rabbitmq/rabbitmq-mqtt/issues/139) + + * QoS 2 subscriptions are downgraded to QoS 1 + + GitHub issue: [rabbitmq-mqtt#21](https://github.com/rabbitmq/rabbitmq-mqtt/issues/21) + + +### Shovel Plugin + +#### Enhancements + + * Support for AMQP 1.0 and a foundation for more protocols supported in the future. + This means cross-protocol shoveling (AMQP 0-9-1 to AMQP 1.0 or the other way around) is now + supported. [Erlang client for AMQP 1.0](https://github.com/rabbitmq/rabbitmq-amqp1.0-client) is now also available + as a standalone project. + + GitHub issue: [rabbitmq-shovel#26](https://github.com/rabbitmq/rabbitmq-shovel/issues/26) + + * Message timestamping. + + Shovel now adds an extra header that contains the timestamp + indicating when message was shovelled. + + GitHub issue: [rabbitmq-shovel#2](https://github.com/rabbitmq/rabbitmq-shovel/issues/2) + + +### Federation Plugin + +#### Enhancements + + * New CLI command that restarts a link. + + GitHub issue: [rabbitmq-federation#45](https://github.com/rabbitmq/rabbitmq-federation/issues/45) + +#### Bug Fixes + + * Internal exchanges and queues are now cleaned up if the policy goes out of effect or the plugin is disabled. + + GitHub issue: [rabbitmq-federation#63](https://github.com/rabbitmq/rabbitmq-federation/issues/63) + +### Event Exchange Plugin + +#### Enhancements + + * Acting user information is now included into the emitted events where possible. + + GitHub issue: [rabbitmq-event-exchange#10](https://github.com/rabbitmq/rabbitmq-event-exchange/issues/10) + + +### AMQP 1.0 Plugin + +This release introduces a new sub-project, an [Erlang client for AMQP 1.0](https://github.com/rabbitmq/rabbitmq-amqp1.0-client), and AMQP 1.0 support +in the Shovel plugin. + +#### Bug Fixes + + * Transfer frames are no longer sent before credit has been granted. + + GitHub issue: [rabbitmq-amqp1.0#43](https://github.com/rabbitmq/rabbitmq-amqp1.0/issues/43) + + * Ensure messages with `uint` TTL can round trip. + + GitHub issue: [rabbitmq-amqp1.0#13](https://github.com/rabbitmq/rabbitmq-amqp1.0/issues/13) + + +### LDAP Authn/Authz Backend + +#### Enhancements + + * Topic authorisation support with variable expansion. + + GitHub issue: [rabbitmq-auth-backend-ldap#71](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/71) + + +### Delayed Message Exchange Plugin + +#### Enhancements + + * It is now possible to see how many messages are delayed in management UI + + GitHub issue: [rabbitmq-delayed-message-exchange#3](https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/issues/3) + + +### Erlang Client + +#### Bug Fixes + + * Connection operations now use a reasonable timeout. + + GitHub issue: [rabbitmq-erlang-client#85](https://github.com/rabbitmq/rabbitmq-erlang-client/issues/85) + + +### AMQP 0-9-1 Authn/Authz Backend + + * Topic authorisation support with variable expansion. + + GitHub issue: [rabbitmq-auth-backend-amqp#16](https://github.com/rabbitmq/rabbitmq-auth-backend-amqp/issues/16) + + +## 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, CLI tools or other sub-projects. Please download the archive named `rabbitmq-server-.tar.xz` from this release +page. diff --git a/release-notes/3.7.1.md b/release-notes/3.7.1.md new file mode 100644 index 0000000000..6fa0765a16 --- /dev/null +++ b/release-notes/3.7.1.md @@ -0,0 +1,121 @@ +## RabbitMQ 3.7.1 + +RabbitMQ `3.7.1` is a bug fix release. + +### Upgrades and Compatibility + +This release has no known incompatibilities with 3.7.0. See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.0) +upgrade and compatibility notes if upgrading from an earlier release. + +See the [Upgrading guide](https://www.rabbitmq.com/upgrade.html) +for general documentation on upgrades. + +See [RabbitMQ change log](https://www.rabbitmq.com/changelog.html) for release notes of other releases. + + +## Changes + +### Core Server + +#### Bug Fixes + + * Standalone Mac build now bundles a version of Erlang/OTP that is compatible with High Sierra (20.1, to be specific). + + GitHub issue: [rabbitmq/rabbitmq-server-release#68](https://github.com/rabbitmq/rabbitmq-server-release/issues/68) + + * RabbitMQ distribution now again can be built in an offline environment (one without access to the Internet). + + GitHub issue: [rabbitmq/rabbitmq-server-release#61](https://github.com/rabbitmq/rabbitmq-server-release/issues/61) + + * `total_memory_available_override_value` was not available via the [new config format](https://www.rabbitmq.com/configure.html). + + GitHub issue: [rabbitmq/rabbitmq-server#1445](https://github.com/rabbitmq/rabbitmq-server/issues/1445) + + +### CLI Tools + +#### Bug Fixes + + * `rabbitmqctl set_parameter` ignored the virtual host argument and default to the default (`/`) vhost. + + GitHub issue: [rabbitmq/rabbitmq-cli#232](https://github.com/rabbitmq/rabbitmq-cli/issues/232) + + +### AWS Peer Discovery Plugin + +#### Bug Fixes + + * HTTP client proxy settings were applied to late and thus didn't have any effect. + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-common#5](https://github.com/rabbitmq/rabbitmq-peer-discovery-common/issues/5) + + +### Consul Peer Discovery Plugin + +#### Bug Fixes + + * HTTP client proxy settings were applied to late and thus didn't have any effect. + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-common#5](https://github.com/rabbitmq/rabbitmq-peer-discovery-common/issues/5) + + +### etcd Peer Discovery Plugin + +#### Bug Fixes + + * HTTP client proxy settings were applied to late and thus didn't have any effect. + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-common#5](https://github.com/rabbitmq/rabbitmq-peer-discovery-common/issues/5) + + +### Kubernetes Peer Discovery Plugin + +#### Bug Fixes + + * HTTP client proxy settings were applied to late and thus didn't have any effect. + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-common#5](https://github.com/rabbitmq/rabbitmq-peer-discovery-common/issues/5) + + +### Management and Management Agent Plugins + +#### Bug Fixes + + * Certain node metrics in multi-cluster environment were not merged correctly + when aggregated. + + GitHub issue: [rabbitmq/rabbitmq-management#525](https://github.com/rabbitmq/rabbitmq-management/issues/525) + + +### Auth Backend HTTP Plugin + +#### Bug Fixes + + * It was not possible to configure request HTTP method using the [new style config file](https://www.rabbitmq.com/configure.html). + + GitHub issue: [rabbitmq/rabbitmq-auth-backend-http#61](https://github.com/rabbitmq/rabbitmq-auth-backend-http/issues/61) + + +### Shovel Management Plugin + +#### Bug Fixes + + * Move Messages form on individual queue page didn't provide all the Shovel parameters required as + of 3.7.0 and thus did not transfer any messages. + + GitHub issue: [rabbitmq/rabbitmq-shovel-management#24](https://github.com/rabbitmq/rabbitmq-shovel-management/issues/24) + + +### Erlang AMQP 1.0 Client + +#### Bug Fixes + + * Continuation frames without `delivery_id` were not handled correctly. + + GitHub issue: [rabbitmq/rabbitmq-amqp1.0-client#11](https://github.com/rabbitmq/rabbitmq-amqp1.0-client/issues/11) + + +## 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.7.1.tar.gz`. diff --git a/release-notes/3.7.10.md b/release-notes/3.7.10.md new file mode 100644 index 0000000000..7b38f3833e --- /dev/null +++ b/release-notes/3.7.10.md @@ -0,0 +1,248 @@ +## RabbitMQ 3.7.10 + +RabbitMQ `3.7.10` is a maintenance release. It focuses on bug fixes and minor usability improvements. + +### Compatibility Notes + +`rabbitmq-plugins` in this release will produce an extra leading line of output, as they did in `3.6.x` releases, +when `-q` is not provided. Tools that parse `rabbitmq-plugins` output should use `-q --no-table-headers` to suppress +all output meant for interactive use. + +### Erlang/OTP Compatibility Notes + +This is the [**last release to support Erlang/OTP 19.3**](https://groups.google.com/d/msg/rabbitmq-users/G4UJ9zbIYHs/qCeyjkjyCQAJ). Users are highly encouraged to +upgrade to a more recent [supported Erlang version](https://www.rabbitmq.com/which-erlang.html). + +#### Upgrading to Erlang 21.x + +When upgrading to this release **and upgrading Erlang to 21.x** at the same time, extra care has to be taken. +Since CLI tools from RabbitMQ releases older than 3.7.7 will fail on Erlang 21, RabbitMQ **must be upgraded before Erlang**. + +#### Documentation Guides and Change Log + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.0) upgrade and +compatibility notes 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. + + +## Changes + +### Core Server + +#### Bug Fixes + + * Channel stats emission performed some operations without a timeout, so listing channels or running + a node health check could block and potentially cause temporary process accumulation on the node. + + GitHub issue: [rabbitmq/rabbitmq-server#1783](https://github.com/rabbitmq/rabbitmq-server/issues/1783) + + * Virtual host process memory usage was higher than necessary. + + GitHub issue: [rabbitmq/rabbitmq-server#1770](https://github.com/rabbitmq/rabbitmq-server/pull/1770) + + * Node could run into a failed assertion after a partial partition. + + GitHub issue: [rabbitmq/rabbitmq-server#1682](https://github.com/rabbitmq/rabbitmq-server/issues/1682) + + * Topic authorisation could fail with an exception if connection terminated (cleanly or abruptly) concurrently. + + GitHub issues: [rabbitmq/rabbitmq-common#290](https://github.com/rabbitmq/rabbitmq-common/pull/290), [rabbitmq/rabbitmq-server#1538](https://github.com/rabbitmq/rabbitmq-server/issues/1538) + + * Pointing `RABBITMQ_SERVER_CODE_PATH` at a HiPE-precompiled code directory didn't result in HiPE-compiled + modules being loaded. + + GitHub issue: [rabbitmq/rabbitmq-server#1777](https://github.com/rabbitmq/rabbitmq-server/issues/1777) + +#### Enhancements + + * `kernel.inet_dist_listen_min` and `kernel.inet_dist_listen_max` could not be configured via new style config. + + GitHub issue: [rabbitmq/rabbitmq-server#1784](https://github.com/rabbitmq/rabbitmq-server/issues/1784) + + +### CLI Tools + +#### Bug Fixes + + * `rabbitmqctl list_consumers` only listed consumers on queues that had leader replica hosted on + the target node. Instead consumers of all queues in the virtual host should have been listed. + + GitHub issue: [rabbitmq/rabbitmq-cli#284](https://github.com/rabbitmq/rabbitmq-cli/issues/284) + + * A combination of `RABBITMQ_NODENAME` and `RABBITMQ_USE_LONGNAME` now works the same way for CLI + tools as prior to 3.7.0. + + GitHub issue: [rabbitmq/rabbitmq-cli#278](https://github.com/rabbitmq/rabbitmq-cli/issues/278) + + * New command: `rabbitmq-diagnostics tls_versions`, that lists TLS versions available in the runtime + on the target nodes. + + GitHub issue: [rabbitmq/rabbitmq-cli#289](https://github.com/rabbitmq/rabbitmq-cli/pull/289) + + * `rabbitmqadmin declare user` now supports providing a password hash and algorithm instead of a password. + + Contributed by John W. Higgings. + + GitHub issue: [rabbitmq/rabbitmq-management#641](https://github.com/rabbitmq/rabbitmq-management/pull/641) + + * `-q` was hardcoded for `rabbitmq-plugins` + + GitHub issue: [rabbitmq/rabbitmq-server#1781](https://github.com/rabbitmq/rabbitmq-server/issues/1781) + +#### Enhancements + + * `rabbitmqctl set_log_level` is a new command that changes effective log level of a node at runtime. + + GitHub issue: [rabbitmq/rabbitmq-cli#276](https://github.com/rabbitmq/rabbitmq-cli/issues/276) + + * `rabbitmq-diagnostics runtime_thread_stats` is a new command that outputs runtime thread state stats. + + GitHub issue: [rabbitmq/rabbitmq-cli#282](https://github.com/rabbitmq/rabbitmq-cli/pull/282) + + * `rabbitmq-plugins directories` is a new command that outputs effective [plugin directories](https://www.rabbitmq.com/plugins.html#plugin-directories). + + GitHub issue: [rabbitmq/rabbitmq-cli#261](https://github.com/rabbitmq/rabbitmq-cli/issues/261) + + * `--silent` is a new flag that combines `--quiet` and `--no-table-headers` (where applicable). + + GitHub issue: [rabbitmq/rabbitmq-cli#274](https://github.com/rabbitmq/rabbitmq-cli/issues/274) + + * Improved error messages for several common issues that can make `rabbitmq-plugins` commands fail. + + GitHub issue: [rabbitmq/rabbitmq-cli#283](https://github.com/rabbitmq/rabbitmq-cli/pull/283) + + +### Management and Management Agent Plugins + +#### Bug Fixes + + * Exported definitions for an individual virtual host were missing [runtime parameters](https://www.rabbitmq.com/parameters.html). + + GitHub issue: [rabbitmq/rabbitmq-management#628](https://github.com/rabbitmq/rabbitmq-management/issues/628) + + * Filter inputs now escape incomplete HTML tags from their values. Previously they only stripped complete and valid tags. + Note that the inputs are not populated from request parameters and have to be manually populated by the user. + + GitHub issue: [rabbitmq/rabbitmq-management#646](https://github.com/rabbitmq/rabbitmq-management/issues/646) + + * Exclusive queue owner connection now again can be navigated to using a link on the queue page. + + GitHub issue: [rabbitmq/rabbitmq-management#467](https://github.com/rabbitmq/rabbitmq-management/issues/467) + +#### Enhancements + + * More TLS options, including cipher suites, now can be configured using new style config format. + + GitHub issue: [rabbitmq/rabbitmq-management#643](https://github.com/rabbitmq/rabbitmq-management/issues/643) + + * Metric chart ranges now only list options for which enough data is [retained](https://www.rabbitmq.com/management.html#sample-retention). + + GitHub issue: [rabbitmq/rabbitmq-management#635](https://github.com/rabbitmq/rabbitmq-management/issues/635) + + +### STOMP Plugin + +#### Enhancements + + * TCP listener options now can be configured using new style configuration format. + + GitHub issue: [rabbitmq/rabbitmq-stomp#129](https://github.com/rabbitmq/rabbitmq-stomp/issues/129) + + +### Shovel Plugin + +#### Bug Fixes + + * Backported several stability improvements for interaction with AMQP 1.0 endpoints from the 3.8 development + branch (master). + + Changes: [one](https://github.com/rabbitmq/rabbitmq-amqp1.0-client/commit/8f0f7df34904abdee67e9764406837a5a7ecc091), [two](https://github.com/rabbitmq/rabbitmq-amqp1.0-common/commit/43bf4486fe6b993e5bc000056e78767889a23bbe) + + * Shovels now can be created with blank publish properties. + + GitHub issue: [rabbitmq/rabbitmq-shovel#46](https://github.com/rabbitmq/rabbitmq-shovel/issues/46) + + +### Consistent Hash Exchange Plugin + +#### Bug Fixes + + * The plugin relied on a non-deterministic ordering behavior when bindings were removed (e.g. because a queue was + deleted). This could lead to inconsistent hash ring state and affect routing behavior. + + GitHub issue: [rabbitmq/rabbitmq-consistent-hash-exchange#40](http://github.com/rabbitmq/rabbitmq-consistent-hash-exchange/issues/40) + + +### Web STOMP Plugin + +#### Bug Fixes + + * When `web_mqtt.ssl.listener` is set, TLS certificate, key and other TLS settings were ignored. + + GitHub: [rabbitmq/rabbitmq-web-stomp#104](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/104) + +#### Enhancements + + * [Proxy protocol](https://www.rabbitmq.com/networking.html#proxy-protocol) support. + + GitHub issue: [rabbitmq/rabbitmq-web-stomp#84](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/84) + + * TCP (as in, non-TLS) listener now can be disabled. + + GitHub issue: [rabbitmq/rabbitmq-web-stomp#100](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/100) + + * More TLS options, including cipher suites, now can be configured using new style config format. + + GitHub issue: [rabbitmq/rabbitmq-web-stomp#101](https://github.com/rabbitmq/rabbitmq-web-stomp/pull/101) + + * Proxy protocol now can be enabled via new style config format. + + GitHub issue: [rabbitmq/rabbitmq-web-stomp#99](https://github.com/rabbitmq/rabbitmq-web-stomp/pull/99) + + * Resource-driven flow control support. + + GitHub issue: [rabbitmq/rabbitmq-web-stomp#40](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/40) + + +### Web MQTT Plugin + +#### Bug Fixes + + * When `web_mqtt.ssl.listener` is set, TLS certificate, key and other TLS settings were ignored. + + GitHub issue: [rabbitmq/rabbitmq-web-mqtt#48](https://github.com/rabbitmq/rabbitmq-web-mqtt/issues/48) + + * Last Will message was not sent when connection that had it configured was closed cleanly. + + Contributed by Karen Mae Bajador. + + GitHub issue: [rabbitmq/rabbitmq-web-mqtt#52](https://github.com/rabbitmq/rabbitmq-web-mqtt/pull/52) + +#### Enhancements + + * [Proxy protocol](https://www.rabbitmq.com/networking.html#proxy-protocol) support. + + GitHub issue: [rabbitmq/rabbitmq-web-mqtt#29](https://github.com/rabbitmq/rabbitmq-web-mqtt/issues/29) + + * TCP (as in, non-TLS) listener now can be disabled. + + GitHub issue: [rabbitmq/rabbitmq-web-mqtt#31](https://github.com/rabbitmq/rabbitmq-web-mqtt/issues/31) + + * More TLS options, including cipher suites, now can be configured using new style config format. + + GitHub issue: [rabbitmq/rabbitmq-web-mqtt#45](https://github.com/rabbitmq/rabbitmq-web-mqtt/pull/45) + + * Proxy protocol now can be enabled via new style config format. + + GitHub issue: [rabbitmq/rabbitmq-web-mqtt#46](https://github.com/rabbitmq/rabbitmq-web-mqtt/issues/46) + + * Resource-driven flow control support. + + GitHub issue: [rabbitmq/rabbitmq-web-mqtt#40](https://github.com/rabbitmq/rabbitmq-web-mqtt/pull/40) + +## 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.7.10.tar.gz`. diff --git a/release-notes/3.7.11.md b/release-notes/3.7.11.md new file mode 100644 index 0000000000..c93941c337 --- /dev/null +++ b/release-notes/3.7.11.md @@ -0,0 +1,139 @@ +## RabbitMQ 3.7.11 + +RabbitMQ `3.7.11` is a maintenance release. It focuses on bug fixes and +minor usability improvements. This is the first release to **require Erlang/OTP 20.3+**. + +### Erlang/OTP Compatibility Notes + +Per the new Erlang version support policy in effect starting with January 2019, +this release [**drops support for Erlang/OTP 19.3**](https://groups.google.com/d/msg/rabbitmq-users/G4UJ9zbIYHs/qCeyjkjyCQAJ). Make sure a [supported Erlang version](https://www.rabbitmq.com/which-erlang.html) is used before upgrading. + +[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 `20.3.x` and `21.x`. + +### Compatibility Notes + + * This release requires Erlang/OTP 20.3 or later. + * Default CLI command exit code has changed from 70 (`EX_UNAVAILABLE`) to 69 (`EX_SOFTWARE`). + This does not affect all commands and all error conditions, e.g. argument validation still uses code 64 (`EX_USAGE`) + +#### Upgrading to Erlang 21.x + +When upgrading to this release **and upgrading Erlang to 21.x** at the same time, extra care has to be taken. +Since CLI tools from RabbitMQ releases older than 3.7.7 will fail on Erlang 21, RabbitMQ **must be upgraded before Erlang**. + +#### Documentation Guides and Change Log + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.0) upgrade and +compatibility notes 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. + + +## Changes + +### Core Server + +#### Erlang Version Requirement + + * This release **requires Erlang/OTP `20.3.x`** or `21.x`. + + GitHub issue: [rabbitmq/rabbitmq-server#1820](https://github.com/rabbitmq/rabbitmq-server/issues/1820) + +#### Bug Fixes + + * Number of socket file descriptors used is now correctly incremented. + + GitHub issue: [rabbitmq/rabbitmq-management#652](https://github.com/rabbitmq/rabbitmq-management/issues/652) + + * Configuration schema file was not copied during upgrades. + + GitHub issues: [rabbitmq/rabbitmq-server#1843](https://github.com/rabbitmq/rabbitmq-server/issues/1843) + + * First heartbeat frame on a successfully negotiated connection is now sent after a half of the negotiated heartbeat + timeout. Previously it was sent after a complete timeout. Since most connections have other activity after + connection handshake is complete, this didn't have any visible effects on most systems. + + GitHub issue: [rabbitmq/rabbitmq-common#293](https://github.com/rabbitmq/rabbitmq-common/pull/293) + + * If Syslog was configured to use TCP, the node could fail to start. + + GitHub issue: [rabbitmq/rabbitmq-server#1850](https://github.com/rabbitmq/rabbitmq-server/issues/1850) + +### CLI Tools + +#### Enhancements + + * Several new `rabbitmq-diagnostics` commands useful for diagnostics and health checks. + + GitHub issues: [rabbitmq/rabbitmq-cli/issues/292](https://github.com/rabbitmq/rabbitmq-cli/issues/292), [rabbitmq/rabbitmq-cli#303](https://github.com/rabbitmq/rabbitmq-cli/pull/303), [rabbitmq/rabbitmq-cli#303](https://github.com/rabbitmq/rabbitmq-cli/pull/303) + + * All CLI tools now can display command-specific help with `[command name] --help`, e.g. `rabbitmqctl set_policy --help` + + GitHub issue: [rabbitmq/rabbitmq-cli#306](https://github.com/rabbitmq/rabbitmq-cli/pull/306) + + +### Management Plugin + +#### Enhancements + + * `rabbitmqadmin` now defines an exception not available in Python 2, making TCP connection + error reporting more similar with that on Python 3. + + GitHub issue: [rabbitmq/rabbitmq-management#647](https://github.com/rabbitmq/rabbitmq-management/issues/647) + + +### AWS Peer Discovery Plugin + +#### Bug Fixes + + * When an EC2 API endpoint could not be reached, the plugin terminated in a way that + brought down the entire node with it. + + GitHib issue: [rabbitmq/rabbitmq-peer-discovery-aws#25](https://github.com/rabbitmq/rabbitmq-peer-discovery-aws/issues/25) + + +### STOMP Plugin + +#### Enhancements + + * Avoid using a private socket API function that's likely going away in Erlang 22. + + GitHub issue: [rabbitmq/rabbitmq-stomp#128](https://github.com/rabbitmq/rabbitmq-stomp/pull/128) + + * Default topic exchange used by the plugin is now configurable. + + GitHub issue: [rabbitmq/rabbitmq-stomp#94](https://github.com/rabbitmq/rabbitmq-stomp/issues/94) + + +### MQTT Plugin + +#### Enhancements + + * Avoid using a private socket API function that's likely going away in Erlang 22. + + GitHub issue: [rabbitmq/rabbitmq-mqtt#171](https://github.com/rabbitmq/rabbitmq-mqtt/pull/171) + + +### AuthN/AuthZ Backend Cache Plugin + +#### Bug Fixes + + * The new style config format did not support `auth_cache.cache_refusals` + + GitHub issue: [rabbitmq/rabbitmq-auth-backend-cache#17](https://github.com/rabbitmq/rabbitmq-auth-backend-cache/issues/17) + +### Erlang Client + +#### Enhancements + + * Avoid using a private socket API function that's likely going away in Erlang 22. + + GitHub issue: [rabbitmq/rabbitmq-erlang-client#114](https://github.com/rabbitmq/rabbitmq-erlang-client/pull/114) + + + +## 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.7.11.tar.gz`. diff --git a/release-notes/3.7.12.md b/release-notes/3.7.12.md new file mode 100644 index 0000000000..efd142b174 --- /dev/null +++ b/release-notes/3.7.12.md @@ -0,0 +1,209 @@ +## RabbitMQ 3.7.12 + +RabbitMQ `3.7.12` is a maintenance release. It focuses on bug fixes and +minor usability improvements. This release [**requires Erlang/OTP 20.3**](https://www.rabbitmq.com/which-erlang.html) or later. + +### Erlang/OTP Compatibility Notes + +Per the new Erlang version support policy in effect starting with January 2019, +this release [**no longer supports Erlang/OTP 19.3**](https://groups.google.com/d/msg/rabbitmq-users/G4UJ9zbIYHs/qCeyjkjyCQAJ). +Make sure a [supported Erlang version](https://www.rabbitmq.com/which-erlang.html) is used before upgrading. + +[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 `20.3.x` and `21.x`. + +### Compatibility Notes + +#### Minimum Required Erlang Version + +This release requires Erlang/OTP 20.3 or later. + +#### `rabbitmqctl shutdown` Behavior with Remote Nodes + +In earlier releases, when `rabbitmqctl shutdown` was used against a remote node, it would successfully +shut down the node but won't actually wait for its termination because the pid file path +reported by the remote node is not available locally. This is because `rabbitmqctl shutdown` was +meant to be used as a `rabbitmqctl stop` alternative that doesn't require the caller to know the +pid file path. + +Starting with this version, `rabbitmqctl shutdown` will refuse to run against a remote node +by default. If the earlier behavior is desired and expected, it can be restored by passing `--no-wait`: + +``` shell +# will refuse to run against a remote node in --wait mode as of 3.7.12 +# and --wait is on by default +rabbitmqctl shutdown -n rabbit@hostname.different.from.local --longnames + +# behaves the same way as in 3.7.0 through 3.7.11 +rabbitmqctl shutdown -n rabbit@hostname.different.from.local --longnames --no-wait +``` + +#### `inet_dist_listen_min` and `inet_dist_listen_max` in New Style Configuration + +`inet_dist_listen_min` and `inet_dist_listen_max` were **removed from new style configuration**. +They wouldn't have any effect due to how configuration translation is performed. +Use `advanced.config` or the `RABBITMQ_DIST_PORT` env variable to configure these settings: + +``` erlang +[ + {kernel, [ + {inet_dist_listen_min, 33672}, + {inet_dist_listen_max, 33672} + ]}, + {rabbit, [ + %% ... + ]} +]. +``` + +Note that some runtime parameters, e.g. `net_ticktime`, can be set via new style configuration. +This change is specific to the distirbution port settings. + +#### Upgrading to Erlang 21.x + +When upgrading to this release **and upgrading Erlang to 21.x** at the same time, extra care has to be taken. +Since CLI tools from RabbitMQ releases older than 3.7.7 will fail on Erlang 21, +RabbitMQ **must be upgraded before Erlang**. + +#### Upgrade Doc Guides and Change Log + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.0) upgrade and +compatibility notes 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. + +### 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 + +### Core Server + +#### Bug Fixes + + * When a node was configured to allow for unlimited frame size, an empty message published + via HTTP API resulted in an infinite recursion loop in the parser. + + GitHub issue: [rabbitmq/rabbitmq-common#299](https://github.com/rabbitmq/rabbitmq-common/issues/299) + + * `inet_dist_listen_min` and `inet_dist_listen_max` were **removed from new style configuration**. + They wouldn't have any effect due to how configuration translation is performed. + Use `advanced.config` or the `RABBITMQ_DIST_PORT` env variable to configure these settings: + + ``` erlang + [ + {kernel, [ + {inet_dist_listen_min, 33672}, + {inet_dist_listen_max, 33672} + ]}, + {rabbit, [ + %% ... + ]} + ]. + ``` + + Note that some runtime parameters, e.g. `net_ticktime`, can be set via new style configuration. + This change is specific to the distirbution port settings. + + Contributed by [Gabriele Santomaggio](https://github.com/Gsantomaggio). + + GitHub issue: [rabbitmq/rabbitmq-server#1881](https://github.com/rabbitmq/rabbitmq-server/pull/1881) + + +### CLI Tools + +#### Bug Fixes + + * `rabbitmqctl` and other CLI tools could fail when used with nodes using long node names. + + GitHub issue: [rabbitmq/rabbitmq-cli#311](https://github.com/rabbitmq/rabbitmq-cli/issues/311) + + * `rabbitmqctl --help` now exits with exit code of 0. `rabbitmqctl` (no arguments) uses code + 64 (`EX_USAGE`). + + GitHub issue: [rabbitmq/rabbitmq-cli#307](https://github.com/rabbitmq/rabbitmq-cli/issues/307) + +#### Enhancements + + * `rabbitmqctl shutdown` now requires the user to opt in and provide `--no-wait` + to be used with remote nodes. There are no behavior changes when the command is invoked + against a locally running node. See also the compatibility note to this release. + + GitHub issue: [rabbitmq/rabbitmq-cli#309](https://github.com/rabbitmq/rabbitmq-cli/pull/309) + + +### Management Plugin + +#### Bug Fixes + + * Large HTTP API request bodies (e.g. importing a large [definition file](https://www.rabbitmq.com/backup.html#rabbitmq-definitions)) + were not guaranteed to be fully consumed before parsing. + + GitHub issue: [rabbitmq/rabbitmq-management#657](https://github.com/rabbitmq/rabbitmq-management/issues/657) + + * `management_db_cache_multiplier` configuration setting was ignored due to a typo. + + Contributed by [Josh Soref](https://github.com/jsoref). + + GitHub issue: [rabbitmq/rabbitmq-management#659](https://github.com/rabbitmq/rabbitmq-management/pull/659) + + +### MQTT Plugin + +#### Enhancements + + * When a retained message is published, its topic is now correctly translated + to use MQTT topic separators (a slash) regardless of the internal representation. + + Contributed by [Ryan Sandbach](https://github.com/rsandbach). + + GitHub issue: [rabbitmq/rabbitmq-mqtt#175](https://github.com/rabbitmq/rabbitmq-mqtt/issues/175) + + * When a client sent a duplicate `CONNECT` frame (tried to "reauthenticate"), connection failed + [with a scary looking exception](https://groups.google.com/d/msg/rabbitmq-users/1MBdymMAZzw/HQLDwI_8GAAJ). + + Now the frame is ignored (reauthentication is therefore still impossible) and a warning is logged + but the connection is kept open. + + Kudos to Grigory Starinkin for confirming our original hypothesis and providing the steps + to reproduce. + + GitHub issue: [rabbitmq/rabbitmq-mqtt#179](https://github.com/rabbitmq/rabbitmq-mqtt/issues/179). + +#### Bug Fixes + + * Clearer and shorter log messages when a socket write fails. + + GitHub issue: [rabbitmq/rabbitmq-mqtt#178](https://github.com/rabbitmq/rabbitmq-mqtt/pull/178) + + +### LDAP Plugin + +#### Enhancements + + * The plugin now uses its own [logging sink](https://www.rabbitmq.com/logging.html#advanced-configuration), which makes it possible to direct + all LDAP logs to a separate file. + + Contributed by [Yury Alioshinov](https://github.com/Haster2004). + + GitHub issue: [rabbitmq/rabbitmq-auth-backend-ldap#105](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/pull/105) + + +## Shovel Plugin + +#### Bug Fixes + + * Configurating a Shovel with a valid AMQP 1.0 destination could fail with an exception. + + GitHub issue: [rabbitmq/rabbitmq-shovel#50](https://github.com/rabbitmq/rabbitmq-shovel/issues/50) + + +## 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.7.12.tar.gz`. diff --git a/release-notes/3.7.13.md b/release-notes/3.7.13.md new file mode 100644 index 0000000000..800ca28fea --- /dev/null +++ b/release-notes/3.7.13.md @@ -0,0 +1,177 @@ +## RabbitMQ 3.7.13 + +RabbitMQ `3.7.13` is a maintenance release. It focuses on bug fixes and +minor usability improvements. This release [**requires Erlang/OTP 20.3**](https://www.rabbitmq.com/which-erlang.html) or later. + +### Erlang/OTP Compatibility Notes + +Per the new Erlang version support policy in effect starting with January 2019, +this release [**no longer supports Erlang/OTP 19.3**](https://groups.google.com/d/msg/rabbitmq-users/G4UJ9zbIYHs/qCeyjkjyCQAJ). +Make sure a [supported Erlang version](https://www.rabbitmq.com/which-erlang.html) is used before upgrading. + +[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 `20.3.x` and `21.x`. + +### Compatibility Notes + +#### Minimum Required Erlang Version + +This release requires Erlang/OTP 20.3 or later. + +#### Upgrading to Erlang 21.x + +When upgrading to this release **and upgrading Erlang to 21.x** at the same time, extra care has to be taken. +Since CLI tools from RabbitMQ releases older than 3.7.7 will fail on Erlang 21, +RabbitMQ **must be upgraded before Erlang**. + +#### Upgrade Doc Guides and Change Log + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.0) upgrade and +compatibility notes 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. + +### 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 + +### Core Server + +#### Bug Fixes + + * Binding and unbinding operations could fail with a `NOT_FOUND` channel exception if binding tables + got out of sync. + + GitHub issues: [rabbitmq/rabbitmq-server#1873](https://github.com/rabbitmq/rabbitmq-server/issues/1873), [rabbitmq/rabbitmq-server#1878](https://github.com/rabbitmq/rabbitmq-server/pull/1878), [rabbitmq/rabbitmq-server#1884](https://github.com/rabbitmq/rabbitmq-server/pull/1884) + + * Eliminated an accumulating inefficiency around topic-based authorisation (only topic + exchanges are affected). + + Contributed by [Ayanda Dube](https://github.com/Ayanda-D). + + GitHub issue: [rabbitmq/rabbitmq-server#1886](https://github.com/rabbitmq/rabbitmq-server/pull/1886) + + * TCP connections could accumulate when [Proxy protocol](https://www.rabbitmq.com/networking.html#proxy-protocol) + was enabled and proxy's TCP connections were closed before Proxy protocol header was received and parsed. + + GitHub issue: [rabbitmq/rabbitmq-server#1901](https://github.com/rabbitmq/rabbitmq-server/issues/1901) + + * When a queue was deleted, [internal events](https://github.com/rabbitmq/rabbitmq-event-exchange) + about consumer cancellation (`consumer.deleted`) were not emitted. + + GitHub issue: [rabbitmq/rabbitmq-server#1892](https://github.com/rabbitmq/rabbitmq-server/issues/1892) + + * Connection tracking subsystem failed and logged an exception when connection was closed before it could + be registered. + + GitHub issue: [rabbitmq/rabbitmq-server#1898](https://github.com/rabbitmq/rabbitmq-server/pull/1898) + +#### Enhancements + + * Exclusive queue property mismatch during queue declaration now produces a more helpful + error message. + + GitHub issue: [rabbitmq/rabbitmq-server#1887](https://github.com/rabbitmq/rabbitmq-server/issues/1887) + + * Erlang 22 forward compatibility: support more cipher suites for config value encryption. + + GitHub issue: [rabbitmq/rabbitmq-common#307](https://github.com/rabbitmq/rabbitmq-common/pull/307) + + +### CLI Tools + +#### Enhancements + + * `rabbitmqctl shutdown` in `--wait` mode now uses node names instead of `gethostname(2)` when inferring + if target node is remote. This is more reliable as it takes explicitly set node names and `ERL_INETRC` + settings into account. In addition, it treats all nodes that have `@localhost` in the name as local + (running on the same host). + + GitHub issue: [rabbitmq/rabbitmq-cli#327](https://github.com/rabbitmq/rabbitmq-cli/issues/327). + + * `rabbitmqctl forget_cluster_node` produces a more helpful error message when asked to remove a node with running + RabbitMQ application. + + GitHub issue: [rabbitmq/rabbitmq-cli#323](https://github.com/rabbitmq/rabbitmq-cli/issues/323) + + * New command, `rabbitmqctl force_gc`, that requests fullsweep GC for all processes on the target node. + + GitHub issue: [rabbitmq/rabbitmq-cli#319](https://github.com/rabbitmq/rabbitmq-cli/issues/319) + + * All RabbitMQ CLI tools now support `--version` as well as `version` as a command. + + GitHub issue: [rabbitmq/rabbitmq-cli#314](https://github.com/rabbitmq/rabbitmq-cli/issues/314) + + +### Management Plugin + +#### Bug Fixes + + * `rabbitmqadmin`'s' `declare vhost_limit` and `delete vhost_limit` did not support the vhost + parameter. + + GitHub issue: [rabbitmq/rabbitmq-management#667](https://github.com/rabbitmq/rabbitmq-management/issues/667) + + * `PUT /api/vhost-limits/{vhost}/{limit}` documentation was incorrect and used confusing language. + + GitHub issue: [rabbitmq/rabbitmq-management#667](https://github.com/rabbitmq/rabbitmq-management/issues/667) + + +### Debian and RPM Packages + +#### Bug Fixes + + * Debian and RPM packages no longer source `/etc/profile` in post installation scripts. + + GitHub issue: [rabbitmq/rabbitmq-server-release#93](https://github.com/rabbitmq/rabbitmq-server-release/issues/93) + + +### Federation Plugin + +#### Bug Fixes + + * Federation links could fail to start with an `{error, already_started} `. + + GitHub issue: [rabbitmq/rabbitmq-federation#84](https://github.com/rabbitmq/rabbitmq-federation/issues/84) + + +### Shovel Plugin + +#### Bug Fixes + + * AMQP 1.0 endpoint URIs could fail to parse. + + GitHub issue: [rabbitmq/rabbitmq-amqp1.0-client#23](https://github.com/rabbitmq/rabbitmq-amqp1.0-client/issues/23) + + +### HTTP AuthN/AuthZ Backend Plugin + +#### Enhnanceements + + * User tags are now passed to virtual host, resource and topic authorisation check endpoints as a space-separated string. + + Contributed by [romerod](https://github.com/romerod). + + GitHub issue: [rabbitmq/rabbitmq-auth-backend-http#79](https://github.com/rabbitmq/rabbitmq-auth-backend-http/issues/79) + + +### Trust Store Plugin + +#### Bug Fixes + + * HTTP provider did not correctly update `If-Modified-Since` request header when certificates + (and thus their `Last-Modified` response header) were updated. + + GitHub issue: [rabbitmq/rabbitmq-trust-store#68](https://github.com/rabbitmq/rabbitmq-trust-store/issues/68) + + +## 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.7.13.tar.gz`. diff --git a/release-notes/3.7.14.md b/release-notes/3.7.14.md new file mode 100644 index 0000000000..13547c32f2 --- /dev/null +++ b/release-notes/3.7.14.md @@ -0,0 +1,100 @@ +## RabbitMQ 3.7.14 + +RabbitMQ `3.7.14` is a maintenance release. It focuses on bug fixes and minor usability improvements. This release [**requires Erlang/OTP 20.3**](https://www.rabbitmq.com/which-erlang.html) or later. + +### Erlang/OTP Compatibility Notes + +Per the new Erlang version support policy in effect starting with January 2019, +this release [**no longer supports Erlang/OTP 19.3**](https://groups.google.com/d/msg/rabbitmq-users/G4UJ9zbIYHs/qCeyjkjyCQAJ). +Make sure a [supported Erlang version](https://www.rabbitmq.com/which-erlang.html) is used before upgrading. + +[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 `20.3.x` and `21.x`. + +### Compatibility Notes + +#### Minimum Required Erlang Version + +This release requires Erlang/OTP 20.3 or later. + +#### Upgrading to Erlang 21.x + +When upgrading to this release **and upgrading Erlang to 21.x** at the same time, extra care has to be taken. +Since CLI tools from RabbitMQ releases older than 3.7.7 will fail on Erlang 21, +RabbitMQ **must be upgraded before Erlang**. + +#### Upgrade Doc Guides and Change Log + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.0) upgrade and compatibility notes 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. + +### 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 + +### Core Server + +#### Enhancements + + * TCP and TLS listeners are started later to reduce the probability of clients connecting to and performing operations + on a node that's not fully initialised. + + GitHub issue: [rabbitmq/rabbitmq-server#1869](https://github.com/rabbitmq/rabbitmq-server/issues/1869) + + * Reduced schema data store locking for binding operations. + + GitHub issue: [rabbitmq/rabbitmq-server#1900](https://github.com/rabbitmq/rabbitmq-server/pull/1900) + + +### CLI Tools + +#### Enhancements + + * More informative and user-friendly help messages produced by `help` and `help [command]` commands. + + GitHub issue: [rabbitmq/rabbitmq-cli#332](https://github.com/rabbitmq/rabbitmq-cli/pull/332) + + +### Management Plugin + +#### Bug Fixes + + * Groups of upstream URIs were not formatted correctly. + + Contributed by [Grigory Starinkin](https://github.com/velimir). + + GitHub issue: [rabbitmq/rabbitmq-management#683](https://github.com/rabbitmq/rabbitmq-management/pull/683) + +#### Enhancements + + * `management.load_definitions` now can point at a directory of definition files, not just a single file. + + GitHub issue: [rabbitmq/rabbitmq-management#665](https://github.com/rabbitmq/rabbitmq-management/issues/665) + + +### Federation Plugin + +#### Bug Fixes + + * Federation links could fail to start with an `{error, already_started}`. + + GitHub issues: [rabbitmq/rabbitmq-federation#84](https://github.com/rabbitmq/rabbitmq-federation/issues/84), [rabbitmq/rabbitmq-federation#87](https://github.com/rabbitmq/rabbitmq-federation/pull/87) + + +### RPM Package + +#### Bug Fixes + + * RPM package post-install scripts now restart the node in case it was running before the upgrade. + + GitHub issue: [rabbitmq/rabbitmq-server-release#94](https://github.com/rabbitmq/rabbitmq-server-release/issues/94) + + +## 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.7.14.tar.gz`. diff --git a/release-notes/3.7.15.md b/release-notes/3.7.15.md new file mode 100644 index 0000000000..a0f3d9903c --- /dev/null +++ b/release-notes/3.7.15.md @@ -0,0 +1,255 @@ +## RabbitMQ 3.7.15 + +RabbitMQ `3.7.15` is a maintenance release. It focuses on bug fixes and minor usability improvements. +This release [**requires Erlang/OTP 20.3**](https://www.rabbitmq.com/which-erlang.html) or later. +It is also the first release to support Erlang 22. + +### Erlang/OTP Compatibility Notes + +Per the new Erlang version support policy in effect starting with January 2019, +this release [**no longer supports Erlang/OTP 19.3**](https://groups.google.com/d/msg/rabbitmq-users/G4UJ9zbIYHs/qCeyjkjyCQAJ). +Make sure a [supported Erlang version](https://www.rabbitmq.com/which-erlang.html) is used before upgrading. + +[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 `20.3.x` and `21.x`. + +### Compatibility Notes + +#### Minimum Required Erlang Version + +This release requires Erlang/OTP 20.3 or later. + +#### Upgrading to Erlang 21.x + +When upgrading to this release **and upgrading Erlang to 21.x** at the same time, extra care has to be taken. +Since CLI tools from RabbitMQ releases older than 3.7.7 will fail on Erlang 21, +RabbitMQ **must be upgraded before Erlang**. + +#### Upgrade Doc Guides and Change Log + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.0) upgrade +and compatibility notes 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. + +### 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 + +### Core Server + +#### Bug Fixes + + * `rabbitmq.conf` validation errors on startup unintentionally lacked a lot of relevant details. + + Contributed by Grigory Starinkin. + + GitHub issue: [rabbitmq/rabbitmq-server#1985](https://github.com/rabbitmq/rabbitmq-server/issues/1985) + + * Message store compaction could enter a race condition with queue operations. + + GitHub issue: [rabbitmq/rabbitmq-server#2000](https://github.com/rabbitmq/rabbitmq-server/issues/2000) + + * Internal schema data store consistency checks used an on-disk location which could be unintentionally + preserved between deployments and make subsequent deployments fail. Now an entirely in-memory set of tables + is used for schema consistency checks. + + GitHub issue: [rabbitmq/rabbitmq-server#1960](https://github.com/rabbitmq/rabbitmq-server/pull/1960) + + * When [publisher confirms](https://www.rabbitmq.com/confirms.html) had to send both positive and negative acknowledgements around the same time, + it could be done in a way that would violate expectations of most client libraries. + + GitHub issue: [rabbitmq/rabbitmq-server#1719](https://github.com/rabbitmq/rabbitmq-server/pull/1719) + + * Policy validation could allow invalid values in certain cases. + + GitHub issue: [rabbitmq/rabbitmq-server#1999](https://github.com/rabbitmq/rabbitmq-server/pull/1999) + + * `amq.rabbitmq.log` exchage was lazily initialised and could be temporarily unavailable after node start. + + GitHub issue: [rabbitmq/rabbitmq-server#1973](https://github.com/rabbitmq/rabbitmq-server/issues/1973) + + * Clearing a policy with `overflow` behaviour or removing the key from it did not + roll back the overflow behaviour to `drop-head` (the default). + + GitHub issue: [rabbitmq/rabbitmq-server#1980](https://github.com/rabbitmq/rabbitmq-server/issues/1980) + + * Missing `getconf` command (used to fetch platform's memory page size) is now handled more gracefully + with a default value. + + GitHub issue: [rabbitmq/rabbitmq-common#318](https://github.com/rabbitmq/rabbitmq-common/issues/318) + + +#### Enhancements + + * Initial Erlang 22 compatibility. + + GitHub issues: [rabbitmq/rabbitmq-common#315](https://github.com/rabbitmq/rabbitmq-common/issues/315), + [rabbitmq/rabbitmq-common#313](https://github.com/rabbitmq/rabbitmq-common/pull/313), + [rabbitmq/rabbitmq-common#323](https://github.com/rabbitmq/rabbitmq-common/pull/323) + + * Connection tracking is now more efficient, reducing node load + and internal event backlog in case of [high connection churn](https://www.rabbitmq.com/networking.html#dealing-with-high-connection-churn). + + GitHub issues: [rabbitmq/rabbitmq-server#1971](https://github.com/rabbitmq/rabbitmq-server/pull/1971), + [rabbitmq/rabbitmq-server#1975](https://github.com/rabbitmq/rabbitmq-server/pull/1975) + + +### Management Plugin + +#### Bug Fixes + + * Enabled kernel sendfile for HTTP API documentation pages could lead to leaked file descriptors + when those pages are accessed repeatedly (e.g. a tab is always open for weeks and weeks). + The plugin now disables sendfile for those static files by default. It can be manually enabled + via configuration as needed. + + GitHub issue: [rabbitmq/rabbitmq-management#698](https://github.com/rabbitmq/rabbitmq-management/pull/698) + + * Listing permissions could result in a 500 response. + + GitHub issue: [rabbitmq/rabbitmq-management#688](https://github.com/rabbitmq/rabbitmq-management/pull/688) + + * When CORS headers were enabled, binding endpoints were inaccessible due to an exception. + + GitHub issue: [rabbitmq/rabbitmq-management#687](https://github.com/rabbitmq/rabbitmq-management/pull/687) + + * An option to display message rates for the last 8 and 24 hours was hidden in the UI even when data + for those time intervals was available. + + GitHub issue: [rabbitmq/rabbitmq-management#693](https://github.com/rabbitmq/rabbitmq-management/pull/693) + + * Information unit suffix incorrectly suggested that values were powers of 10 (gigabyte) instead of + power of 2 (gibibyte). + + GitHub issue: [rabbitmq/rabbitmq-management#694](https://github.com/rabbitmq/rabbitmq-management/pull/694) + + +### AMQP 1.0 Plugin + +#### Bug Fixes + + * Default host specified in `amqp1_0.default_vhost` (`rabbitmq_amqp1_0.default_vhost` in classic config format) + now takes precedence over `default_vhost` (`rabbit.default_vhost`) in the core broker. + + GitHub issue: [rabbitmq/rabbitmq-amqp1.0#86](https://github.com/rabbitmq/rabbitmq-amqp1.0/pull/86) + + +### Shovel Plugin + +#### Bug Fixes + + * Connections to source and destination nodes are now correctly closed if topology operations + fail on either end (e.g. due to insufficient permissions). + + Contributed by Grigory Starinkin. + + GitHub issue: [rabbitmq/rabbitmq-shovel#54](https://github.com/rabbitmq/rabbitmq-shovel/pull/54) + + * Improved handling of cases where AMQP 1.0 endpoint connection was refused access to a virtual host. + + GitHub issue: [rabbitmq/rabbitmq-shovel#57](https://github.com/rabbitmq/rabbitmq-shovel/pull/57) + +#### Enhancements + + * The plugin now provides a new CLI command and HTTP API endpoint for restarting + a dynamic Shovel. + + GitHub issue: [rabbitmq/rabbitmq-shovel#48](https://github.com/rabbitmq/rabbitmq-shovel/issues/48) + + +### Federation Plugin + +#### Enhancements + + * Queue federation now uses a more informative consumer tag value. + + GitHub issue: [rabbitmq/rabbitmq-federation#66](https://github.com/rabbitmq/rabbitmq-federation/issues/66) + + +## CLI Tools + +### Bug Fixes + + * Streamling `list_*` commands could hang when encountering an error from one of the cluster nodes. + + GitHub issue: [rabbitmq/rabbitmq-cli#336](https://github.com/rabbitmq/rabbitmq-cli/issues/336) + + * `rabbitmqctl delete_queue -u` failed argument validation due to a typo. + + GitHub issue: [rabbitmq/rabbitmq-cli#339](https://github.com/rabbitmq/rabbitmq-cli/issues/339) + + * `rabbitmq-diagnostics cipher_suites` now provides a way to display all available (not just enabled) + cipher suites. + + GitHub issue: [rabbitmq/rabbitmq-cli#342](https://github.com/rabbitmq/rabbitmq-cli/issues/342) + +### Enhancements + + * When an unsupported node name is used, CLI tools will now produce more specific error messages. + + GitHub issue: [rabbitmq/rabbitmq-cli#345](https://github.com/rabbitmq/rabbitmq-cli/issues/345) + + * `rabbitmq-diagnostics erlang_version` now supports `--offline`. + + GitHub issue: [rabbitmq/rabbitmq-cli#315](https://github.com/rabbitmq/rabbitmq-cli/issues/315) + + +### Web STOMP Plugin + +#### Enhancements + + * Default STOMP plugin log is now used for `CONNECT` frames without credentials. + + Contributed by Nick Goossens. + + GitHub issue: [rabbitmq/rabbitmq-web-stomp#110](https://github.com/rabbitmq/rabbitmq-web-stomp/pull/110) + + +### Erlang AMQP 0-9-1 Client + +#### Bug Fixes + + * Direct connections (via Erlang distribution) from outside of a RabbitMQ should no longer fail due to + a dependency on a module that was previously a part of core RabbitMQ broker. + + GitHub issue: [rabbitmq/rabbitmq-erlang-client#91](https://github.com/rabbitmq/rabbitmq-erlang-client/issues/91) + + +### Auth Backend Cache Plugin + +#### Bug Fixes + + * Virtual host endpoint requests were not cached. + + GitHub issues: [rabbitmq/rabbitmq-auth-backend-cache#20](https://github.com/rabbitmq/rabbitmq-auth-backend-cache/issues/20), + [rabbitmq/rabbitmq-auth-backend-cache#24](https://github.com/rabbitmq/rabbitmq-auth-backend-cache/issues/24) + + +### Top Plugin + +#### Bug Fixes + + * Calculation worker process could fail due to an exception. + + GitHub issue: [rabbitmq/rabbitmq-top#34](https://github.com/rabbitmq/rabbitmq-top/issues/34) + + +### JMS Topic Exchange Plugin + +#### Bug Fixes + + * `LIKE` operator could be incorrectly evaluated. + + GitHub issue: [rabbitmq/rabbitmq-jms-topic-exchange#18](https://github.com/rabbitmq/rabbitmq-jms-topic-exchange/issues/18) + + +## 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.7.15.tar.xz`. diff --git a/release-notes/3.7.16.md b/release-notes/3.7.16.md new file mode 100644 index 0000000000..234c0614f2 --- /dev/null +++ b/release-notes/3.7.16.md @@ -0,0 +1,174 @@ +## RabbitMQ 3.7.16 + +RabbitMQ `3.7.16` is a maintenance release. It focuses on bug fixes and minor usability improvements. + +### Erlang/OTP Compatibility Notes + +Per the new Erlang version support policy in effect starting with January 2019, +this release [**no longer supports Erlang/OTP 19.3**](https://groups.google.com/d/msg/rabbitmq-users/G4UJ9zbIYHs/qCeyjkjyCQAJ). +Make sure a [supported Erlang version](https://www.rabbitmq.com/which-erlang.html) is used before upgrading. + +[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 `21.3.x` and `22.x`. + +### Compatibility Notes + +#### OpenSUSE Leap 42.3 Support Dropped + +OpenSUSE Leap 42.3 has [gone out of support on July 1st](https://en.opensuse.org/Lifetime), 2019. Packages for +that distribution are therefore no longer produced because upstream OpenSUSE repositories are no longer +available. + +#### Upgrading to Erlang 21.x or Later Versions + +When upgrading to this release **and upgrading Erlang to 21.x or later** at the same time, 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 before Erlang**. + +#### Upgrade Doc Guides and Change Log + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.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. + +### 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 + +### Core Server + +#### Bug Fixes + + * When a node hosting an exclusive queue was restarted with queue leader locator being something other than + "node local", redeclaration of the queue failed. + + Contributed by Lajos Gerecs. + + GitHub issue: [rabbitmq/rabbitmq-server#2039](https://github.com/rabbitmq/rabbitmq-server/issues/2039) + +#### Enhancements + + * It is now possible to configure default worker pool size: + + ``` ini + default_worker_pool_size = 1024 + ``` + + This may be necessary in environments with a large number of queues (say, hundreds of thousands) + to speed up queue and binding recovery on node boot. By default the size of the pool is + computed as the number of [available runtime schedulers](https://www.rabbitmq.com/runtime.html). + + GitHub issue: [rabbitmq/rabbitmq-server#2030](https://github.com/rabbitmq/rabbitmq-server/issues/2030) + + +### CLI Tools + +#### Bug Fixes + + * `rabbitmqctl report` and `rabbitmqctl list_queues` could fail with a `{bad_argument,type}` because of a 3.8-specific column was erroneously listed as supported. + + Contributed by Lajos Gerecs. + + GitHub issue: [rabbitmq/rabbitmq-cli#354](https://github.com/rabbitmq/rabbitmq-cli/pull/354) + +#### Enhancements + + * New health check: `rabbitmq-diagnostics check_virtual_hosts`. + + [rabbitmq/rabbitmq-cli#302](https://github.com/rabbitmq/rabbitmq-cli/issues/302) + + * New observability command, `rabbitmq-diagnostics log_location [--all]`, displays log file location(s) + on target node. The node is assumed to be running. + + GitHub issue: [rabbitmq/rabbitmq-cli#325](https://github.com/rabbitmq/rabbitmq-cli/issues/325) + + * New observability commands, `rabbitmq-diagnostics log_tail` and `rabbitmq-diagnostics log_tail_stream`, + provide a way to remotely inspect recent log file entries on a running node. The commands are meant + to be used for troubleshooting and not to automate log aggregation. + + GitHub issue: [rabbitmq/rabbitmq-cli#326](https://github.com/rabbitmq/rabbitmq-cli/issues/326) + + * `rabbitmq-diagnostics schema_info` displays information about internal database schema + (tables, their properties and metadata). + + [rabbitmq/rabbitmq-cli#330](https://github.com/rabbitmq/rabbitmq-cli/issues/330) + + +### Management Plugin + +#### Bug Fixes + + * When multiple definition files were [imported on node boot](https://www.rabbitmq.com/management.html#load-definitions), errors were not reported + the same way they would be with a single file. + + GitHub issue: [rabbitmq/rabbitmq-management#710](https://github.com/rabbitmq/rabbitmq-management/pull/710) + +#### Enhancements + + * The plugin now disables [client inactivity timeout](https://www.rabbitmq.com/management.html#advanced-options) for the definition import endpoints and reports + progress using periodic [`102 Processing` responses](https://httpstatuses.com/102) so that the connection is kept alive even if importing + definition takes a long time. + + GitHub issue: [rabbitmq/rabbitmq-management#711](https://github.com/rabbitmq/rabbitmq-management/pull/711) + + +### Shovel Plugin + +#### Bug Fixes + + * `3.7.15` introduced a regression where Shovels would not try to reconnect after a network + failure. + + GitHub issue: [rabbitmq/rabbitmq-shovel#60](https://github.com/rabbitmq/rabbitmq-shovel/issues/60) + + +### Web MQTT Plugin + +#### Bug Fixes + + * Default maximum connection limit set by a dependency (1024) has been lifted. + + GitHub issue: [rabbitmq/rabbitmq-web-mqtt#55](https://github.com/rabbitmq/rabbitmq-web-mqtt/issues/55) + + * Client ID wasn't propagated to connection metadata for MQTT connections over WebSockets. + + GitHub issue: [rabbitmq/rabbitmq-web-mqtt#57](https://github.com/rabbitmq/rabbitmq-web-mqtt/issues/57) + + +### Web STOMP Plugin + +#### Bug Fixes + + * Default maximum connection limit set by a dependency (1024) has been lifted. + + GitHub issue: [rabbitmq/rabbitmq-web-stomp#113](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/113) + + +### Trust Store Plugin + +#### Enhancements + + * It is now possiible to configure HTTPS proxy settings for the HTTPS backend. + + GitHub issue: [rabbitmq/rabbitmq-trust-store#69](https://github.com/rabbitmq/rabbitmq-trust-store/issues/69) + + +### Debian Package + +#### Bug Fixes + + * Exit code 69 is now considered a success again in the systemd service file. + + GitHub issues: [rabbitmq/rabbitmq-server-release#104](https://github.com/rabbitmq/rabbitmq-server-release/pull/104), [rabbitmq/rabbitmq-server-release#51](https://github.com/rabbitmq/rabbitmq-server-release/issues/51) + + +## 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.7.16.tar.xz`. diff --git a/release-notes/3.7.17.md b/release-notes/3.7.17.md new file mode 100644 index 0000000000..f0b0e0947f --- /dev/null +++ b/release-notes/3.7.17.md @@ -0,0 +1,122 @@ +## RabbitMQ 3.7.17 + +RabbitMQ `3.7.17` is a maintenance release. It focuses on bug fixes and upgrades +a JavaScript dependency in the management UI to patch three CVEs in that library. + +### Erlang/OTP Compatibility Notes + +Per the new Erlang version support policy in effect starting with January 2019, +this release [**no longer supports Erlang/OTP 19.3**](https://groups.google.com/d/msg/rabbitmq-users/G4UJ9zbIYHs/qCeyjkjyCQAJ). +Make sure a [supported Erlang version](https://www.rabbitmq.com/which-erlang.html) is used before upgrading. + +[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 `21.3.x` and `22.x`. + +### Compatibility Notes + +#### Upgrading to Erlang 21.x or Later Versions + +When upgrading to this release **and upgrading Erlang to 21.x or later** at the same time, 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 before Erlang**. + +#### Upgrade Doc Guides and Change Log + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.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. + +### 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 + +### Core Server + +#### Enhancements + + * `amqqueue` module and the feature flag subsystem were backported from 3.8. This makes it possible + for plugin developers to target both `3.7.x` and `3.8.x` release series. + + Note that this only backports the API. There are no feature flags to enable in `3.7.17`. + No 3.8-specific features that must be enabled via feature flags were backported and there are no + plans to do it in later `3.7.x` releases. + + GitHub issue: [rabbitmq/rabbitmq-server#2028](https://github.com/rabbitmq/rabbitmq-server/issues/2028) + + +### CLI Tools + +#### Bug Fixes + + * `rabbitmqctl stop` description had a typo. + + Contributed by Eugene Pirogov. + + GitHub issue: [rabbitmq/rabbitmq-cli#363](https://github.com/rabbitmq/rabbitmq-cli/pull/363) + +#### Enhancements + + * Commands that take passwords as arguments now accept them via standard input. + + GitHub issue: [rabbitmq/rabbitmq-cli#365](https://github.com/rabbitmq/rabbitmq-cli/issues/365) + + * `rabbitmq-diagnostics observer` no longer requires RabbitMQ application to be running on + the target node. + + GitHub issue: [rabbitmq/rabbitmq-cli#368](https://github.com/rabbitmq/rabbitmq-cli/pull/368) + + +### Management Plugin + +#### Bug Fixes + + * jQuery has been upgraded to `3.4.x`. This series addresses a number of known CVEs in the library: [CVE-2015-9251](https://nvd.nist.gov/vuln/detail/CVE-2015-9251), [CVE-2017-16012](https://nvd.nist.gov/vuln/detail/CVE-2017-16012), [CVE-2019-11358](https://nvd.nist.gov/vuln/detail/CVE-2019-11358). + + GitHub issue: [rabbitmq/rabbitmq-management#714](https://github.com/rabbitmq/rabbitmq-management/issues/714) + + * Blank effective policy definitions were formatted as a JSON array instead of an empty object in API responses. + + GitHub issue: [rabbitmq/rabbitmq-management#701](https://github.com/rabbitmq/rabbitmq-management/issues/701) + +#### Usability + + * Definition import endpoint no longer reports progress via `102 Processing` responses. They proved to be problematic + for some HTTP clients, including `rabbitmqadmin`. + + GitHub issues: [rabbitmq/rabbitmq-management#715](https://github.com/rabbitmq/rabbitmq-management/issues/715), [rabbitmq/rabbitmq-management#718](https://github.com/rabbitmq/rabbitmq-management/pull/718) + + * Leading and trailing white space characters are now highlighted in queue and exchange names to make them easier to spot. + Tab characters are highlighted as well, even in the middle of the word. The idea is that those characters are typically used by mistake and should be easier to notice. + + GitHub issue: [rabbitmq/rabbitmq-management#721](https://github.com/rabbitmq/rabbitmq-management/pull/721) + + * It wasn't possible to delete a binding declared with `routing_key` set to `null` (only possible via the HTTP API). + Now such bindings can be deleted but this practice is highly discouraged. Future HTTP API versions might refuse to accept + `null` values as they are impossible to declare via AMQP 0-9-1. + + GitHub issue: [rabbitmq/rabbitmq-management#723](https://github.com/rabbitmq/rabbitmq-management/pull/723) + + +### Shovel Management Plugin + +#### Bug Fixes + + * Shovel restart link conflicted with that in the Federation management plugin. When both were enabled, only one + was actually functional. + + GitHub issue: [rabbitmq/rabbitmq-shovel-management#35](https://github.com/rabbitmq/rabbitmq-shovel-management/issues/35) + + * Shovel URI was misformatted for a period of time after UI refresh happened and before the Shovel was fully initialised and running. + + GitHub issue: [rabbitmq/rabbitmq-shovel-management#37](https://github.com/rabbitmq/rabbitmq-shovel-management/issues/37) + +## 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.7.17.tar.xz`. diff --git a/release-notes/3.7.18.md b/release-notes/3.7.18.md new file mode 100644 index 0000000000..5060f9b8ea --- /dev/null +++ b/release-notes/3.7.18.md @@ -0,0 +1,163 @@ +## RabbitMQ 3.7.18 + +RabbitMQ `3.7.18` is a maintenance release that includes a fix to [CVE-2019-11281](https://pivotal.io/security/cve-2019-11281). +Kudos to [Markus @RareData Alvila](https://twitter.com/RareData) for responsibly disclosing the vulnerability. + +The release also contains bug fixes and internal +API changes that refine the common plugin API with the [upcoming `3.8.0` version](https://github.com/rabbitmq/rabbitmq-server/releases/). + +### Erlang/OTP Compatibility Notes + +Per the new Erlang version support policy in effect starting with January 2019, +this release [**no longer supports Erlang/OTP 19.3**](https://groups.google.com/d/msg/rabbitmq-users/G4UJ9zbIYHs/qCeyjkjyCQAJ). +Make sure a [supported Erlang version](https://www.rabbitmq.com/which-erlang.html) is used before upgrading. + +[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 `21.3.x` and `22.x`. + +### Compatibility Notes + +This release introduces credential obfuscation for Shovel connections and Federation links. This requires +one more application (library) from Erlang/OTP, `tools`. Operators must make sure that the Erlang runtime +provides it. On Debian-based systems, the package [`erlang-tools`](https://packages.ubuntu.com/bionic/erlang-tools) must be installed. + +This release contains a **breaking change to the plugin API** around queue state access introduced in `3.7.17`. +Plugins that do not use that API revision are not affected. All plugins that ship with RabbitMQ have been updated +as necessary. + +This revision was necessary to maintain a single API with the upcoming `3.8.0` release. + +#### Upgrading to Erlang 21.x or Later Versions + +When upgrading to this release **and upgrading Erlang to 21.x or later** at the same time, 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 before Erlang**. + +#### Upgrade Doc Guides and Change Log + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.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. + +### 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 + +### Core Server + +#### Enhancements + + * New style config file parser is now more forgiving, handles trailing whitespace and empty lines + better. + + GitHub issue: [rabbitmq/rabbitmq-server#2073](https://github.com/rabbitmq/rabbitmq-server/pull/2073) + + * `gen_server2` now includes two new functions, `stop/1` and `stop/3`, which `gen_server` in OTP + introduced a couple of releases ago. + + Contributed by @codeadict. + + GitHub issue: [rabbitmq/rabbitmq-common#335](https://github.com/rabbitmq/rabbitmq-common/pull/335) + +#### Bug Fixes + + * Log rotation is functional again on Windows. + + GitHub issue: [rabbitmq/rabbitmq-server#2059](https://github.com/rabbitmq/rabbitmq-server/issues/2059) + + * White space characters in `RABBITMQ_BASE` and other [configurable paths](https://www.rabbitmq.com/configure.html#customise-environment) are now handled better on Windows. + + GitHub issue: [rabbitmq/rabbitmq-server#2025](https://github.com/rabbitmq/rabbitmq-server/issues/2025) + + * Eliminate a "deprecated Ranch options" log warning. + + GitHub issue: [rabbitmq/rabbitmq-server#2069](https://github.com/rabbitmq/rabbitmq-server/issues/2069) + + +### Management Plugin + +#### Enhancements + + * Two more TLS listener options are now available via new style configuration file: + `management.ssl.verify` and `management.ssl.fail_if_no_peer_cert`. + + GitHub issue: [rabbitmq/rabbitmq-management#735](https://github.com/rabbitmq/rabbitmq-management/issues/735) + +#### Bug Fixes + + * HTTP API documentation correction. + + GitHub issue: [rabbitmq/rabbitmq-management#737](https://github.com/rabbitmq/rabbitmq-management/issues/737) + + +### AMQP 1.0 Plugin + +#### Bug Fixes + + * Connections that fail due to insufficient client permissions (authorisation failures) are now handled + gracefully with reasonable log messages. + + GitHub issue: [rabbitmq/rabbitmq-amqp1.0#92](https://github.com/rabbitmq/rabbitmq-amqp1.0/pull/92) + + +### Shovel Plugin + +#### Bug Fixes + + * Sensitive values in Shovel connection state (namely, the connection credentials) are now stored in + encrypted form. This avoids unintentional credential logging by the runtime (exception logger) + at the cost of making troubleshooting authentication failures harder. + + GitHub issue: [rabbitmq-erlang-client#123](https://github.com/rabbitmq/rabbitmq-erlang-client/issues/123) + + +### Federation Plugin + +#### Bug Fixes + + * Sensitive values in Federation link state (namely, the connection credentials) are now stored in + encrypted form. This avoids unintentional credential logging by the runtime (exception logger) + at the cost of making troubleshooting authentication failures harder. + + GitHub issue: [rabbitmq-erlang-client#123](https://github.com/rabbitmq/rabbitmq-erlang-client/issues/123) + + +### RabbitMQ Erlang Client + +#### Bug Fixes + + * Sensitive values in connection state (namely, the connection credentials) are now stored in + encrypted form. This avoids unintentional credential logging by the runtime (exception logger) + at the cost of making troubleshooting authentication failures harder. + + GitHub issue: [rabbitmq-erlang-client#123](https://github.com/rabbitmq/rabbitmq-erlang-client/issues/123) + + +### Web STOMP Examples Plugin + +#### Bug Fixes + + * jQuery was upgraded to `3.4.x`. + + GitHub issue: [rabbitmq/rabbitmq-web-stomp-examples#18](https://github.com/rabbitmq/rabbitmq-web-stomp-examples/issues/18) + + +### Web MQTT Examples Plugin + +#### Bug Fixes + + * jQuery was upgraded to `3.4.x`. + + GitHub issue: [rabbitmq/rabbitmq-web-mqtt-examples#2](https://github.com/rabbitmq/rabbitmq-web-mqtt-examples/issues/2) + + +## 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.7.18.tar.xz`. diff --git a/release-notes/3.7.19.md b/release-notes/3.7.19.md new file mode 100644 index 0000000000..6f26fec960 --- /dev/null +++ b/release-notes/3.7.19.md @@ -0,0 +1,114 @@ +## RabbitMQ 3.7.19 + +RabbitMQ `3.7.19` is a maintenance release that focuses on bug fixes. +RabbitMQ `3.7.x` series is supported [through March 2020](https://www.rabbitmq.com/versions.html). + +### Erlang/OTP Compatibility Notes + +Per the new Erlang version support policy in effect starting with January 2019, +this release [**no longer supports Erlang/OTP 20.3**](https://groups.google.com/d/msg/rabbitmq-users/G4UJ9zbIYHs/qCeyjkjyCQAJ). +Make sure a [supported Erlang version](https://www.rabbitmq.com/which-erlang.html) is used before upgrading. + +[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 `21.3.x` and `22.x`. + +### Compatibility Notes + +#### Upgrading to Erlang 21.x or Later Versions + +When upgrading to this release **and upgrading Erlang to 21.x or later** at the same time, 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 before Erlang**. + +#### Upgrade Doc Guides and Change Log + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.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. + +### 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 + +### Core Server + +#### Bug Fixes + + * `rabbit_diagnostics:binary_refs/1`, a predecessor to Recon used for binary heap inspection, + could fail with an exception due to a race condition. + + Contributed by John Eckersberg (@jeckersb). + + GitHub issue: [rabbitmq/rabbitmq-server#2117](https://github.com/rabbitmq/rabbitmq-server/pull/2117) + + * It was not possible to set `ERL_MAX_PORTS` in `rabbitmq-env-conf.bat`. + + GitHub issue: [rabbitmq/rabbitmq-server#2084](https://github.com/rabbitmq/rabbitmq-server/issues/2084) + + +### Management Plugin + +#### Bug Fixes + + * Import of large definition files submitted via management UI form could fail. + + GitHub issue: [rabbitmq/rabbitmq-management#739](https://github.com/rabbitmq/rabbitmq-management/issues/739) + + +### CLI Tools + +#### Bug Fixes + + * `rabbitmq-diagnostics node_health_check` would pass even when some cluster nodes had + network partitions in effect. + + Contributed by Lajos Gerecs (@luos). + + GitHub issue: [rabbitmq/rabbitmq-server#2127](https://github.com/rabbitmq/rabbitmq-server/pull/2127) + + * `rabbitmqctl set_parameter` output could be misleading. + + Contributed by @Whitespirit0. + + GitHub issue: [rabbitmq/rabbitmq-cli#376](https://github.com/rabbitmq/rabbitmq-cli/issues/376) + + +### STOMP Plugin + +#### Bug Fixes + + * Cleanup of a subscription after a server-initiated [consumer cancelation](https://www.rabbitmq.com/consumer-cancel.html) + failed with an exception. + + GitHub issue: [rabbitmq/rabbitmq-stomp#136](https://github.com/rabbitmq/rabbitmq-stomp/issues/136) + + +### Event Exchange Plugin + +#### Bug Fixes + + * Events could fail to be emitted in multi-node clusters. + + GitHub issue: [rabbitmq/rabbitmq-event-exchange#41](https://github.com/rabbitmq/rabbitmq-event-exchange/issues/41) + + +### Management Exchange Plugin + +#### Bug Fixes + + * The plugin was not updated to correctly fetch a list of TCP and TLS listeners used + by the management plugin. + + GitHub issue: [rabbitmq/rabbitmq-management-exchange#8](https://github.com/rabbitmq/rabbitmq-management-exchange/issues/8) + + +## 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.7.19.tar.xz`. diff --git a/release-notes/3.7.2.md b/release-notes/3.7.2.md new file mode 100644 index 0000000000..ea0fb98b30 --- /dev/null +++ b/release-notes/3.7.2.md @@ -0,0 +1,30 @@ +## RabbitMQ 3.7.2 + +RabbitMQ `3.7.2` fixes an issue in the HTTP auth backend plugin that was introduced in `3.7.1`. +It has no other functional changes compared to `3.7.1`. + +### Upgrades and Compatibility + +This release has no known incompatibilities with earlier 3.7.x versions. +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.0) upgrade and compatibility notes if upgrading from an earlier release. + +See the [Upgrading guide](https://www.rabbitmq.com/upgrade.html) for general documentation on upgrades. + +See [RabbitMQ change log](https://www.rabbitmq.com/changelog.html) for release notes of other releases. + + +## Changes + +### Auth Backend HTTP Plugin + +#### Bug Fixes + + * Plugin threw an exception while performing HTTP requests. + + GitHub issue: [rabbitmq/rabbitmq-auth-backend-http#62](https://github.com/rabbitmq/rabbitmq-auth-backend-http/issues/62) + + +## 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.7.2.tar.gz`. diff --git a/release-notes/3.7.20.md b/release-notes/3.7.20.md new file mode 100644 index 0000000000..c3f9aa5325 --- /dev/null +++ b/release-notes/3.7.20.md @@ -0,0 +1,163 @@ +## RabbitMQ 3.7.20 + +RabbitMQ `3.7.20` is a maintenance release that focuses on bug fixes. +RabbitMQ `3.7.x` series is supported [through March 2020](https://www.rabbitmq.com/versions.html). + +### Erlang/OTP Compatibility Notes + +Per the new Erlang version support policy in effect starting with January 2019, +this release [**no longer supports Erlang/OTP 20.3**](https://groups.google.com/d/msg/rabbitmq-users/G4UJ9zbIYHs/qCeyjkjyCQAJ). +Make sure a [supported Erlang version](https://www.rabbitmq.com/which-erlang.html) is used before upgrading. + +[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 `21.3.x` and `22.x`. + +### Compatibility Notes + +#### Upgrading to Erlang 21.x or Later Versions + +When upgrading to this release **and upgrading Erlang to 21.x or later** at the same time, 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 before Erlang**. + +#### Upgrade Doc Guides and Change Log + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.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. + +### 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 + +### Core Server + +#### Bug Fixes + + * Rolling cluster upgrade could fail if new versions were deployed to all cluster nodes at once instead + of a rolling upgrade-then-restart for each node individually. + + GitHub issue: [rabbitmq/rabbitmq-server#2132](https://github.com/rabbitmq/rabbitmq-server/issues/2132) + + * Improved error handling in a module that continuously registers the node with [epmd](https://www.rabbitmq.com/clustering.html) avoids + log noise. + + GitHub issue: [rabbitmq/rabbitmq-server#2130](https://github.com/rabbitmq/rabbitmq-server/issues/2130) + + +### CLI Tools + +#### Bug Fixes + + * `rabbitmqctl await_startup` failed with an exception when effective timeout was set to `infinity`. + + GitHub issue: [rabbitmq/rabbitmq-server#2144](https://github.com/rabbitmq/rabbitmq-server/pull/2144) + + * `rabbitmq-diagnostics check_port_connectivity` produced a false positive in an IPv6-only environment. + + Contributed by Gabriele Santomaggio. + + GitHub issue: [rabbitmq/rabbitmq-cli#385](https://github.com/rabbitmq/rabbitmq-cli/pull/385) + + * `rabbitmq-diagnostics status`, `rabbitmq-diagnostics cluster_status`, `rabbitmq-diagnostics listeners` now support + `--formatter=erlang` (raw Erlang data structure output) + + GitHub issue: [rabbitmq/rabbitmq-cli#383](https://github.com/rabbitmq/rabbitmq-cli/issues/383) + + +### Kubernetes Peer Discovery Plugin + +#### Bug Fixes + + * Requests to Kubernetes API endpoints failed with an `nxdomain` (domain name resolution failure) + in an IPv6-only environment. Now the plugin will configure its HTTP[S] client to use IPv6 if + the [inetrc file](http://erlang.org/doc/apps/erts/inet_cfg.html) tells it to. + See [Using IPv6 for Inter-node Communication (and CLI Tools)](https://www.rabbitmq.com/networking.html#distribution-ipv6) to learn more. + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-k8s#55](https://github.com/rabbitmq/rabbitmq-peer-discovery-k8s/issues/55) + +### AWS Peer Discovery Plugin + +#### Bug Fixes + + * The plugin will now configure its HTTP[S] client to use IPv6 if + the [inetrc file](http://erlang.org/doc/apps/erts/inet_cfg.html) tells it to. + See [Using IPv6 for Inter-node Communication (and CLI Tools)](https://www.rabbitmq.com/networking.html#distribution-ipv6) to learn more. + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-aws#32](https://github.com/rabbitmq/rabbitmq-peer-discovery-aws/pull/32) + + +### Consul Peer Discovery Plugin + +#### Enhancements + + * It is now possible to specify service metadata values: + + ``` ini + cluster_formation.consul.svc_meta.key1 = value1 + cluster_formation.consul.svc_meta.key2 = value2 + ``` + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-consul#34](https://github.com/rabbitmq/rabbitmq-peer-discovery-consul/issues/34) + +#### Bug Fixes + + * The plugin will now configure its HTTP[S] client to use IPv6 if + the [inetrc file](http://erlang.org/doc/apps/erts/inet_cfg.html) tells it to. + See [Using IPv6 for Inter-node Communication (and CLI Tools)](https://www.rabbitmq.com/networking.html#distribution-ipv6) to learn more. + + GitHub issue: [rabbitmq-peer-discovery-consul#36](https://github.com/rabbitmq/rabbitmq-peer-discovery-consul/pull/36) + + + +### etcd Peer Discovery Plugin + +#### Bug Fixes + + * The plugin will now configure its HTTP[S] client to use IPv6 if + the [inetrc file](http://erlang.org/doc/apps/erts/inet_cfg.html) tells it to. + See [Using IPv6 for Inter-node Communication (and CLI Tools)](https://www.rabbitmq.com/networking.html#distribution-ipv6) to learn more. + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-etcd#19](https://github.com/rabbitmq/rabbitmq-peer-discovery-etcd/pull/19) + + + +### Erlang Client + +#### Bug Fixes + + * Connection could not be restarted after a heartbeat timeout due to strict pattern matching. + + Contributed by Giuseppe D'Anna (@larrywax). + + GitHub issue: [rabbitmq/rabbitmq-erlang-client#126](https://github.com/rabbitmq/rabbitmq-erlang-client/pull/126) + + +### LDAP Plugin + +#### Enhancements + + * The plugin will no log a warning when DN lookup settings are incomplete. + + GitHub issue: [rabbitmq/rabbitmq-auth-backend-ldap#114](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/pull/114) + + +### Tracing Plugin + +#### Bug Fixes + + * On Windows, deleting the file used by an active (running) trace resulted in an `EACCES` exception. + + GitHub issue: [rabbitmq/rabbitmq-tracing#31](https://github.com/rabbitmq/rabbitmq-tracing/issues/31) + + +## 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.7.20.tar.xz`. diff --git a/release-notes/3.7.21.md b/release-notes/3.7.21.md new file mode 100644 index 0000000000..e41b516f6f --- /dev/null +++ b/release-notes/3.7.21.md @@ -0,0 +1,98 @@ +## RabbitMQ 3.7.21 + +RabbitMQ `3.7.21` is a maintenance release that includes a patch for [CVE-2019-11287](https://pivotal.io/security/cve-2019-11287). +RabbitMQ `3.7.x` series is supported [through March 2020](https://www.rabbitmq.com/versions.html). + +### Erlang/OTP Compatibility Notes + +Per the new Erlang version support policy in effect starting with January 2019, +this release [**no longer supports Erlang/OTP 20.3**](https://groups.google.com/d/msg/rabbitmq-users/G4UJ9zbIYHs/qCeyjkjyCQAJ). +Make sure a [supported Erlang version](https://www.rabbitmq.com/which-erlang.html) is used before upgrading. + +[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 `21.3.x` and `22.x`. + +### Compatibility Notes + +#### Upgrading to Erlang 21.x or Later Versions + +When upgrading to this release **and upgrading Erlang to 21.x or later** at the same time, 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 before Erlang**. + +#### Upgrade Doc Guides and Change Log + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.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. + +### 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 + +### Core Server + +#### Bug Fixes + + * Avoid pattern expansion when logging connection closure reason. + + This addresses [CVE-2019-11287](https://pivotal.io/security/cve-2019-11287). + + GitHub issue: [rabbitmq/rabbitmq-server#2155](https://github.com/rabbitmq/rabbitmq-server/pull/2155) + + +### LDAP Plugin + +#### Enhancements + + * Errors were not propagated back to the client correctly in case of an LDAP server authentication failure. + + GitHub issue: [rabbitmq/rabbitmq-auth-backend-ldap#116](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/116) + + +### STOMP Plugin + +#### Bug Fixes + + * `stomp.hide_server` is now available in the new style configuration format. + + GitHub issue: [rabbitmq/rabbitmq-stomp#140](https://github.com/rabbitmq/rabbitmq-stomp/issues/140) + + +### Web STOMP Plugin + +#### Bug Fixes + + * The plugin emitted a warning on start. + + GitHub issue: [rabbitmq/rabbitmq-web-stomp#115](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/115) + + +### Web MQTT Plugin + +#### Bug Fixes + + * The plugin emitted a warning on start. + + GitHub issue: [rabbitmq/rabbitmq-web-mqtt#59](https://github.com/rabbitmq/rabbitmq-web-mqtt/issues/59) + + +### Event Exchange Plugin + +#### Bug Fixes + + * `event_exchange.vhost` is now available in the new style configuration format. + + GitHub issue: [rabbitmq/rabbitmq-event-exchange#43](https://github.com/rabbitmq/rabbitmq-event-exchange/issues/43) + + +## 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.7.21.tar.xz`. diff --git a/release-notes/3.7.22.md b/release-notes/3.7.22.md new file mode 100644 index 0000000000..9c319a7920 --- /dev/null +++ b/release-notes/3.7.22.md @@ -0,0 +1,100 @@ +## RabbitMQ 3.7.22 + +RabbitMQ `3.7.22` is a maintenance release that focuses on bug fixes. +RabbitMQ `3.7.x` series is supported [through March 2020](https://www.rabbitmq.com/versions.html). + +### Erlang/OTP Compatibility Notes + +Per the new Erlang version support policy in effect starting with January 2019, +this release [**no longer supports Erlang/OTP 20.3**](https://groups.google.com/d/msg/rabbitmq-users/G4UJ9zbIYHs/qCeyjkjyCQAJ). +Make sure a [supported Erlang version](https://www.rabbitmq.com/which-erlang.html) is used before upgrading. + +[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 `21.3.x` and `22.x`. + +### Compatibility Notes + +#### Upgrading to Erlang 21.x or Later Versions + +When upgrading to this release **and upgrading Erlang to 21.x or later** at the same time, 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 before Erlang**. + +#### Upgrade Doc Guides and Change Log + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.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. + +### 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 + +### Core Server + +#### Bug Fixes + + * One-off Erlang VM starts used by startup scripts now do as little work as possible + in order to avoid starting subcomponents, loading configuration and so on. + + GitHub issue: [rabbitmq/rabbitmq-common#340](https://github.com/rabbitmq/rabbitmq-common/pull/340) + + +### CLI Tools + +#### Bug Fixes + + * `rabbitmqctl await_startup` failed with an exception when RabbitMQ application was stopped but the + runtime (Erlang VM) was running. + + GitHub issue: [rabbitmq/rabbitmq-server#2158](https://github.com/rabbitmq/rabbitmq-server/issues/2158) + + +### Management Plugin + +#### Bug Fixes + + * Definition import via HTTP API could fail in if performed via HTTP API (but not management UI) + and contained operator policies. + + GitHub issue: [rabbitmq/rabbitmq-management#751](https://github.com/rabbitmq/rabbitmq-management/issues/751) + + * When a node cannot compute the number of file descriptors it uses, it will be more resilient and will + log warnings (e.g. about missing `handle.exe` in `PATH` on Windows) much more proactively. + + GitHub issue: [rabbitmq/rabbitmq-management-agent#86](https://github.com/rabbitmq/rabbitmq-management-agent/issues/86) + +#### Enhancements + + * Metric aggregation optimizations. + + GitHub issue: [rabbitmq/rabbitmq-management-agent#84](https://github.com/rabbitmq/rabbitmq-management-agent/pull/84) + + +### MQTT Plugin + +#### Enhancements + + * Throughput improvements and reduced CPU usage but slightly higher per connection RAM footprint. + + Contributed by Grigory Starinkin (Erlang Solutions). + + GitHub issues: [rabbitmq/rabbitmq-mqtt#216](https://github.com/rabbitmq/rabbitmq-mqtt/pull/216), [rabbitmq/rabbitmq-mqtt#217](https://github.com/rabbitmq/rabbitmq-mqtt/pull/217) + +#### Bug Fixes + + * Last Will messages that use QoS 2 will now be downgraded to QoS 1 just like with "regular" published messages. + + GitHub issue: [rabbitmq/rabbitmq-mqtt#214](https://github.com/rabbitmq/rabbitmq-mqtt/issues/214) + + +## 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.7.22.tar.xz`. diff --git a/release-notes/3.7.23.md b/release-notes/3.7.23.md new file mode 100644 index 0000000000..15b5d29a4d --- /dev/null +++ b/release-notes/3.7.23.md @@ -0,0 +1,78 @@ +## RabbitMQ 3.7.23 + +RabbitMQ `3.7.23` is a maintenance release. +RabbitMQ `3.7.x` series is supported [through March 2020](https://www.rabbitmq.com/versions.html). + +### Erlang/OTP Compatibility Notes + +Per the new Erlang version support policy in effect starting with January 2019, +this release [**no longer supports Erlang/OTP 20.3**](https://groups.google.com/d/msg/rabbitmq-users/G4UJ9zbIYHs/qCeyjkjyCQAJ). +Make sure a [supported Erlang version](https://www.rabbitmq.com/which-erlang.html) is used before upgrading. + +[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 `21.3.x` and `22.x`. + +### Compatibility Notes + +#### Upgrading to Erlang 21.x or Later Versions + +When upgrading to this release **and upgrading Erlang to 21.x or later** at the same time, 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 before Erlang**. + +#### Upgrade Doc Guides and Change Log + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.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. + +### 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 + +### MQTT Plugin + +#### Enhancements + + * Throughput improvements ranging from 14 to 60 percent depending on workload. + + GitHub issue: [rabbitmq/rabbitmq-server#2168](https://github.com/rabbitmq/rabbitmq-server/issues/2168) + + +### AMQP 1.0 Plugin + +#### Enhancements + + * Throughput improvements. + + GitHub issue: [rabbitmq/rabbitmq-server#2168](https://github.com/rabbitmq/rabbitmq-server/issues/2168) + + +### STOMP Plugin + +#### Enhancements + + * Throughput improvements. + + GitHub issue: [rabbitmq/rabbitmq-server#2168](https://github.com/rabbitmq/rabbitmq-server/issues/2168) + + +### Web STOMP Plugin + +#### Enhancements + + * Clients now can authenticate using an x.509 (TLS) certificate. + + GitHub issue: [rabbitmq/rabbitmq-web-stomp#116](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/116) + + +## 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.7.23.tar.xz`. diff --git a/release-notes/3.7.24.md b/release-notes/3.7.24.md new file mode 100644 index 0000000000..458fee94f0 --- /dev/null +++ b/release-notes/3.7.24.md @@ -0,0 +1,114 @@ +## RabbitMQ 3.7.24 + +RabbitMQ `3.7.24` is a maintenance release. +RabbitMQ `3.7.x` series is supported [through March 2020](https://www.rabbitmq.com/versions.html). + +### Erlang/OTP Compatibility Notes + +Per the new Erlang version support policy in effect starting with January 2019, +this release [**no longer supports Erlang/OTP 20.3**](https://groups.google.com/d/msg/rabbitmq-users/G4UJ9zbIYHs/qCeyjkjyCQAJ). +Make sure a [supported Erlang version](https://www.rabbitmq.com/which-erlang.html) is used before upgrading. + +[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 `21.3.x` and `22.x`. + +### Compatibility Notes + +#### Upgrading to Erlang 21.x or Later Versions + +When upgrading to this release **and upgrading Erlang to 21.x or later** at the same time, 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 before Erlang**. + +#### Upgrade Doc Guides and Change Log + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.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. + +### 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 + +### Core Server + +#### Bug Fixes + + * Autoheal could fail to finish if one of its state transitions initiated by a remote node timed out. + + Contributed by @tomyouyou. + + GitHub issue: [rabbitmq/rabbitmq-server#2209](https://github.com/rabbitmq/rabbitmq-server/pull/2209) + + * Reduced scheduled GC activity in connection socket writer to one run per 1 GiB of data transferred, + with an option to change the value or disable scheduled run entirely. More frequent binary heap GC runs seem + unneccesary on Erlang 22. + + Contributed by Aleksander Nycz. + + GitHub issue: [rabbitmq/rabbitmq-common#343](https://github.com/rabbitmq/rabbitmq-common/pull/343) + + * The node now can recover even if virtual host recovery terms file was corrupted. + + Contributed by @tomyouyou. + + GitHub issue: [rabbitmq/rabbitmq-server#2195](https://github.com/rabbitmq/rabbitmq-server/pull/2195) + + * Better error reporting in an edge case with classic queue leader replica election. + + Contributed by Ayanda Dube. + + GitHub issue: [rabbitmq/rabbitmq-common#355](https://github.com/rabbitmq/rabbitmq-common/pull/355) + + * Fixed an incorrect return value in the internal queue data store module. + + Contributed by Sergey Loguntsov. + + GitHub issue: [rabbitmq/rabbitmq-server#2221](https://github.com/rabbitmq/rabbitmq-server/pull/2221) + + * Syslog client is now started even when Syslog logging is configured only for some log sinks. + + GitHub issue: [rabbitmq/rabbitmq-server#2044](https://github.com/rabbitmq/rabbitmq-server/issues/2044) + +#### Enhancements + + * RabbitMQ nodes will now gracefully shutdown when receiving a `SIGTERM` or `SIGQUIT` signals. + Previously the runtime would invoke a default handler that terminates the VM giving + RabbitMQ no chance to execute its shutdown steps. + + In addition, `SIGUSER1` and `SIGUSR2` signals are ignored. + + GitHub issue: [rabbitmq/rabbitmq-server#2222](https://github.com/rabbitmq/rabbitmq-server/issues/2222) + + * Some proxy protocol errors are now logged at debug level. This reduces log noise in environments + where TCP load balancers and proxies perform health checks by opening a TCP connection but never sending + any data. + + GitHub issue: [rabbitmq/rabbitmq-server#2204](https://github.com/rabbitmq/rabbitmq-server/pull/2204) + + +### Management and Management Agent Plugins + +### Enhancements + + * A new `POST /login` endpoint can be used by custom management UI login forms to authenticate the user + and set the cookie. + + GitHub issue: [rabbitmq/rabbitmq-management#764](https://github.com/rabbitmq/rabbitmq-management/issues/764) + + * Warning about a missing `handle.exe` in `PATH` on Windows is now only logged every few minutes. + + GitHub issue: [rabbitmq/rabbitmq-management-agent#90](https://github.com/rabbitmq/rabbitmq-management-agent/issues/90) + + + +## 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.7.24.tar.xz`. diff --git a/release-notes/3.7.25.md b/release-notes/3.7.25.md new file mode 100644 index 0000000000..ef5d6ab3c7 --- /dev/null +++ b/release-notes/3.7.25.md @@ -0,0 +1,115 @@ +## RabbitMQ 3.7.25 + +RabbitMQ `3.7.25` is a maintenance release. It focuses on bug fixes and usability +improvements. + +This is **the last generally supported `3.7.x` release**. +RabbitMQ `3.7.x` series are now covered by the [limited extended support](https://www.rabbitmq.com/versions.html) policy. + +Please consider [upgrading](https://www.rabbitmq.com/upgrade.html) to [RabbitMQ `3.8.x`](https://www.rabbitmq.com/changelog.html). + +### Erlang/OTP Compatibility Notes + +This release [**no longer supports Erlang/OTP 20.3**](https://groups.google.com/d/msg/rabbitmq-users/G4UJ9zbIYHs/qCeyjkjyCQAJ). +Previously recent `3.7.x` nodes could start on Erlang 20.3 and to some extent tested on it despite +the Erlang `21.3+` requirements in release notes and documentation. + +Starting with this release, `21.3+` is a **hard requirement** enforced in the code +to [ensure forward compatibility with Erlang 23](https://github.com/rabbitmq/rabbitmq-server/pull/2269). + +Make sure a [supported Erlang version](https://www.rabbitmq.com/which-erlang.html) is used before upgrading. +[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 `21.3.x` and `22.x`. + +### Compatibility Notes + +#### Upgrading to Erlang 21.x or Later Versions + +When upgrading to this release **and upgrading Erlang to 21.x or later** at the same time, 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 before Erlang**. + +#### Upgrade Doc Guides and Change Log + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.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. + +### 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 + +### Core Server + +#### Enhancements + + * Erlang `20.3` and earlier version support has been completely removed after months of being documented as unsupported. + This release, however, gains Erlang `23.0` forward compatibility. + + GitHub issue: [rabbitmq/rabbitmq-server#2269](https://github.com/rabbitmq/rabbitmq-server/pull/2269) + + +### Management Plugin + +#### Enhancements + + * More frequent garbage collection by stats DB cache processes in environments where HTTP API queries produced + large data sets. + + GitHub issue: [rabbitmq/rabbitmq-management#788](https://github.com/rabbitmq/rabbitmq-management/pull/788) + + * `rabbitmqadmin` binding deletion now defaults to the same property key value as binding creation. + + Contributed by Ivan Kaloyanov. + + GitHub issue: [rabbitmq/rabbitmq-management#779](https://github.com/rabbitmq/rabbitmq-management/pull/779) + +#### Bug Fixes + + * `rabbitmqadmin import` mangled non-ASCII characters. + + GitHub issue: [rabbitmq/rabbitmq-management#785](https://github.com/rabbitmq/rabbitmq-management/issues/785) + + +### Federation Plugin + +#### Enhancements + + * Internal resources cleanup is now more selective on abnormal link termination. A new upstream parameter, `resource-cleanup-mode`, + can be set to `"never"` used to prevent internal queues from being deleted by exchange federation links on termination. + Use this when data safety is more important than protection from resource leaks. It then will be up to the operator to make + sure such resources are periodically deleted or use a suitable [TTL](https://www.rabbitmq.com/ttl.html). + + GitHub issue: [rabbitmq/rabbitmq-federation#105](https://github.com/rabbitmq/rabbitmq-federation/issues/105) + + +### Shovel Management Plugin + +#### Bug Fixes + + * Shovels are now correctly removed even when deletion commands are executed against a different node + (not the one on which the target Shovel has been created). + + GitHub issue: [rabbitmq/rabbitmq-shovel#68](https://github.com/rabbitmq/rabbitmq-shovel/issues/68) + + +### Trust Store Plugin + +#### Enhancements + + * HTTPS certificate provider will no longer terminate if upstream service response contains + invalid JSON. + + GitHub issue: [rabbitmq/rabbitmq-trust-store#73](https://github.com/rabbitmq/rabbitmq-trust-store/issues/73) + + +## 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.7.25.tar.xz`. diff --git a/release-notes/3.7.26.md b/release-notes/3.7.26.md new file mode 100644 index 0000000000..743706a146 --- /dev/null +++ b/release-notes/3.7.26.md @@ -0,0 +1,79 @@ +## RabbitMQ 3.7.26 + +RabbitMQ `3.7.26` is a maintenance release. It focuses on bug fixes and usability +improvements. + +RabbitMQ `3.7.x` series are out of general support and covered by the [limited extended support](https://www.rabbitmq.com/versions.html) policy. + +Please consider [upgrading](https://www.rabbitmq.com/upgrade.html) to [RabbitMQ `3.8.x`](https://www.rabbitmq.com/changelog.html). + +### Erlang/OTP Compatibility Notes + +This release [**no longer supports Erlang/OTP 20.3**](https://groups.google.com/d/msg/rabbitmq-users/G4UJ9zbIYHs/qCeyjkjyCQAJ). +Previously recent `3.7.x` nodes could start on Erlang 20.3 and to some extent tested on it despite +the Erlang `21.3+` requirements in release notes and documentation. + +Starting with this release, `21.3+` is a **hard requirement** enforced in the code +to [ensure forward compatibility with Erlang 23](https://github.com/rabbitmq/rabbitmq-server/pull/2269). + +Make sure a [supported Erlang version](https://www.rabbitmq.com/which-erlang.html) is used before upgrading. +[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 `21.3.x` and `22.x`. + +### Compatibility Notes + +#### Upgrading to Erlang 21.x or Later Versions + +When upgrading to this release **and upgrading Erlang to 21.x or later** at the same time, 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 before Erlang**. + +#### Upgrade Doc Guides and Change Log + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.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. + +### 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 + +### Federation Plugin + +#### Enhancements + + * "Command" operations such as binding propagation now use a separate channel for all links, preventing latency + spikes for asynchronous operations (such as message publishing) (a head-of-line blocking problem). + + Contributed by Grigory Starinkin. + + GitHub issue: [rabbitmq/rabbitmq-federation#97](https://github.com/rabbitmq/rabbitmq-federation/pull/97) + +### Management Plugin + +#### Bug Fixes + + * `rabbitmqadmin` failed with an exception on Python 3 when `-f pretty_json` flag was used. + + GitHub issue: [rabbitmq/rabbitmq-management#794](https://github.com/rabbitmq/rabbitmq-management/issues/794) + + +### Shovel Plugin + +#### Bug Fixes + + * AMQP 1.0 client used by Shovel now correctly encodes Erlang atoms. + + GitHub issue: [rabbitmq/rabbitmq-amqp1.0-client#45](https://github.com/rabbitmq/rabbitmq-amqp1.0-client/issues/45) + + +## 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.7.26.tar.xz`. diff --git a/release-notes/3.7.27.md b/release-notes/3.7.27.md new file mode 100644 index 0000000000..a69634efd9 --- /dev/null +++ b/release-notes/3.7.27.md @@ -0,0 +1,83 @@ +## RabbitMQ 3.7.27 + +RabbitMQ `3.7.27` is a maintenance release. It contains a couple of backports +from the `3.8.x` branch. + +RabbitMQ `3.7.x` series are out of general support and covered by the [limited extended support policy](https://www.rabbitmq.com/versions.html) only. + +Please consider [upgrading](https://www.rabbitmq.com/upgrade.html) to [RabbitMQ `3.8.x`](https://www.rabbitmq.com/changelog.html). + +### Erlang/OTP Compatibility Notes + +This release [**no longer supports Erlang/OTP 20.3**](https://groups.google.com/d/msg/rabbitmq-users/G4UJ9zbIYHs/qCeyjkjyCQAJ). +Erlang `21.3+` is now a **hard requirement** checked on node startup. + +Make sure a [supported Erlang version](https://www.rabbitmq.com/which-erlang.html) is used before upgrading. +[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 `21.3.x` and `22.x`. + +### Compatibility Notes + +#### Upgrading to Erlang 21.x or Later Versions + +When upgrading to this release **and upgrading Erlang to 21.x or later** at the same time, 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 before Erlang**. + +#### Upgrade Doc Guides and Change Log + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.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. + +### 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 + +### Core Server + +#### Enhancements + + * More peer discovery errors are retried. + + GitHub issue: [rabbitmq/rabbitmq-server#1627](https://github.com/rabbitmq/rabbitmq-server/issues/1627) + + * Initial Erlang/OTP 24 compatibility. + + Erlang/OTP 24 is expected to ship in mid-2021. While RabbitMQ 3.7 will be [out of support](https://www.rabbitmq.com/versions.html) by then, + some initial compatibility work was backported to this branch due to contious integration on Erlang/OTP master. + +### Federation Plugin + +#### Bug Fixes + + * One-off connections periodically used by exchange federation links now handle timeouts in certain + operations gracefully. This avoids unnecessary link disruption and restarts in certain environments. + The default interval has also been bumped from 30s to 90s. + + In environments with stable topologies the interval can be significantly increased to decrease connection + churn, simplify monitoring and in general conserve some resources: + + ``` erlang + %% advanced.config + [ + {rabbitmq_federation, [ + %% 86400 seconds or 24 hours + {internal_exchange_check_interval, 86400000} + ]} + ]. + ``` + + GitHub issue: [rabbitmq/rabbitmq-federation#107](https://github.com/rabbitmq/rabbitmq-federation/pull/107) + + +## 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.7.27.tar.xz`. diff --git a/release-notes/3.7.28.md b/release-notes/3.7.28.md new file mode 100644 index 0000000000..0156fa2dee --- /dev/null +++ b/release-notes/3.7.28.md @@ -0,0 +1,64 @@ +## RabbitMQ 3.7.28 + +RabbitMQ `3.7.28` is a security patch release. + + +RabbitMQ `3.7.x` series are out of general support and covered by the [limited extended support policy](https://www.rabbitmq.com/versions.html) +through October 1st, 2020. +Please consider [upgrading](https://www.rabbitmq.com/upgrade.html) to [RabbitMQ `3.8.x`](https://www.rabbitmq.com/changelog.html). + +RabbitMQ Core team would like to thank Ofir Hamam and Tomer Hadad at Ernst & Young's Hacktics Advanced Security Center +for researching and responsibly disclosing the vulnerability addressed in this release. + +### Erlang/OTP Compatibility Notes + +This release [**no longer supports Erlang/OTP 20.3**](https://groups.google.com/d/msg/rabbitmq-users/G4UJ9zbIYHs/qCeyjkjyCQAJ). +Erlang `21.3+` is now a **hard requirement** checked on node startup. + +Make sure a [supported Erlang version](https://www.rabbitmq.com/which-erlang.html) is used before upgrading. +[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 `21.3.x` and `22.x`. + +### Compatibility Notes + +#### Upgrading to Erlang 21.x or Later Versions + +When upgrading to this release **and upgrading Erlang to 21.x or later** at the same time, 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 before Erlang**. + +#### Upgrade Doc Guides and Change Log + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.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. + +### 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 + +### Core Server + +#### Bug Fixes + + * Addressed a Windows-specific binary planting security vulnerability [CVE-2020-5419](https://tanzu.vmware.com/security/cve-2020-5419) that allowed for arbitrary code execution. + The vulnerability requires the attacker to have local access and elevated privileges, + and cannot be executed remotely. + + [CVSS score](https://www.first.org/cvss/calculator/3.0#CVSS:3.0/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H): `6.7` (medium severity). + + This vulnerability was researched and [responsibly disclosed](https://www.rabbitmq.com/contact.html#security) by + Ofir Hamam and Tomer Hadad at Ernst & Young's Hacktics Advanced Security Center. + + + +## 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.7.28.tar.xz`. diff --git a/release-notes/3.7.3.md b/release-notes/3.7.3.md new file mode 100644 index 0000000000..46f276ecc6 --- /dev/null +++ b/release-notes/3.7.3.md @@ -0,0 +1,110 @@ +## RabbitMQ 3.7.3 + +RabbitMQ `3.7.3` is a patch release with some bug fixes and enhancements. + +### Upgrades and Compatibility + +This release has no known incompatibilities with earlier 3.7.x versions. +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.0) upgrade and compatibility notes if upgrading from an earlier release. + +See the [Upgrading guide](https://www.rabbitmq.com/upgrade.html) for general documentation on upgrades. + +See [RabbitMQ change log](https://www.rabbitmq.com/changelog.html) for release notes of other releases. + + +## Changes + +### Core Server + +#### Bug Fixes + + * Logging to `amq.rabbitmq.log` exchange is available again as a logging mechanism. Note that + the user must opt-in by setting `log.exchange = true` in the [config file](http://rabbitmq.com/configure.html). + + GitHub issue: [rabbitmq-server#1456](https://github.com/rabbitmq/rabbitmq-server/issues/1456) + + * During node boot, the logger will temporarily accept a much higher maximum rate so that no messages are dropped. + + GitHub issue: [rabbitmq-server#1471](https://github.com/rabbitmq/rabbitmq-server/issues/1471) + + * Plugin activation could hang if a plugin's channel interceptor failed to activate with an exception. + + GitHub issue: [rabbitmq-server#1477](https://github.com/rabbitmq/rabbitmq-server/pull/1477) + + * During node boot, virtual host that are not yet initialised could be queried for status, which + resulted in log noise. + + GitHub issue: [rabbitmq-server#1472](https://github.com/rabbitmq/rabbitmq-server/pull/1482) + +#### Enhancements + + * [Internal authN backend](https://www.rabbitmq.com/access-control.html) will now prohibit logins with blank passwords. Such attempts + are usually made by mistake because a passwordless user that was meant to authenticate + using [x509 (TLS) certificates](https://github.com/rabbitmq/rabbitmq-auth-mechanism-ssl/) was not configured to use the correct [authentication + mechanism](https://www.rabbitmq.com/authentication.html). + + Note that the same behavior can already be achieved using a [credential validator](https://www.rabbitmq.com/passwords.html), so this is + just an extra safety measure. + + GitHub issue: [rabbitmq-server#1465](https://github.com/rabbitmq/rabbitmq-server/pull/1465) + + +### Management Plugin + +#### Bug Fixes + + * Definition import now stores global parameters in a way that the MQTT plugin expects. + + GitHub issue: [rabbitmq-management#528](https://github.com/rabbitmq/rabbitmq-management/issues/528) + + * User update form now successfully updates tags for passwordless users (or if the password is cleared at the same time). + + GitHub issue: [rabbitmq-management#533](https://github.com/rabbitmq/rabbitmq-management/issues/533) + +#### Enhancements + + * Requeue is now the default option in the Get Messages section. + + Contributed by @dparkinson. + + GitHub issue: [rabbitmq-management#542](https://github.com/rabbitmq/rabbitmq-management/pull/542) + + * For [passwordless users](https://www.rabbitmq.com/passwords.html), the "no password" option on the user editing form is now preselected. + + GitHub issue: [rabbitmq-management#537](https://github.com/rabbitmq/rabbitmq-management/issues/537) + + +### LDAP AuthN/AuthZ Backend Plugin + +#### Bug Fixes + + * More config keys are now supported via [new style config format](https://www.rabbitmq.com/configure.html). + + GitHub issue: [rabbitmq-auth-backend-ldap#78](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/78) + + +### Peer Discovery Consul Plugin + + * When a node registers with Consul it will now set its initial health check status to `passing`. + Previously the node would be in the `critical` state until it first reported its health for the + first time (in 15 seconds with default settings), which could prevent its peers from discovering it. + + Kudos to @andersenleo for investigating this issue and recommending a solution. + + GitHub issue: [rabbitmq-peer-discovery-consul#8](https://github.com/rabbitmq/rabbitmq-peer-discovery-consul/issues/8) + + +### CLI Tools + +#### Bug Fixes + + * CLI tools honor `RABBITMQ_CTL_ERL_ARGS` again. + + GitHub issue: [rabbitmq-server#1461](https://github.com/rabbitmq/rabbitmq-server/issues/1461) + + + +## 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.7.3.tar.gz`. diff --git a/release-notes/3.7.4.md b/release-notes/3.7.4.md new file mode 100644 index 0000000000..82499b0493 --- /dev/null +++ b/release-notes/3.7.4.md @@ -0,0 +1,117 @@ +## RabbitMQ 3.7.4 + +RabbitMQ `3.7.4` is a patch release that primarily includes bug fixes. + +### Upgrades and Compatibility + +This release has no known incompatibilities with earlier 3.7.x versions. +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.0) upgrade and compatibility notes if upgrading from an earlier release. + +See the [Upgrading guide](https://www.rabbitmq.com/upgrade.html) for general documentation on upgrades. + +See [RabbitMQ change log](https://www.rabbitmq.com/changelog.html) for release notes of other releases. + + +## Changes + +### Core Server + +#### Bug Fixes + + * Priority queues could terminate when the node was under memory pressure and needed to + offload messages to disk. + + GitHub issue: [rabbitmq-server#1535](https://github.com/rabbitmq/rabbitmq-server/issues/1535) + + * queue leader locator strategy of `min-masters` was affected by queue binding count and could + select the wrong node. + + GitHub issue: [rabbitmq-server#1519](https://github.com/rabbitmq/rabbitmq-server/issues/1519) + + * It was not possible to set [randomized startup delay](https://www.rabbitmq.com/cluster-formation.html#initial-formation-race-condition) range via new style config file. + + GitHub issue: [rabbitmq-server#1531](https://github.com/rabbitmq/rabbitmq-server/issues/1531) + + * Windows scripts used `USE_LONGNAME` from the env file incorrectly. + + GitHub issue: [rabbitmq-server#1508](https://github.com/rabbitmq/rabbitmq-server/issues/1508) + + * systemd notification implementation was prone to shell escaping issues. + + GitHub issue: [rabbitmq-server#1187](https://github.com/rabbitmq/rabbitmq-server/issues/1187) + + * It wasn't possible to configure `delegate_count` via new style config file. + + GitHub issue: [rabbitmq-server#1497](https://github.com/rabbitmq/rabbitmq-server/issues/1497) + + * It wasn't possible to configure `net_ticktime` via new style config file. + + GitHub issue: [rabbitmq-server#1522](https://github.com/rabbitmq/rabbitmq-server/issues/1522) + +#### Enhancement + + * It is now possible to configure max number of Erlang processes and atoms using + `RABBITMQ_MAX_NUMBER_OF_PROCESSES` (`MAX_NUMBER_OF_PROCESSES` in `rabbitmq-env.conf`) and `RABBITMQ_MAX_NUMBER_OF_ATOMS` + (`MAX_NUMBER_OF_ATOMS`) environment variables, respectively. + + GitHub issue: [rabbitmq-server#1528](https://github.com/rabbitmq/rabbitmq-server/pull/1528) + + * `SCHEDULER_BIND_TYPE` and `DISTRIBUTION_BUFFER_SIZE` now can be used in `rabbitmq-env.conf` without + the `RABBITMQ_` prefix. + + GitHub issue: [rabbitmq-server#1528](https://github.com/rabbitmq/rabbitmq-server/pull/1528) + + +### CLI Tools + +#### Bug Fixes + + * `rabbitmq-plugins set` failed when was used in offline mode (with `--offline`) + + GitHub issue: [rabbitmq-cli#241](https://github.com/rabbitmq/rabbitmq-cli/issues/241) + + * `rabbitmqctl list_*` command streaming now can be restricted to a set of client TCP ports + used to contact RabbitMQ nodes. + + GitHub issue: [rabbitmq-cli#237](https://github.com/rabbitmq/rabbitmq-cli/issues/237) + + +### Management Plugin + +#### Bugs + + * Valid definitions could be rejected as invalid during import via HTTP API. + + GitHub issue: [rabbitmq-management#552](https://github.com/rabbitmq/rabbitmq-management/issues/552) + + * It wasn't possible to configure `path_prefix` via new style config file. + + GitHub issue: [rabbitmq-management#547](https://github.com/rabbitmq/rabbitmq-management/issues/547) + + +### Federation Plugin + +#### Bugs + + * Valid upstreams were rejected as invalid when imported from a definition file. + + GitHub issue: [rabbitmq-federation#70](https://github.com/rabbitmq/rabbitmq-federation/issues/70) + + * Valid upstream sets were rejected as invalid when added using CLI tools. + + GitHub issue: [rabbitmq-federation#67](https://github.com/rabbitmq/rabbitmq-federation/issues/67) + + +### Peer Discovery AWS Plugin + +#### Bugs + + * The plugin skipped registration and thus [randomized startup delay](https://www.rabbitmq.com/cluster-formation.html#initial-formation-race-condition) injection. + + GitHub issue: [rabbitmq-peer-discovery-aws#17](https://github.com/rabbitmq/rabbitmq-peer-discovery-aws/issues/17) + + +## 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.7.4.tar.gz`. diff --git a/release-notes/3.7.5.md b/release-notes/3.7.5.md new file mode 100644 index 0000000000..62539fc2a0 --- /dev/null +++ b/release-notes/3.7.5.md @@ -0,0 +1,201 @@ +## RabbitMQ 3.7.5 + +RabbitMQ `3.7.5` a maintenance release that primarily includes bug fixes. + +### Upgrades and Compatibility + +This release includes one **potential incompatibility** with earlier `3.7.x` releases. It will only affect applications that use a lot (at least hundreds) of channels per connection. Previous behavior can be restored via configuration. + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.0) upgrade and compatibility notes if upgrading from an earlier release. + +See the [Upgrading guide](https://www.rabbitmq.com/upgrade.html) for general documentation on upgrades. + +See [RabbitMQ change log](https://www.rabbitmq.com/changelog.html) for release notes of other releases. + + +## Changes + +### Core Server + +#### Bug Fixes + + * Topic authorisation check could fail with an exception. + + GitHub issue: [rabbitmq-server#1538](https://github.com/rabbitmq/rabbitmq-server/issues/1538) + + * Some runtime parameters and operator policies were rejected during definition import. + + GitHub issue: [rabbitmq-management#565](https://github.com/rabbitmq/rabbitmq-management/issues/565), [rabbitmq-federation#73](https://github.com/rabbitmq/rabbitmq-federation/issues/73) + + * Queues could run into an exception under memory pressure. + + GitHub issue: [rabbitmq-server#1582](https://github.com/rabbitmq/rabbitmq-server/issues/1582) + + * During parallel cluster formation nodes could run into an exception when inserting seed data + (default virtual host, user and permissions). + + GitHub issue: [rabbitmq-server#1556](https://github.com/rabbitmq/rabbitmq-server/pull/1556) + +#### Enhancements + + * New `ha-promote-on-failure` queue mirroring setting to augment already existing `ha-promote-on-shutdown`. + + GitHub issue: [rabbitmq-server#1578](https://github.com/rabbitmq/rabbitmq-server/pull/1578) + + * `queue.delete` operations will now force delete queues that don't have a [promotable + master](https://www.rabbitmq.com/ha.html#unsynchronised-mirrors). + + GitHub issue: [rabbitmq-server#1501](https://github.com/rabbitmq/rabbitmq-server/issues/1501) + + * Lock contention in internal database is now much lower when a node with a lot of exclusive queues + shuts down or is otherwise considered to be unavailable by peers. This means fewer CPU cycles + spent cleaning up the exclusive queues. + + GitHub issue: [rabbitmq-server#1570](https://github.com/rabbitmq/rabbitmq-server/pull/1570) + + * Default [max number of channels allowed on a connection](https://www.rabbitmq.com/networking.html#tuning-for-large-number-of-connections-channel-max) (a.k.a. `channel_max`) has been lowered from `65535` to `2047`. + The new default is much safer and will reduce the effect application channel leaks have on node resource consumption. **This is a potentially breaking change**. + + Systems where a lot (at least hundreds) of channels *per connection* are used should explicitly override `channel_max` in the [config file](https://www.rabbitmq.com/configure.html) to a higher suitable value, e.g.: + + ``` + channel_max = 4000 + ``` + + GitHub issue: [rabbitmq-server#1593](https://github.com/rabbitmq/rabbitmq-server/issues/1593) + + * [Ranch](https://github.com/ninenines/ranch) dependency has been updated to `1.5.x` which should prevent rare cases of mass termination of client connections. + + +### CLI Tools + +#### Bug Fixes + + * `-t` (`--timeout`) is now only displayed for commands that will actually use it. + + GitHub issue: [rabbitmq-cli#236](https://github.com/rabbitmq/rabbitmq-cli/issues/236) + + +### Management Plugin + +#### Bug Fixes + + * `GET /api/overview` could fail if SNI for management plugin listener was configured. + + GitHub issue: [rabbitmq-management#567](https://github.com/rabbitmq/rabbitmq-management/issues/567) + + * `rabbitmqadmin` could run into an exception with certain formatting settings on Python 2.x. + + GitHub issue: [rabbitmq-management#568](https://github.com/rabbitmq/rabbitmq-management/issues/568) + + * HTTP API stats documentation used incorrect field names. + + GitHub issue: [rabbitmq-management#561](https://github.com/rabbitmq/rabbitmq-management/pull/561) + + +### LDAP Plugin + +#### Bug Fixes + + * LDAP server-initiated connection closure was not handled gracefully by connection pool. + Kudos to Adam Gardner for [doing all the hard work](https://groups.google.com/forum/#!topic/rabbitmq-users/4Gva3h-yJzM) investigating this issue. + + GitHub issues: [rabbitmq-auth-backend-ldap#82](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/82), [rabbitmq-auth-backend-ldap#90](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/90) + + * `auth_ldap.idle_timeout` now defaults to 300 seconds instead of `infinity`. + + GitHub issue: [rabbitmq-auth-backend-ldap#81](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/81) + + * `group_lookup_base` was not configurable via the new style config format. + + GitHub issue: [rabbitmq-auth-backend-ldap#85](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/85) + + * `auth_ldap.log` didn't accept `network_unsafe` for severity value. + + GitHub issue: [rabbitmq-auth-backend-ldap#86](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/86) + +#### Enhancements + + * It is now possible to configure TLS options for LDAP server connections via the [new style config format](https://www.rabbitmq.com/configure.html). + + GitHub issue: [rabbitmq-auth-backend-ldap#88](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/88) + + +### Federation Plugin + +#### Bug Fixes + + * Federation upstream sets could run into a type error with exchange federation. + + GitHub issue: [rabbitmq-federation#75](https://github.com/rabbitmq/rabbitmq-federation/issues/75) + + +### Shovel Plugin + +#### Bug Fixes + + * Valid dynamic Shovel properties can be rejected by validation. + + GitHub issue: [rabbitmq-shovel#38](https://github.com/rabbitmq/rabbitmq-shovel/issues/38) + + * Shovel names are again included into (application-provided) connection names and can therefore + be seen in the management UI. + + GitHub issue: [rabbitmq-shovel#40](https://github.com/rabbitmq/rabbitmq-shovel/issues/40) + + +### Peer Discovery AWS Plugin + +#### Bug Fixes + + * China-based AWS regions now use a correct base API URI. + + GitHub issue: [rabbitmq-peer-discovery-aws#23](https://github.com/rabbitmq/rabbitmq-peer-discovery-aws/issues/23) + + * The plugin could fail to discover all nodes in a returned instance set. + + GitHub issue: [rabbitmq-peer-discovery-aws#20](https://github.com/rabbitmq/rabbitmq-peer-discovery-aws/issues/20) + + +### Peer Discovery Kubernetes Plugin + +#### Enhnacements + + * The plugin now supports [randomized startup delay](https://www.rabbitmq.com/cluster-formation.html#initial-formation-race-condition) with much lower default values + since RSD is [not really necessary](https://www.rabbitmq.com/cluster-formation.html#peer-discovery-k8s) for stateful set deployments. + + GitHub issue: [rabbitmq-peer-discovery-k8s#23](https://github.com/rabbitmq/rabbitmq-peer-discovery-k8s/issues/23) + + +### AMQP 1.0 Client + +#### Bug Fixes + + * It wasn't possible to send some messages using QPid JMS client over AMQP 1.0. + + GitHub issue: [rabbitmq-amqp1.0#61](https://github.com/rabbitmq/rabbitmq-amqp1.0/issues/61) + + +### Web MQTT Plugin + +#### Bug Fixes + + * New style config format was not interpreting IP addresses correctly. + + GitHub issue: [rabbitmq-web-mqtt#26](https://github.com/rabbitmq/rabbitmq-web-mqtt/issues/26) + + +### Web STOMP Plugin + +#### Bug Fixes + + * It wasn't possible to configure TCP listener(s) in the new style config format. + + GitHub issue: [rabbitmq-web-stomp#82](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/82) + + + +## 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.7.5.tar.gz`. diff --git a/release-notes/3.7.6.md b/release-notes/3.7.6.md new file mode 100644 index 0000000000..0aaaceb4db --- /dev/null +++ b/release-notes/3.7.6.md @@ -0,0 +1,122 @@ +## RabbitMQ 3.7.6 + +RabbitMQ `3.7.6` a maintenance release that primarily includes bug fixes. + +### Upgrades and Compatibility + +This release includes one **potential incompatibility** with earlier `3.7.x` releases. Only systems +that use a high number (hundreds) of [queue priorities](https://www.rabbitmq.com/priority.html) are affected. + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.0) upgrade and compatibility notes if upgrading from an earlier release. + +See the [Upgrading guide](https://www.rabbitmq.com/upgrade.html) for general documentation on upgrades. + +See [RabbitMQ change log](https://www.rabbitmq.com/changelog.html) for release notes of other releases. + + +## Changes + +### Core Server + +#### Bug Fixes + + * Max priority cap for queues is now enforced and set to 255. Applications that rely on a higher number of priorities **will break**. + Such applications must be updated to use no more than 255 priorities. + + GitHub issue: [rabbitmq-server#1590](https://github.com/rabbitmq/rabbitmq-server/issues/1590) + + * Bulk deletion of exclusive queues when their owning connection closes has been optimized. + + GitHub issues: [rabbitmq/rabbitmq-server#1566](https://github.com/rabbitmq/rabbitmq-server/issues/1566), [rabbitmq/rabbitmq-server#1513](https://github.com/rabbitmq/rabbitmq-server/issues/1513) + + +#### Enhancements + + * On Erlang 20.2.3 or later, more optimal memory allocators will be used. On some workloads that leads + to [significant reduction in node's RAM consumption](https://groups.google.com/d/msg/rabbitmq-users/LSYaac9frYw/LNZDZUlrBAAJ). The change is workload-specific, however, on the workloads + tested that do introduce a negative effect (more RAM used) the difference was very small (about 1%). + + + It is possible to go back to the previous settings, `+MBas aoffcbf +MHas aoffcbf +MBlmbcs 5120 +MHlmbcs 5120 +MMmcs 10`, + by specifying them in the `RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS` [environment variable](https://www.rabbitmq.com/configure.html#customise-environment). + + On Erlang/OTP releases older than 20.2.3 there will be no default changes. + + GitHub issue: [rabbitmq/rabbitmq-server#1604](https://github.com/rabbitmq/rabbitmq-server/pull/1604) + + * [Logging to Syslog](https://www.rabbitmq.com/logging.html#logging-to-syslog) without 3rd party plugins. + + GitHub issue: [rabbitmq-server#1600](https://github.com/rabbitmq/rabbitmq-server/pull/1600) + + * `connection.closed` events now include client-provided connection name and more client details. + That information is in turn available via the [rabbitmq_event_exchange](https://github.com/rabbitmq/rabbitmq-event-exchange). + + GitHub issue: [rabbitmq-server#1596](https://github.com/rabbitmq/rabbitmq-server/issues/1596) + + +### CLI Tools + +#### Enhancements + + * `await_online_nodes [--timeout ]` is a new command that will wait until the target + node's cluster has at least `` nodes. The command supports a timeout. It is meant to simplify + cluster provisioning automation and can be used as the very first check performed after starting a node. + + Note that the command requires at least one node to be running and reachable. + + GitHub issue: [rabbitmq-cli#235](https://github.com/rabbitmq/rabbitmq-cli/issues/235) + + * `rabbitmq-diagnostics ping [--node --timeout ]` is a new minimalistic health check command. + It only verifies if the target node is up, registered with epmd and accepts/authenticates CLI tool connections. + It fills the gap between `rabbitmq-diagnostics node_health_check`, which performs a lot of checks, take a lot more time + and is fairly opinionated in what it does. `ping` is more suitable in environments where + failing aliveness checks will result in node restarts, namely Kubernetes. + + GitHub issue: [rabbitmq-cli#253](https://github.com/rabbitmq/rabbitmq-cli/issues/253) + + +### Management and Management Agent Plugins + +#### Bug Fixes + + * Queue metrics could be missing after a node restart or plugin [re-]enablement. + + GitHub issue: [rabbitmq/rabbitmq-management-agent#58](https://github.com/rabbitmq/rabbitmq-management-agent/issues/58) + + * `rabbitmqadmin` now correctly percent-encodes spaces in connection names. + + GitHub issue: [rabbitmq/rabbitmq-management#576](https://github.com/rabbitmq/rabbitmq-management/issues/576) + + * When creating a new vhost, user permissions will only be granted to the users that exist in the + internal database. If an external authentication/authorisation service is used, the step is skipped. + + GitHub issue: [rabbitmq-management#531](https://github.com/rabbitmq/rabbitmq-management/issues/531) + + * Virtual host imported from definitions or created via HTTP API will explicitly await for the vhost to initialise + on all cluster nodes. + + GitHub issue: [rabbitmq/rabbitmq-management#575](https://github.com/rabbitmq/rabbitmq-management/issues/575) + + +### LDAP Plugin + +#### Bug Fixes + + * LDAP connection pool now correctly purges connections in more failure scenarios (e.g. LDAP server restart) + + GitHub issue: [rabbitmq-auth-backend-ldap#92](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/92) + + +### HTTP Authentication/authorisation Plugin + +#### Enhancements + + * `201 Created` responses are now accepted from HTTP services that back the plugin. + + GitHub issue: [rabbitmq-auth-backend-http#68](https://github.com/rabbitmq/rabbitmq-auth-backend-http/pull/68) + + +## 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.7.6.tar.gz`. diff --git a/release-notes/3.7.7.md b/release-notes/3.7.7.md new file mode 100644 index 0000000000..e4994c4fc6 --- /dev/null +++ b/release-notes/3.7.7.md @@ -0,0 +1,86 @@ +## RabbitMQ 3.7.7 + +RabbitMQ `3.7.7` a maintenance release. This release introduces +compatibility with [Erlang/OTP 21](http://www.erlang.org/news/123). + +### Upgrades and Compatibility + +This release has no known incompatibilities with earlier `3.7.x` releases. + +#### Upgrading to Erlang 21.0 + +When upgrading to this release **and upgrading Erlang to 21.0** at the same time, extra care has to be taken. +Since CLI tools from any earlier RabbitMQ release will fail on Erlang 21, RabbitMQ **must be upgraded before Erlang**. + +#### Documentation Guides and Change Log + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.0) upgrade and +compatibility notes 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. + + +## Changes + +### Core Server + +#### Enhancements + + * This release is compatible with [Erlang/OTP 21](http://www.erlang.org/news/123), the newest major + Erlang runtime release. + + GitHub issue: [rabbitmq/rabbitmq-server#1616](https://github.com/rabbitmq/rabbitmq-server/issues/1616) + + * Windows installer will now take default [Erlang cookie](https://www.rabbitmq.com/cli.html#erlang-cookie) location differences between Erlang versions into account. + + GitHub issue: [rabbitmq/rabbitmq-server-release#82](https://github.com/rabbitmq/rabbitmq-server-release/pull/82) + + +### Management Plugin + +#### Enhancements + + * It is now possible to configure Web browser session timeout. Default is still 8 hours. + + GitHub issue: [rabbitmq/rabbitmq-management#584](https://github.com/rabbitmq/rabbitmq-management/pull/584) + + +### Federation Plugin + +#### Bug Fixes + + * Direct connections downstream were not closed in some cases. + + Contributed by Ricardo Gonçalves. + + GitHub issue: [rabbitmq/rabbitmq-federation#76](https://github.com/rabbitmq/rabbitmq-federation/issues/76) + + +### LDAP Plugin + +#### Bug Fixes + + * It wasn't possible to set `auth_ldap.dn_lookup_bind` to the value of `anon` in the new style config format. + + GitHub issue: [rabbitmq/rabbitmq-auth-backend-ldap#94](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/94) + +### Consul Peer Discovery Plugin + +#### Bug Fixes + + * The following combination of settings was rejected by the plugin, even though they are reasonable + and were recommended by the docs: + + ``` ini + cluster_formation.consul.svc_addr_auto = true + # en0 is just an example, it could be any other NIC name + cluster_formation.consul.svc_addr_nic = en0 + ``` + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-consul#12](https://github.com/rabbitmq/rabbitmq-peer-discovery-consul/issues/12) + +## 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.7.7.tar.gz`. diff --git a/release-notes/3.7.8.md b/release-notes/3.7.8.md new file mode 100644 index 0000000000..76270e4d86 --- /dev/null +++ b/release-notes/3.7.8.md @@ -0,0 +1,339 @@ +## RabbitMQ 3.7.8 + +RabbitMQ `3.7.8` a maintenance release. It focuses on bug fixes and +further improves [Erlang/OTP 21](http://www.erlang.org/news/123) compatibility. + +### Compatibility Notes + +This release has no known incompatibilities with earlier `3.7.x` releases. + +#### Upgrading to Erlang 21.0 + +When upgrading to this release **and upgrading Erlang to 21.0** at the same time, extra care has to be taken. +Since CLI tools from RabbitMQ releases older than 3.7.7 will fail on Erlang 21, RabbitMQ **must be upgraded before Erlang**. + +#### Documentation Guides and Change Log + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.0) upgrade and +compatibility notes 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. + + +## Changes + +### Core Server + +#### Bug Fixes + + * Virtual host (specifically binding) recovery has been optimized. + + GitHub issue: [rabbitmq/rabbitmq-server#1650](https://github.com/rabbitmq/rabbitmq-server/pull/1650) + + * A binding removal optimization was reverted because it could result in custom exchange type state not cleaned up + as plugin authors intended. + + GitHub issue: [rabbitmq/rabbitmq-server#1691](https://github.com/rabbitmq/rabbitmq-server/pull/1691) + + * A queue sync operation now can be cancelled when a resource alarm is in effect on the receiving node. + + GitHub issue: [rabbitmq/rabbitmq-server#1636](https://github.com/rabbitmq/rabbitmq-server/issues/1636) + + * Inter-node communication port (a.k.a. distribution port) unintentionally used an excessively large + buffer size (1.2 GB instead of 128 MB). Kudos to Chris Friesen for noticing and reporting this. + + GitHub issue: [rabbitmq/rabbitmq-server#1659](https://github.com/rabbitmq/rabbitmq-server/issues/1659) + + * More idempotent binding removal. + + When transactions that removed bindings were rolled back and retried, the code + that performed the deletion could fail with a misleading assertion failure, `{error, not_found}`. + + GitHub issue: [rabbitmq/rabbitmq-server#1689](https://github.com/rabbitmq/rabbitmq-server/pull/1689) + + * A resource alarm triggered during boot could prevent node from starting. + + GitHub issue: [rabbitmq/rabbitmq-server#1644](https://github.com/rabbitmq/rabbitmq-server/issues/1644) + + * Environments with high queue or channel churn could run into an exception in local process group. + + GitHub issue: [rabbitmq/rabbitmq-server#1699](https://github.com/rabbitmq/rabbitmq-server/issues/1699) + + * Priority queues no longer fail with an exception when used together with other `rabbit_backing_queue` + behaviour implementations. + + Contributed by Matteo Cafasso. + + GitHub issue: [rabbitmq/rabbitmq-server#1669](https://github.com/rabbitmq/rabbitmq-server/pull/1669) + + * Syslog configuration parameters could be rejected by config validator. + + GitHub issue: [rabbitmq/rabbitmq-server#1639](https://github.com/rabbitmq/rabbitmq-server/issues/1639) + + * `rabbitmq-echopid.bat` now loads `rabbitmq-env.bat` correctly. + + GitHub issue: [rabbitmq/rabbitmq-server#1642](https://github.com/rabbitmq/rabbitmq-server/issues/1642) + +#### Enhancements + + * Improved config file validation and loading. For example, `advanced.config` now can be used + without the main `rabbitmq.conf` config file. + + GitHub issue: [rabbitmq/rabbitmq-server#1671](https://github.com/rabbitmq/rabbitmq-server/pull/1671) + + * On Erlang/OTP 21 Syslog server now can be configured using a hostname (not just an IP address). + + GitHub issue: [rabbitmq/rabbitmq-server#1658](https://github.com/rabbitmq/rabbitmq-server/pull/1658) + + * `rabbitmqctl rename_cluster_node` documentation improvements. + + GitHub issue: [rabbitmq/rabbitmq-server#1641](https://github.com/rabbitmq/rabbitmq-server/pull/1641) + + +### CLI Tools + +#### Bug Fixes + + * Policies were unintentionally excluded from `rabbitmqctl report` output. + + Contributed by Ayanda Dube. + + GitHub issue: [rabbitmq/rabbitmq-cli#256](https://github.com/rabbitmq/rabbitmq-cli/pull/256) + + * Global parameters were unintentionally excluded from `rabbitmqctl report` output. + + GitHub issue: [rabbitmq/rabbitmq-cli#258](https://github.com/rabbitmq/rabbitmq-cli/pull/258) + + +### Management Plugin + +#### Bug Fixes + + * Virtual host imported from definitions or created via HTTP API will explicitly await for the vhost to initialise + on all cluster nodes. This change was previously scheduled for `3.7.6` but was only partially applied (didn't have any effect on HTTP API clients). + + GitHub issues: [rabbitmq/rabbitmq-management#575](https://github.com/rabbitmq/rabbitmq-management/issues/575), [rabbitmq/rabbitmq-management#591](https://github.com/rabbitmq/rabbitmq-management/pull/591) + + * HTTP API connection endpoints returned a duplicate key, `node`. + + GitHub issue: [rabbitmq/rabbitmq-management#601](https://github.com/rabbitmq/rabbitmq-management/issues/601) + + * Response compression wasn't enabled by default for compatible clients. + + * Failed login error message now clears automatically after successful login. + + GitHub issue: [rabbitmq/rabbitmq-management#609](https://github.com/rabbitmq/rabbitmq-management/issues/609) + +#### Enhancements + + * Cowboy listener settings now can be configured using new style config file. + + GitHub issue: [rabbitmq/rabbitmq-management#596](https://github.com/rabbitmq/rabbitmq-management/issues/596) + + * Cowboy timeouts now can be configured. + + GitHub issues: [rabbitmq/rabbitmq-management#594](https://github.com/rabbitmq/rabbitmq-management/issues/594) + + * `rabbitmqadmin` now supports a new argument, `--request-timeout`. + + GitHub issue: [rabbitmq/rabbitmq-management#593](https://github.com/rabbitmq/rabbitmq-management/issues/593) + + * Switching sections will now scroll to the top of the newly rendered page. + + GitHub issue: [rabbitmq/rabbitmq-management#590](https://github.com/rabbitmq/rabbitmq-management/pull/590) + + +### Consistent Hashing Exchange Plugin + +#### Enhancements + + * Message distribution uniformity has been significantly improved. [Jump Consistent Hash](https://arxiv.org/abs/1406.2294) is now used for + the hashing function. + + GitHub issue: [rabbitmq/rabbitmq-consistent-hash-exchange#37](https://github.com/rabbitmq/rabbitmq-consistent-hash-exchange/issues/37) + + +### STOMP Plugin + +#### Bug Fixes + + * Nodes experiencing very high connection churn could run out of Erlang processes. + + GitHub issues: [rabbitmq/rabbitmq-stomp#125](https://github.com/rabbitmq/rabbitmq-stomp/pull/125), [rabbitmq/rabbitmq-server#1640](https://github.com/rabbitmq/rabbitmq-server/pull/1640) + + +### Web STOMP Plugin + +#### Enhancements + + * WebSocket endpoint path is now configurable. + + GitHub issue: [rabbitmq/rabbitmq-web-stomp#86](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/86) + + +### MQTT Plugin + + * Session presence flag was always set to `true` regardless of the state of client connection session. + + GitHub issue: [rabbitmq/rabbitmq-mqtt#163](https://github.com/rabbitmq/rabbitmq-mqtt/issues/163) + + +### Web MQTT Plugin + +#### Enhancements + + * WebSocket endpoint path is now configurable. + + Contributed by Thomas Sauzeau. + + GitHub issue: [rabbitmq/rabbitmq-web-mqtt#30](https://github.com/rabbitmq/rabbitmq-web-mqtt/pull/30) + + +### Shovel Plugin + +#### Bug Fixes + + * The plugin could try to try to forward messages consumed from the source before receiving + credit from the AMQP 1.0 destination. + + GitHub issue: [rabbitmq/rabbitmq-shovel#44](https://github.com/rabbitmq/rabbitmq-shovel/pull/44) + +#### Enhancements + +* `sasl=plain` is now added to connection URIs if no other mechanism is specified explicitly + by the user. + + GitHub issue: [rabbitmq/rabbitmq-amqp1.0-client#10](https://github.com/rabbitmq/rabbitmq-amqp1.0-client/issues/10) + + * TLS version for AMQP 1.0 endpoints now can be configured via a connection URI query parameter. + + GitHub issue: [rabbitmq/rabbitmq-amqp1.0-client#19](https://github.com/rabbitmq/rabbitmq-amqp1.0-client/issues/19) + + * Specifying a port without a hostname in connection URI is now considered + to be an unsupported combination and will throw an error. + + GitHub issue: [rabbitmq/rabbitmq-erlang-client#107](https://github.com/rabbitmq/rabbitmq-erlang-client/issues/107) + + +### Federation Plugin + +#### Bug Fixes + + * Improved OTP release handling compatibility. + + Contributed by Ayanda Dube. + + GitHub issue: [rabbitmq/rabbitmq-federation#78](https://github.com/rabbitmq/rabbitmq-federation/pull/78) + +#### Enhancements + + * Link initialization optimizations. + + Contributed by Ayanda Dube. + + GitHub issues: [rabbitmq/rabbitmq-federation#79](https://github.com/rabbitmq/rabbitmq-federation/pull/79), [rabbitmq/rabbitmq-federation#80](https://github.com/rabbitmq/rabbitmq-federation/pull/80) + + * Specifying a port without a hostname in connection URI is now considered + to be an unsupported combination and will throw an error. + + GitHub issue: [rabbitmq/rabbitmq-erlang-client#107](https://github.com/rabbitmq/rabbitmq-erlang-client/issues/107) + + +### Peer Discovery Etcd Plugin + +#### Bug Fixes + + * Node name is now correctly extracted from the keys returned by + etcd even when key prefix includes slashes. + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-etcd#14](https://github.com/rabbitmq/rabbitmq-peer-discovery-etcd/issues/14) + + +### Debian Package + +#### Bug Fixes + + * Package installation scripts will make sure that the `/etc/rabbitmq` directory is readable. + + GitHub issue: [rabbitmq/rabbitmq-server-release#72](https://github.com/rabbitmq/rabbitmq-server-release/pull/72) + + +### RPM Package + +#### Bug Fixes + + * Package installation scripts will make sure that the `/etc/rabbitmq` directory is readable. + + GitHub issue: [rabbitmq/rabbitmq-server-release#72](https://github.com/rabbitmq/rabbitmq-server-release/pull/72) + + * If `rabbitmq-plugins` is invoked before first server start, Erlang cookie permissions will + be correctly set to those of the RabbitMQ user and group (currently `rabbitmq`). + + GitHub issue: [rabbitmq/rabbitmq-server-release#85](https://github.com/rabbitmq/rabbitmq-server-release/issues/85) + + +### Event Exchange Plugin + +#### Bug Fixes + + * `amq.rabbitmq.event` exchange is now deleted when plugin is disabled. + + GitHub issue: [rabbitmq/rabbitmq-event-exchange#33](https://github.com/rabbitmq/rabbitmq-event-exchange/issues/33) + +#### Enhancements + + * The plugin now can be configured using new style config file: + +``` ini +rabbitmq_event_exchange.vhost = audit +``` + + GitHub issue: [rabbitmq/rabbitmq-event-exchange#31](https://github.com/rabbitmq/rabbitmq-event-exchange/issues/31) + + +### Tracing Plugin + +#### Enhancements + + * It is now possible to set up a tracer on any cluster node via management UI and HTTP API. + + GitHub issue: [rabbitmq/rabbitmq-tracing#24](https://github.com/rabbitmq/rabbitmq-tracing/pull/24) + + * Tracer connection credentials now can be specified via the management UI and HTTP API. + + GitHub issue: [rabbitmq/rabbitmq-tracing#25](https://github.com/rabbitmq/rabbitmq-tracing/pull/25) + + +### AMQP 1.0 Erlang Client + +#### Enhancements + + * `sasl=plain` is now added to connection URIs if no other mechanism is specified explicitly + by the user. + + GitHub issue: [rabbitmq/rabbitmq-amqp1.0-client#10](https://github.com/rabbitmq/rabbitmq-amqp1.0-client/issues/10) + + * `hostname` connection parameter will now be set to the value of the `address` parameter for improved + compatibility with AMQP 1.0 implementations (e.g. Azure ServiceBus) that expect it to be set. + + GitHub issue: [rabbitmq/rabbitmq-amqp1.0-client#1](https://github.com/rabbitmq/rabbitmq-amqp1.0-client/issues/1) + + * TLS version now can be configured via a connection URI query parameter. + + GitHub issue: [rabbitmq/rabbitmq-amqp1.0-client#19](https://github.com/rabbitmq/rabbitmq-amqp1.0-client/issues/19) + +### AMQP 0-9-1 Erlang Client + +#### Enhancements + + * Specifying a port without a hostname in connection URI is now considered + to be an unsupported combination and will throw an error. + + GitHub issue: [rabbitmq/rabbitmq-erlang-client#107](https://github.com/rabbitmq/rabbitmq-erlang-client/issues/107) + + +## 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.7.8.tar.gz`. diff --git a/release-notes/3.7.9.md b/release-notes/3.7.9.md new file mode 100644 index 0000000000..bf8319ba73 --- /dev/null +++ b/release-notes/3.7.9.md @@ -0,0 +1,251 @@ +## RabbitMQ 3.7.9 + +RabbitMQ `3.7.9` is a maintenance release. It focuses on bug fixes and minor usability improvements. + +### Compatibility Notes + +CLI tools in this release will often produce an extra line of output, as they did in `3.6.x` releases, +when `-q` is not provided. Tools that parse CLI command output should use `-q --no-table-headers` to suppress all additional output meant for interactive use or +avoid parsing output entirely (e.g. use the HTTP API). + +#### Upgrading to Erlang 21.0 + +When upgrading to this release **and upgrading Erlang to 21.0** at the same time, extra care has to be taken. +Since CLI tools from RabbitMQ releases older than 3.7.7 will fail on Erlang 21, RabbitMQ **must be upgraded before Erlang**. + +#### Documentation Guides and Change Log + +See [3.7.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.0) upgrade and +compatibility notes 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. + + +## Changes + +### Core Server + +#### Bug Fixes + + * Queue deletion loaded bindings in an inefficient way. + + GitHub issue: [rabbitmq/rabbitmq-server#1690](https://github.com/rabbitmq/rabbitmq-server/issues/1690) + + * Heartbeat monitor now correctly sends heartbeats at half the negotiated timeout interval. + It previously could fail to do so because it considered its own traffic to be on-the-wire + activity from the peer. + + GitHub issue: [rabbitmq/rabbitmq-common#278](https://github.com/rabbitmq/rabbitmq-common/pull/278) + + * Nodes were using a [client] Syslog UDP socket even when [logging to Syslog](https://www.rabbitmq.com/logging.html#logging-to-syslog) was not enabled. + + GitHub issue: [rabbitmq/rabbitmq-server#1718](https://github.com/rabbitmq/rabbitmq-server/issues/1718) + + * `ERL_EPMD_PORT` was ignored when configured in `rabbitmq-env.conf`. + + GitHub issue: [rabbitmq/rabbitmq-server#1709](https://github.com/rabbitmq/rabbitmq-server/issues/1709) + + * Proxy Protocol dependency is now compatible with Erlang/OTP 21. + + GitHub issue: [rabbitmq/rabbitmq-common#269](https://github.com/rabbitmq/rabbitmq-common/issues/269) + +#### Enhancements + + * It is now possible to configure [cipher suites](https://www.rabbitmq.com/ssl.html#configuring-ciphers) using new style config format. + + GitHub issue: [rabbitmq/rabbitmq-server#1712](https://github.com/rabbitmq/rabbitmq-server/issues/1712) + + * When a listener fails to start (bind to a server socket), error messages involve less context and are + easier to read. + + GitHub issue: [rabbitmq/rabbitmq-server#1711](https://github.com/rabbitmq/rabbitmq-server/issues/1711) + + * Improved error reporting for when `erl` or `erl.exe` are no in node's `PATH`. + + GitHub issue: [rabbitmq/rabbitmq-common#275](https://github.com/rabbitmq/rabbitmq-common/pull/275) + + * 10 TLS connection acceptors are now used by default. + + GitHub issue: [rabbitmq/rabbitmq-server#1729](https://github.com/rabbitmq/rabbitmq-server/issues/1729) + + +### CLI Tools + +#### Bug Fixes + + * `rabbitmqctl list_*` commands did not include table column headers. + + GitHub issue: [rabbitmq/rabbitmq-cli#264](https://github.com/rabbitmq/rabbitmq-cli/issues/264) + + * If `RABBITMQ_NODENAME` is configured, CLI tools will use its hostname part when generating its own + Erlang node name. + + GitHub issue: [rabbitmq/rabbitmq-cli#270](https://github.com/rabbitmq/rabbitmq-cli/issues/270) + + * On Windows CLI tool batch scripts exited with a 0 exit code when it failed to connect to the node. + + Contributed by Artem Zinenko. + + GitHub issue: [rabbitmq/rabbitmq-server#1735](https://github.com/rabbitmq/rabbitmq-server/issues/1735). + +#### Enhancements + + * `rabbitmqctl stop` now supports `--idempotent` that makes the command exit with a success when + target node is not running. + + GitHub issue: [rabbitmq/rabbitmq-cli#272](https://github.com/rabbitmq/rabbitmq-cli/pull/272) + + * `rabbitmqctl add_vhost` is now idempotent (no longer returns an error when vhost already exists) + + GitHub issue: [rabbitmq/rabbitmq-cli#260](https://github.com/rabbitmq/rabbitmq-cli/issues/260) + + +### Management and Management Agent Plugins + +#### Bug Fixes + + * Logo link now works better with a non-blank API endpoint prefix. + + GitHub issue: [rabbitmq/rabbitmq-management#604](https://github.com/rabbitmq/rabbitmq-management/issues/604) + + * Decimal headers and argument values are now serialised to JSON correctly. + + GitHub issue: [rabbitmq/rabbitmq-management-agent#71](https://github.com/rabbitmq/rabbitmq-management-agent/pull/71) + +#### Enhancements + + * It is now possible to configure both HTTPS and HTTP listeners using new syntax that's consistent with + Web STOMP and Web MQTT plugins: + + ``` ini + management.tcp.port = 15672 + + management.ssl.port = 15671 + management.ssl.cacertfile = /path/to/ca_certificate.pem + management.ssl.certfile = /path/to/server_certificate.pem + management.ssl.keyfile = /path/to/server_key.pem + ``` + + GitHub issue: [rabbitmq/rabbitmq-management#563](https://github.com/rabbitmq/rabbitmq-management/issues/563) + + * It is now possible to configure `Content-Security-Policy` (CSP) header set by the API. + + GitHub issue: [rabbitmq/rabbitmq-management#623](https://github.com/rabbitmq/rabbitmq-management/issues/623) + + * It is now possible to configure `Strict-Transport-Policy` (HSTS) header set by the API. + + GitHub issue: [rabbitmq/rabbitmq-management#624](https://github.com/rabbitmq/rabbitmq-management/issues/624) + + * `GET /api/nodes/{node}` endpoint aggregated data for other cluster nodes only to discard it later. + + GitHub issue: [rabbitmq/rabbitmq-management#615](https://github.com/rabbitmq/rabbitmq-management/issues/615) + + * When `Handle.exe` is used and returns no file handle information in its output, a warning will be logged. + + GitHub issue: [rabbitmq/rabbitmq-management-agent#67](https://github.com/rabbitmq/rabbitmq-management-agent/issues/67) + + +### LDAP Plugin + +#### Enhancements + + * String matching queries now support multi-value results. + + GitHub issue: [rabbitmq/rabbitmq-auth-backend-ldap#100](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/100) + + * `ad_domain` and `ad_user` are new variables available in LDAP plugin queries. They are extracted from the username + when it's in `Domain\User` format, which is typically specific to ActiveDirectory. + + GitHub issue: [rabbitmq/rabbitmq-auth-backend-ldap#98](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/98) + + * Search queries that return referrals will result in an error instead of an exception. + + GitHub issue: [rabbitmq/rabbitmq-auth-backend-ldap#97](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/97) + + +### Web STOMP Plugin + +#### Enhancements + + * Advanced WebSocket options now can be configured. Compression is enabled by default. + Compression won't be used with clients that do not support it. + + GitHub issues: [rabbitmq/rabbitmq-web-stomp#89](https://github.com/rabbitmq/rabbitmq-web-stomp/pull/89), [rabbitmq/rabbitmq-web-stomp#90](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/90) + + +### Web MQTT Plugin + +#### Bug Fixes + + * WebSocket `PING` frames are now ignored instead of being propagated to MQTT frame handler. + + GitHub issue: [rabbitmq/rabbitmq-web-mqtt#32](https://github.com/rabbitmq/rabbitmq-web-mqtt/pull/32) + +#### Enhancements + +* Advanced WebSocket options now can be configured. Compression is enabled by default. + Compression won't be used with clients that do not support it. + + GitHub issues: [rabbitmq/rabbitmq-web-mqtt#34](https://github.com/rabbitmq/rabbitmq-web-mqtt/issues/34) + + +### AWS Peer Discovery Plugin + +#### Bug Fixes + + * EC2 API endpoint requests used an unreasonably low timeout (100 ms). The new value + is 10 seconds. + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-aws#24](https://github.com/rabbitmq/rabbitmq-peer-discovery-aws/issues/24) + + +### Consul Peer Discovery Plugin + +#### Bug Fixes + + * It wasn't possible to specify Consul service tags via new style config format. + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-consul#18](https://github.com/rabbitmq/rabbitmq-peer-discovery-consul/issues/18) + + * It wasn't possible to configure lock key prefix via new style config format. + + GitHub issues: [rabbitmq/rabbitmq-peer-discovery-consul#16](https://github.com/rabbitmq/rabbitmq-peer-discovery-consul/issues/16) + +#### Enhancements + +* Lock acquisition timeout now can be configured using `cluster_formation.consul.lock_timeout` as well as `cluster_formation.consul.lock_wait_time` (an alias), + to be consistent with the Etcd implementation. + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-consul#20](https://github.com/rabbitmq/rabbitmq-peer-discovery-consul/pull/20) + + +### Etcd Peer Discovery Plugin + +#### Enhancements + + * Lock acquisition timeout now can be configured using `cluster_formation.etcd.lock_timeout` as well as `cluster_formation.etcd.lock_wait_time` (an alias), + to be consistent with the Consul implementation. + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-etcd#16](https://github.com/rabbitmq/rabbitmq-peer-discovery-etcd/pull/16) + + +### Event Exchange Plugin + +#### Enhancements + + * Throughput optimizations reduce probability of high memory consumption by `rabbit_event` processes due to + event backlog accumulation. + + GitHub issue: [rabbitmq/rabbitmq-server#1722](https://github.com/rabbitmq/rabbitmq-server/issues/1722) + + +### RPM Package + +#### Bug Fixes + + * Post-installation script renamed `rabbitmq.conf` to `rabbitmq-env.conf`. A long time ago `rabbitmq.conf` was used to configure + environment variables (like `rabbitmq-env.conf` today) and old post-installation steps were not removed when `rabbitmq.conf` + was re-adopted for new style config files. + + GitHub issue: [rabbitmq/rabbitmq-server-release#87](https://github.com/rabbitmq/rabbitmq-server-release/issues/87) diff --git a/release-notes/3.8.0.md b/release-notes/3.8.0.md new file mode 100644 index 0000000000..de3c946ace --- /dev/null +++ b/release-notes/3.8.0.md @@ -0,0 +1,288 @@ +## RabbitMQ 3.8.0 + +RabbitMQ `3.8.0` is a feature release. It contains several major improvements in areas of +data safety, replication, observability, and ease of upgrades. Some highlight features are + + * [Quorum Queues](http://next.rabbitmq.com/quorum-queues.html) + * Built-in [Prometheus support](http://next.rabbitmq.com/prometheus.html) with a set of Grafana dashboards to complement it + * [Feature Flags](http://next.rabbitmq.com/feature-flags.html) + * [Single Active Consumer](http://next.rabbitmq.com/consumers.html#single-active-consumer) + * New authentication and authorisation [backend that uses OAuth 2.0 (JWT)](https://github.com/rabbitmq/rabbitmq-auth-backend-oauth2) tokens and scopes + +A recorded webinar, [What's New in RabbitMQ 3.8](https://content.pivotal.io/webinars/may-23-what-s-new-in-rabbitmq-3-8-webinar), covers some of the highlights in this release. + +Several features in this release are backed by a new Raft implementation for Erlang and Elixir, +[Ra](https://github.com/rabbitmq/ra/). + +### Erlang/OTP Compatibility Notes + +This release [**requires Erlang/OTP 21.3**](https://www.rabbitmq.com/which-erlang.html) or later. +`22.x` series is 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 `21.3.x` and `22.x`. + + +### Rolling Upgrades to 3.8 + +RabbitMQ 3.8.0 nodes can run alongside `3.7.18` or later `3.7.x` nodes. +No 3.8.0-specific features would be available in a mixed version cluster. Mixed versions are meant +to simplify rolling upgrades and not meant to be running for long periods of time. + +See the [Upgrading guide](https://www.rabbitmq.com/upgrade.html) for documentation on upgrades. + + +### Compatibility Notes + +#### Upgrading to Erlang 21.x or Later Versions + +When upgrading to this release **and upgrading Erlang to 21.x or later** at the same time, 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 before Erlang**. + +#### Upgrade Doc Guides and Change Log + +See the [Upgrading guide](https://www.rabbitmq.com/upgrade.html) for documentation on upgrades +and [RabbitMQ change log](https://www.rabbitmq.com/changelog.html) for release notes of other releases. + +#### Client Library Compatibility + +Client libraries that were compatible with RabbitMQ `3.7.x` will be compatible with `3.8.0`. + + +### 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 + +### Core Server + +#### Enhancements + + * [Quorum Queues](http://next.rabbitmq.com/quorum-queues.html) built on top of the [Raft consensus algorithm](https://raft.github.io/) for data safety, + more predictable failure recovery, more efficient synchronisation of new and recovered followers, and parallel replication. + + * [Feature Flags](http://next.rabbitmq.com/feature-flags.html) allow for mixed-version clusters and safer rolling upgrades. + + * [Single Active Consumer](http://next.rabbitmq.com/consumers.html#single-active-consumer) makes it possible + to run a set of consumers for redundancy while ensuring that only one consumer is getting deliveries. + + * New metric: dropped unroutable messages. Spotting faulty publishers and routing topology issues is now easier. + + GitHub issue: [rabbitmq/rabbitmq-server#1904](https://github.com/rabbitmq/rabbitmq-server/issues/1904) + + * New metrics: [connection](https://www.rabbitmq.com/connections.html#monitoring) and [channel churn](https://www.rabbitmq.com/channels.html#monitoring). + + GitHub issue: [rabbitmq/rabbitmq-server#1723](https://github.com/rabbitmq/rabbitmq-server/issues/1723) + + * Quorum queues support redelivery tracking, which can be used by consumers to protect themselves from + poison message redeliveries. + + GitHub issue: [rabbitmq/rabbitmq-server#502](https://github.com/rabbitmq/rabbitmq-server/issues/502) + + * New queue overflow behaviour: `reject-publish-dlx`. It is identical to `reject-publish` + but also dead letters rejected messages. + + GitHub issue: [rabbitmq/rabbitmq-server#1443](https://github.com/rabbitmq/rabbitmq-server/issues/1443) + + * Default bindings are now explicit instead of being rows in the internal data store. That means + that high queue churn results in significantly less binding churn, reducing lock contention on + schema database tables, and peak schema operation latencies with it. + + GitHub issue: [rabbitmq/rabbitmq-server#1721](https://github.com/rabbitmq/rabbitmq-server/pull/1721) + +#### Internal API Changes + + * [`amqqueue`](https://github.com/rabbitmq/rabbitmq-server/blob/master/src/amqqueue.erl) is a new public API module + that should be used to access queue state instead of using queue state records directly. This allows the record + to evolve a lot more rapidly with fewer or no code changes in the plugins that access queue state. + + * `authn` and `authz` functions now have access to additional (e.g. protocol-specific) context information. + + GitHub issue: [rabbitmq/rabbitmq-server#1767](https://github.com/rabbitmq/rabbitmq-server/issues/1767) + + * Backing queue interface now exposes a function for message deduplication. Plugins now can track duplicate messages + in a way that makes it possible to negatively confirm duplicates back to the publisher. + + Contributed by Matteo Cafasso. + + GitHub issue: [rabbitmq/rabbitmq-server#1774](https://github.com/rabbitmq/rabbitmq-server/pull/1774). + +#### Usability + + * New style configuration format is now more forgiving: it will ignore lines that only contain + whitespace and tab characters, as well as leading and trailing whitespace. + + GitHub issue: [rabbitmq/rabbitmq-server#2072](https://github.com/rabbitmq/rabbitmq-server/pull/2072) + + * Maximum message size is now configurable. The default was reduced to 128 MiB.e + + GitHub issue: [rabbitmq/rabbitmq-server#1812](https://github.com/rabbitmq/rabbitmq-server/pull/1812) + +#### Bug Fixes + +Most bug fixes in this release previously shipped in [`3.7.x` release series](https://rabbitmq.com/changelog.html). +The list below contains community contributions and most important issues that were not backported to `3.7.x` releases. + + * Queue index consistency and safety improvements. + + Contributed by @tomyouyou. + + GitHub issues: [rabbitmq/rabbitmq-server#2092](https://github.com/rabbitmq/rabbitmq-server/pull/2092), [rabbitmq/rabbitmq-server#2096](https://github.com/rabbitmq/rabbitmq-server/pull/2096), [rabbitmq/rabbitmq-server#2100](https://github.com/rabbitmq/rabbitmq-server/pull/2100). + + +### CLI Tools + +#### Enhancements + + * More user-friendly `rabbitmq-diagnostics status` output. + + GitHub issue: [rabbitmq/rabbitmq-cli#340](https://github.com/rabbitmq/rabbitmq-cli/issues/340) + + * New `help` command. + + GitHub issue: [rabbitmq/rabbitmq-cli#316](https://github.com/rabbitmq/rabbitmq-cli/pull/316) + + * A new set of fine-grained [health check](https://www.rabbitmq.com/monitoring.html#health-checks) commands. + + GitHub issue: [rabbitmq/rabbitmq-cli#292](https://github.com/rabbitmq/rabbitmq-cli/issues/292) + + * New tool, `rabbitmq-queues`, with commands that display Raft state metrics and manage nodes that + host quorum queue replicas. + + GitHub issues: [rabbitmq/rabbitmq-cli#287](https://github.com/rabbitmq/rabbitmq-cli/issues/287), [rabbitmq/rabbitmq-cli#286](https://github.com/rabbitmq/rabbitmq-cli/issues/286) + + * Feature flag status reporting. + + GitHub issue: [rabbitmq/rabbitmq-cli#346](https://github.com/rabbitmq/rabbitmq-cli/issues/346) + +#### Usability + + * `rabbitmq-diagnostics cipher_suites` now uses OpenSSL cipher suite format by default. + + GitHub issue: [rabbitmq/rabbitmq-cli#267](https://github.com/rabbitmq/rabbitmq-cli/issues/267) + + +### Management Plugin + +#### Enhancements + + * Metric collection and visualisation in management UI now can be disabled in favor of built-in + Prometheus support and Grafana dashboard from Team RabbitMQ. + + GitHub issue: [rabbitmq/rabbitmq-management#707](https://github.com/rabbitmq/rabbitmq-management/pull/707) + + * Feature flag management interface. + + [rabbitmq/rabbitmq-management#648](https://github.com/rabbitmq/rabbitmq-management/pull/648) + + * Quorum Queue support. + + * Single Active Consumer support. + + GitHub issue: [rabbitmq/rabbitmq-management#650](https://github.com/rabbitmq/rabbitmq-management/pull/650) + + * Support for more TLS options. + + GitHub issue: [rabbitmq/rabbitmq-management#644](https://github.com/rabbitmq/rabbitmq-management/pull/644) + + * OAuth 2.0 Single Sign On support for [UAA](https://docs.cloudfoundry.org/concepts/architecture/uaa.html) + + GitHub issue: [rabbitmq/rabbitmq-management#722](https://github.com/rabbitmq/rabbitmq-management/pull/722) + + * Username and password-based Basic HTTP Auth authentication for API operations now can be disabled + in favor of OAuth 2.0 Single Sign On via [UAA](https://docs.cloudfoundry.org/concepts/architecture/uaa.html). + + GitHub issue: [rabbitmq/rabbitmq-management#724](https://github.com/rabbitmq/rabbitmq-management/pull/724) + + +### Shovel Plugin + +#### Bug Fixes + +Most bug fixes in this release previously shipped in [`3.7.x` release series](https://rabbitmq.com/changelog.html). +The list below contains most prominent fixes. + + * Sensitive values in Shovel connection state (namely, the connection credentials) are now stored in + encrypted form. This avoids unintentional credential logging by the runtime (exception logger) + at the cost of making troubleshooting authentication failures harder. + + GitHub issue: [rabbitmq-erlang-client#123](https://github.com/rabbitmq/rabbitmq-erlang-client/issues/123) + + +### Federation Plugin + +#### Bug Fixes + +Most bug fixes in this release previously shipped in [`3.7.x` release series](https://rabbitmq.com/changelog.html). +The list below contains most prominent fixes. + + * Sensitive values in federation link state (namely, the connection credentials) are now stored in + encrypted form. This avoids unintentional credential logging by the runtime (exception logger) + at the cost of making troubleshooting authentication failures harder. + + GitHub issue: [rabbitmq-erlang-client#123](https://github.com/rabbitmq/rabbitmq-erlang-client/issues/123) + + +### JWT and OAuth 2.0 Plugin + +Initial release. + +GitHub repository: [rabbitmq/rabbitmq-auth-backend-oauth2](https://github.com/rabbitmq/rabbitmq-auth-backend-oauth2) + + +### MQTT Plugin + +#### Enhancements + + * Client ID tracking is now cluster-wide (state is replicated across all nodes). A majority of nodes is required + for client connections to be accepted. This is a consequence of the neew consistency-oriented design. + + GitHub issue: [rabbitmq/rabbitmq-mqtt#91](https://github.com/rabbitmq/rabbitmq-mqtt/issues/91) + + +### Web STOMP Plugin + +#### Bug Fixes + +Most bug fixes in this release previously shipped in [`3.7.x` release series](https://rabbitmq.com/changelog.html). +The list below contains most prominent fixes. + + * Maximum concurrent client connection limit now defaults to "infinity" (so, there is no limit). + + GitHub issue: [rabbitmq/rabbitmq-web-stomp#113](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/113) + + +### Web MQTT Plugin + +#### Bug Fixes + +Most bug fixes in this release previously shipped in [`3.7.x` release series](https://rabbitmq.com/changelog.html). +The list below contains most prominent fixes. + + * Maximum concurrent client connection limit now defaults to "infinity" (so, there is no limit). + + GitHub issue: [rabbitmq/rabbitmq-web-mqtt#28](https://github.com/rabbitmq/rabbitmq-web-mqtt/issues/28) + + +### RabbitMQ Erlang Client + +#### Bug Fixes + +Most bug fixes in this release previously shipped in [`3.7.x` release series](https://rabbitmq.com/changelog.html). +The list below contains most prominent fixes. + + * Sensitive values in connection state (namely, the connection credentials) are now stored in + encrypted form. This avoids unintentional credential logging by the runtime (exception logger) + at the cost of making troubleshooting authentication failures harder. + + GitHub issue: [rabbitmq-erlang-client#123](https://github.com/rabbitmq/rabbitmq-erlang-client/issues/123) + + +## 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.0.tar.xz`. diff --git a/release-notes/3.8.1.md b/release-notes/3.8.1.md new file mode 100644 index 0000000000..4415c7e9e2 --- /dev/null +++ b/release-notes/3.8.1.md @@ -0,0 +1,219 @@ +## RabbitMQ 3.8.1 + +RabbitMQ `3.8.1` is a maintenance release that focuses on bug fixes. + +### Erlang/OTP Compatibility Notes + +This release [**requires Erlang/OTP 21.3**](https://www.rabbitmq.com/which-erlang.html) or later. +`22.x` series is 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 `21.3.x` and `22.x`. + +### Compatibility Notes + +#### 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 21.x or 22.x, then to RabbitMQ 3.8.x. + +#### 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. + +### 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 + +### Core Server + +#### Bug Fixes + + * Rolling cluster upgrade could fail if new versions were deployed to all cluster nodes at once instead + of a rolling upgrade-then-restart for each node individually. + + GitHub issue: [rabbitmq/rabbitmq-server#2132](https://github.com/rabbitmq/rabbitmq-server/issues/2132) + + * Avoid pattern expansion when logging connection closure reason. + + GitHub issue: [rabbitmq/rabbitmq-server#2155](https://github.com/rabbitmq/rabbitmq-server/pull/2155) + + * Improved error handling in a module that continuously registers the node with [epmd](https://www.rabbitmq.com/clustering.html) avoids + log noise. + + GitHub issue: [rabbitmq/rabbitmq-server#2130](https://github.com/rabbitmq/rabbitmq-server/issues/2130) + +#### Enhancements + + * Peak [quorum queue](https://www.rabbitmq.com/quorum-queues.html) memory usage was reduced by up to 25% on some workloads. + + GitHub issue: [rabbitmq/rabbitmq-server#2138](https://github.com/rabbitmq/rabbitmq-server/pull/2138) + + +### CLI Tools + +#### Bug Fixes + + * `rabbitmqctl await_startup` failed with an exception when effective timeout was set to `infinity`. + + GitHub issue: [rabbitmq/rabbitmq-server#2144](https://github.com/rabbitmq/rabbitmq-server/pull/2144) + + * `rabbitmq-diagnostics check_port_connectivity` produced a false positive in an IPv6-only environment. + + Contributed by Gabriele Santomaggio. + + GitHub issue: [rabbitmq/rabbitmq-cli#385](https://github.com/rabbitmq/rabbitmq-cli/pull/385) + + * `rabbitmq-diagnostics list_unresponsive_queues` failed in environments that had quorum queues. + + GitHub issue: [rabbitmq/rabbitmq-cli#386](https://github.com/rabbitmq/rabbitmq-cli/issues/386) + + * `rabbitmq-diagnostics status`, `rabbitmq-diagnostics cluster_status`, `rabbitmq-diagnostics listeners` now support + `--formatter=erlang` (raw Erlang data structure output) + + GitHub issue: [rabbitmq/rabbitmq-cli#383](https://github.com/rabbitmq/rabbitmq-cli/issues/383) + +#### Enhancements + + * `rabbitmq-diagnostics consume_event_stream` is a new command that makes it easier to consume a stream + of internal commands. This can be useful for troubleshooting and auditing. Previously this was only + possible via the [rabbitmq-event-exchange](https://github.com/rabbitmq/rabbitmq-event-exchange) plugin. + + GitHub issue: [rabbitmq/rabbitmq-cli#299](https://github.com/rabbitmq/rabbitmq-cli/issues/299) + + * `rabbitmq-diagnostics check_certificate_expiration` is a new [health check](https://www.rabbitmq.com/monitoring.html#health-checks) command + that fails when any of the certificates used by target node expire within a specified time window. + + `rabbitmq-diagnostics certificates` is its diagnostics (informative) counterpart that displays all CA and leaf certificates + used by target node. + + GitHub issue: [rabbitmq/rabbitmq-cli#305](https://github.com/rabbitmq/rabbitmq-cli/issues/305) + + +### Prometheus Plugin + +#### Bug Fixes + + * Prometheus scraping API endpoint was unreasonably strict about the set of content types it accepts from clients, + which caused Telegraf Prometheus input requests to fail with an`406 Not Acceptable` response. + + GitHub issue: [rabbitmq/rabbitmq-prometheus#12](https://github.com/rabbitmq/rabbitmq-prometheus/issues/12) + + +### Management Plugin + +#### Bug Fixes + + * Some metrics were omitted in the UI for queues that did not have `x-queue-type` set. + + GitHub issue: [rabbitmq/rabbitmq-management#741](https://github.com/rabbitmq/rabbitmq-management/issues/741) + + +### LDAP Plugin + +#### Enhancements + + * Errors were not propagated back to the client correctly in case of an LDAP server authentication failure. + + GitHub issue: [rabbitmq/rabbitmq-auth-backend-ldap#116](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/116) + + +### Kubernetes Peer Discovery Plugin + +#### Bug Fixes + + * Requests to Kubernetes API endpoints failed with an `nxdomain` (domain name resolution failure) + in an IPv6-only environment. + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-k8s#55](https://github.com/rabbitmq/rabbitmq-peer-discovery-k8s/issues/55) + + +### Consul Peer Discovery Plugin + +#### Enhancements + + * It is now possible to specify service metadata values: + + ``` ini + cluster_formation.consul.svc_meta.key1 = value1 + cluster_formation.consul.svc_meta.key2 = value2 + ``` + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-consul#34](https://github.com/rabbitmq/rabbitmq-peer-discovery-consul/issues/34) + + +### MQTT Plugin + + * Client ID tracking is now more resilient to node failures and decomissioning. + + GitHub issue: [rabbitmq/rabbitmq-mqtt#213](https://github.com/rabbitmq/rabbitmq-mqtt/issues/213) + + +### STOMP Plugin + +#### Enhancements + + * The [`x-queue-type` header](https://www.rabbitmq.com/quorum-queues.html) is now accepted from STOMP clients. + + GitHub issue: [rabbitmq/rabbitmq-stomp#138](https://github.com/rabbitmq/rabbitmq-stomp/issues/138) + +#### Bug Fixes + + * `stomp.hide_server` is now available in the new style configuration format. + + GitHub issue: [rabbitmq/rabbitmq-stomp#140](https://github.com/rabbitmq/rabbitmq-stomp/issues/140) + + +### Web STOMP Plugin + +#### Bug Fixes + + * The plugin emitted a warning on start. + + GitHub issue: [rabbitmq/rabbitmq-web-stomp#115](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/115) + + +### Web MQTT Plugin + +#### Bug Fixes + + * The plugin emitted a warning on start. + + GitHub issue: [rabbitmq/rabbitmq-web-mqtt#59](https://github.com/rabbitmq/rabbitmq-web-mqtt/issues/59) + + +### Erlang Client + +#### Bug Fixes + + * Connection could not be restarted after a heartbeat timeout due to strict pattern matching. + + Contributed by Giuseppe D'Anna (@larrywax). + + GitHub issue: [rabbitmq/rabbitmq-erlang-client#126](https://github.com/rabbitmq/rabbitmq-erlang-client/pull/126) + + +### Tracing Plugin + +#### Bug Fixes + + * On Windows, deleting the file used by an active (running) trace resulted in an `EACCES` exception. + + GitHub issue: [rabbitmq/rabbitmq-tracing#31](https://github.com/rabbitmq/rabbitmq-tracing/issues/31) + + +## 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.1.tar.xz`. diff --git a/release-notes/3.8.10.md b/release-notes/3.8.10.md new file mode 100644 index 0000000000..547eede86c --- /dev/null +++ b/release-notes/3.8.10.md @@ -0,0 +1,351 @@ +## RabbitMQ 3.8.10 + +**Important**: this release has been [superseded by `3.8.11`](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.8.11) +which addresses a couple of bugs specific to this release (`3.8.10`) + +All users are advised to consult the set of changes in this release but then **upgrade straight +to `3.8.11` or a newer version if available** and skip this release. + + +RabbitMQ `3.8.10` is a maintenance release. +Besides containing several bug fixes, it introduces a couple new features for quorum queues. + +This release [**no longer supports** Erlang 21.3](https://groups.google.com/forum/#!topic/rabbitmq-users/v3K5nZNsfwM). + +### Erlang/OTP Compatibility Notes + +This release [requires Erlang 22](https://www.rabbitmq.com/which-erlang.html) or +[Erlang 23](http://blog.erlang.org/OTP-23-Highlights/). + +Erlang 21.3 [**is no longer supported**](https://groups.google.com/forum/#!topic/rabbitmq-users/v3K5nZNsfwM). +`22.3` or `23.1` 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 [boot time definition import](https://www.rabbitmq.com/definitions.html#import-on-boot) build into the management plugin. +The feature still exists but is no longer documented or tested. Please switch to +the built-in definition import mechanism: + +``` ini +# DEPRECATED, requires management plugin to be enabled, +# does not support import of definitions that depend on plugins +# (e.g. Shovels or custom exchanges) +management.load_definitions = /path/to/definitions/file.json +``` + +to + +``` ini +# built-in feature, supports import of definitions +# that depend on plugins (e.g. Shovels or custom exchanges) +load_definitions = /path/to/definitions/file.json +``` + +Definition import in the management plugin (`management.load_definitions`) will be **removed** in +a future RabbitMQ release. + +### 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 series (e.g. `3.7.x`). + +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 22.x or Later Versions + +When upgrading to this release from `3.7.15` or an older version, extra care has to be taken. + +Because older RabbitMQ CLI tools can be incompatible with Erlang 22+ releases, +RabbitMQ **must be upgraded at the same time as Erlang**. + +Alternatively the node can be upgraded to `3.7.18` on Erlang 21.3 first, +then Erlang 22.x or 23.x, then RabbitMQ to the 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) +and [RabbitMQ community Slack](https://rabbitmq-slack.herokuapp.com/). + + +## Changes Worth Mentioning + +### Core Server + +#### Bug Fixes + + * Starting with `3.8.0`, an unintentionally introduced assertion could prevent classic mirrored queue + mirrors from starting successfully in case the primary replica changed concurrently with their startup. + + GitHub issue: [rabbitmq/rabbitmq-server#2449](https://github.com/rabbitmq/rabbitmq-server/pull/2449) + + * Repeated polling of a quorum queue with `basic.get` that yielded an empty response could + result in an unbounded growth of log segment files on on disk. + + GitHub issue: [rabbitmq/rabbitmq-server#2651](https://github.com/rabbitmq/rabbitmq-server/pull/2651) + + * RabbitMQ core plugin activation was revisited to be closer to that of `3.7.x`. This does not any + related improvements w.r.t. definition import, e.g. those introudced in [RabbitMQ `3.8.6`](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.8.6). + + GitHub issue: [rabbitmq/rabbitmq-server#2656](https://github.com/rabbitmq/rabbitmq-server/pull/2656) + + * Syslog dependency was not started correctly. This meant no log messages were sent to Syslog. + + GitHub issue: [rabbitmq/rabbitmq-server#2456](https://github.com/rabbitmq/rabbitmq-server/pull/2456) + + * `rabbitmq-diagnostics check_if_node_is_quorum_critical` returned a false positive for a node [marked for maintenance](https://www.rabbitmq.com/upgrade.html#maintenance-mode). + Given the refinement to the `rabbitmq-upgrade drain` command in [rabbitmq/rabbitmq-server#2474](https://github.com/rabbitmq/rabbitmq-server/issues/2474), + `rabbitmq-diagnostics check_if_node_is_quorum_critical` now will unconditionally return a success + if target node is under maintanence. + + GitHub issue: [rabbitmq/rabbitmq-server#2469](https://github.com/rabbitmq/rabbitmq-server/issues/2469) + + * Queues could update their internal bookkeeping state incorrectly in some cases, leading to a `file_handle_cache` + operation exception. + + GitHub issue: [rabbitmq/rabbitmq-server#2488](https://github.com/rabbitmq/rabbitmq-server/issues/2488) + +#### Enhancements + + * [Quorum queues](https://www.rabbitmq.com/quorum-queues.html) now can use the [`reject-publish`](https://www.rabbitmq.com/maxlength.html#overflow-behaviour) + max length overflow strategy. + + GitHub issue: [rabbitmq/rabbitmq-server#2407](https://github.com/rabbitmq/rabbitmq-server/pull/2407) + + * [Quorum queues](https://www.rabbitmq.com/quorum-queues.html) now support [consumer priority](https://www.rabbitmq.com/consumers.html#priority). + + GitHub issue: [rabbitmq/rabbitmq-server#2451](https://github.com/rabbitmq/rabbitmq-server/pull/2451) + + * Per-user connection and queue limits. This is similar to [per-vhost limits](https://www.rabbitmq.com/vhosts.html#limits) but, + as the name suggests, these limits are associated for a given user. + + The limits are controlled using CLI tools or the HTTP API: + + ``` sh + # limits user "user-e8d3f85c" to up to five connections and ten channels + rabbitmqctl set_user_limits "user-e8d3f85c" '{"max-connections": 5, "max-channels": 10}' + + # clears the maximum number of connections limit for the user + rabbitmqctl clear_user_limits "user-e8d3f85c" "max-connections" + + # clears all limits for the user + rabbitmqctl clear_user_limits "user-e8d3f85c" "all" + ``` + + Contributed by Erlang Solutions, sponsored by [CloudAMQP](https://cloudamqp.com). + + GitHub issue: [rabbitmq/rabbitmq-server#607](https://github.com/rabbitmq/rabbitmq-server/issues/607), [rabbitmq/rabbitmq-server#2380](https://github.com/rabbitmq/rabbitmq-server/pull/2380) + + * TLSv1.3 is no longer considered experimental (on Erlang 23) and excluded from TLS listener configuration. + + GitHub issue: [rabbitmq/rabbitmq-common#415](https://github.com/rabbitmq/rabbitmq-common/issues/415) + + * When a node is put under maintenance, it will now stop all local quorum queue replicas after completing + leadership transfer. This means that no quorum queue replicas on the node will be considered for + leader elections. + + GitHub issue: [rabbitmq/rabbitmq-server#2474](https://github.com/rabbitmq/rabbitmq-server/issues/2474) + + * Nodes now keep track of failed client authentication attempts and expose it as a metric via both the [Prometheus endpoint](https://www.rabbitmq.com/prometheus.html) + and the HTTP API at `GET /api/auth/attempts/{node}`. + + The tracking is done for every cluster node individually. The protocols that support authentication attempt tracking + right now are AMQP 0-9-1, AMQP 1.0 and MQTT. + + GitHub issue: [rabbitmq/rabbitmq-server#2436](https://github.com/rabbitmq/rabbitmq-server/pull/2436) + + * `bypass_pem_cache` is a new configuration key that makes it possible to disable the cache of PEM files + [used by the Erlang TLS implementation](https://blog.heroku.com/how-we-sped-up-sni-tls-handshakes-by-5x). + This rotated certificates quicker to detect for nodes but can also increase latency for inbound + TLS connections, e.g. under [high connection churn scenarios](https://www.rabbitmq.com/connections.html#high-connection-churn). + + GitHub issue: [rabbitmq/rabbitmq-server#2686](https://github.com/rabbitmq/rabbitmq-server/pull/2686) + + * Definition import now safely handles some missing queue object arguments. + + GitHub issue: [rabbitmq/rabbitmq-server#2668](https://github.com/rabbitmq/rabbitmq-server/issues/2668) + + * `rabbitmq.conf` schema now allows for [peer certificate chain verification depth](https://www.rabbitmq.com/ssl.html#peer-verification) to be set to zero. + When this value is used, peer certificate must be [signed by a trusted CA certificate directly](https://erlang.org/doc/man/ssl.html#type-allowed_cert_chain_length) in order + for the verification to pass. + + GitHub issue: [rabbitmq/rabbitmq-server#2493](https://github.com/rabbitmq/rabbitmq-server/issues/2493) + + * `RABBITMQ_IO_THREAD_POOL_SIZE` will no longer be respected by RabbitMQ nodes. It [is no longer relevant](http://blog.erlang.org/IO-Polling/) + with supported Erlang versions and will simplify [`rabbitmq-diagnostics runtime_thread_stats`](https://www.rabbitmq.com/runtime.html#thread-stats) output. + + GitHub issue: [rabbitmq/rabbitmq-server#2473](https://github.com/rabbitmq/rabbitmq-server/issues/2473) + + * The `+K` [runtime parameter](https://www.rabbitmq.com/runtime.html) is no longer used by RabbitMQ nodes as it has [no effect](http://blog.erlang.org/IO-Polling/) + with supported Erlang versions. + + Contributed by Ayanda Dube (Erlang Solutions). + + GitHub issue: [rabbitmq/rabbitmq-server#2470](https://github.com/rabbitmq/rabbitmq-server/pull/2470) + + +### CLI + +#### Enhancements + + * It is now possible to enable all feature flags in a single command: + + ``` sh + rabbitmqctl enable_feature_flag all + ``` + + Note that this will only enable the flags supported by all cluster members. + + GitHub issue: [rabbitmq/rabbitmq-cli#455](https://github.com/rabbitmq/rabbitmq-cli/issues/455) + + * `rabbitmq-queues peek` is a new command that allows for peeking at a queue position. It is only + supported by quorum queues (and not classic queues): + + ``` sh + # peeks at the head of queue "qq.1" in virtual host "staging" + rabbitmq-queues peek --vhost "staging" "qq.1 1" + ``` + + GitHub issue: [rabbitmq/rabbitmq-cli#452](https://github.com/rabbitmq/rabbitmq-cli/pull/452/) + + * `rabbitmq-queues reclaim_quorum_memory` is a new command that forces Raft WAL compaction which in most cases should reduce memory footprint of a quorum queue: + + ``` sh + rabbitmq-queues reclaim_quorum_memory --vhost "staging" "qq.1" + ``` + + GitHub issue: [rabbitmq/rabbitmq-cli#453](https://github.com/rabbitmq/rabbitmq-cli/pull/453) + +#### Bug Fixes + + * `rabbitmqctl rename_cluster_node` failed with an error about a missing directory. + + GitHub issue: [rabbitmq/rabbitmq-cli#457](https://github.com/rabbitmq/rabbitmq-cli/issues/457) + + * `rabbitmqctl export_definitions` exported optional binding arguments as blank. + + GitHub issue: [rabbitmq/rabbitmq-server#2500](https://github.com/rabbitmq/rabbitmq-server/issues/2500) + + * Force removal of a node did not remove it from quorum queue member lists. + + GitHub issue: [rabbitmq/rabbitmq-server#2414](https://github.com/rabbitmq/rabbitmq-server/issues/2414) + + * CLI tools now pick a unique identifier from a pool. Previously the pool of possible values was theoretically + unbounded, which could result in an atom table exhaustion condition on long running nodes that + had a lot of CLI tool invocations (e.g. CLI tools were used to collect monitoring data frequently). + + Such use of CLI tools for [monitoring](https://www.rabbitmq.com/monitoring.html) is not recommended: + there are better options such as [Prometheus and Grafana](https://www.rabbitmq.com/prometheus.html). + + GitHub issue: [rabbitmq/rabbitmq-cli#461](https://github.com/rabbitmq/rabbitmq-cli/pull/461) + + +### MQTT Plugin + +#### Bug Fixes + + * Raft-based client ID tracker is now significantly more efficient in handling failing + or closed connections. This prevents potential [high memory usage of tracking tables](https://github.com/rabbitmq/rabbitmq-server/discussions/2688) + on the node. + + GitHub issue: [rabbitmq/rabbitmq-server#2692](https://github.com/rabbitmq/rabbitmq-server/pull/2692) + +### Federation Plugin + +#### Bug Fixes + + * Federation links that failed to connect due to a TCP connection timeout [leaked resources](https://www.rabbitmq.com/connections.html#monitoring). + Other connection failure scenarios did not result in a leak. + + GitHub issue: [rabbitmq/rabbitmq-federation#119](https://github.com/rabbitmq/rabbitmq-federation/pull/119) + + +### Shovel Plugin + +#### Bug Fixes + + * An autodeleted Shovel would re-appear on other cluster nodes after the node that hosted it originally was restarted. + + GitHub issue: [rabbitmq/rabbitmq-server#2655](https://github.com/rabbitmq/rabbitmq-server/issues/2655) + +### Prometheus Plugin + +#### Enhancements + + * `GET /metrics/per-object` is a new endpoint that always returns [individual entity metrics](https://www.rabbitmq.com/prometheus.html#metric-aggregation), even if + `GET /metrics` is configured to return aggregated results. + + GitHub issue: [rabbitmq/rabbitmq-server#2659](https://github.com/rabbitmq/rabbitmq-server/pull/2659) + +### Management Plugin + +#### Enhancements + + * [Individual health checks](https://www.rabbitmq.com/monitoring.html#health-checks) are now available through the HTTP API. + + GitHub issue: [rabbitmq/rabbitmq-management#844](https://github.com/rabbitmq/rabbitmq-management/issues/844) + +#### Bug Fixes + + * Quorum queue consumer counter on on the queue list page was not updated when consumers were cancelled or failed. + + GitHub issue: [rabbitmq/rabbitmq-server#2421](https://github.com/rabbitmq/rabbitmq-server/issues/2421) + + * The aliveness check endpoint now responds with a `503 Service Unavailable` instead of a 500 when + it cannot publish a test message, e.g. because a policy with zero message TTL was applied to all queues. + + GitHub issue: [rabbitmq/rabbitmq-management#855](https://github.com/rabbitmq/rabbitmq-management/issues/855) + + +### AWS Peer Discovery Plugin + +#### Bug Fixes + + * AWS API request errors are now propagated. This means that should an AWS API request fail, + the peer discovery subsystem will retry it a limited number of times. + + Contributed by Stefan @stefanmoser Moser. + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-aws#40](https://github.com/rabbitmq/rabbitmq-peer-discovery-aws/pull/40) + + +### RabbitMQ Erlang Client + +#### Bug Fixes + + * `amqp_channel:call/4` timeouts are now safly reconciled with connection-level timeouts. + + Contributed by Ayanda Dube. + + GitHub issue: [rabbitmq/rabbitmq-server#2660](https://github.com/rabbitmq/rabbitmq-server/pull/2660) + +### Windows Installer + +#### Bug Fixes + + * Windows installer is now signed by a new (rolled) key. + + GitHub issue: [rabbitmq/rabbitmq-server#2666](https://github.com/rabbitmq/rabbitmq-server/issues/2666) + + * The installer now correctly creates directories when RabbitMQ is installed to + a different drive from the shell (`cmd.exe`). + + Contributed by Jiahao @Y2Nk4 Guo. + + GitHub issue: [rabbitmq/rabbitmq-server#2682](https://github.com/rabbitmq/rabbitmq-server/pull/2682) + +## Dependency Upgrades + + * `credentials_obfuscation` was upgraded [from 2.2.3 to 2.3.0](https://github.com/rabbitmq/credentials-obfuscation/blob/master/ChangeLog.md) + * `ranch` is [no longer a dependency](https://github.com/rabbitmq/rabbitmq-server/pull/2707) of `rabbit_common` + +## 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.10.tar.xz`. diff --git a/release-notes/3.8.11.md b/release-notes/3.8.11.md new file mode 100644 index 0000000000..b29f562d4f --- /dev/null +++ b/release-notes/3.8.11.md @@ -0,0 +1,72 @@ +## RabbitMQ 3.8.11 + +RabbitMQ `3.8.11` is a maintenance release that contains bug fixes. + +This release [**no longer supports** Erlang 21.3](https://groups.google.com/forum/#!topic/rabbitmq-users/v3K5nZNsfwM). + +### Erlang/OTP Compatibility Notes + +This release [requires Erlang 22](https://www.rabbitmq.com/which-erlang.html) or +[Erlang 23](http://blog.erlang.org/OTP-23-Highlights/). + +Erlang 21.3 [**is no longer supported**](https://groups.google.com/forum/#!topic/rabbitmq-users/v3K5nZNsfwM). +`22.3` or `23.2` 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 + +### 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 series (e.g. `3.7.x`). + +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 22.x or Later Versions + +When upgrading to this release from `3.7.15` or an older version, extra care has to be taken. + +Because older RabbitMQ CLI tools can be incompatible with Erlang 22+ releases, +RabbitMQ **must be upgraded at the same time as Erlang**. + +Alternatively the node can be upgraded to `3.7.18` on Erlang 21.3 first, +then Erlang 22.x or 23.x, then RabbitMQ to the 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) +and [RabbitMQ community Slack](https://rabbitmq-slack.herokuapp.com/). + + +## Changes Worth Mentioning + +### Core Server + +#### Bug Fixes + + * Quorum queues that had active consumers during a rolling cluster upgrade could run into an exception and restart loop. + + This issue is specific to [RabbitMQ `3.8.10`](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.8.10). + + GitHub issue: [rabbitmq/rabbitmq-server#2728](https://github.com/rabbitmq/rabbitmq-server/pull/2728) + + * Nodes that had `reverse_dns_lookup` set to `true` could not accept client connections. + + This issue is specific to [RabbitMQ `3.8.10`](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.8.10). + + GitHub issue: [rabbitmq/rabbitmq-server#2730](https://github.com/rabbitmq/rabbitmq-server/issues/2730) + + +## Dependency Upgrades + +No dependency changes. + + +## 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.11.tar.xz`. diff --git a/release-notes/3.8.12.md b/release-notes/3.8.12.md new file mode 100644 index 0000000000..e9ea998eac --- /dev/null +++ b/release-notes/3.8.12.md @@ -0,0 +1,214 @@ +## RabbitMQ 3.8.12 + +RabbitMQ `3.8.12` is a maintenance release that contains bug fixes. + +### Erlang/OTP Compatibility Notes + +This release [requires Erlang 22](https://www.rabbitmq.com/which-erlang.html) or +[Erlang 23](http://blog.erlang.org/OTP-23-Highlights/). + +[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 + +### 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 series (e.g. `3.7.x`). + +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 22.x or Later Versions + +When upgrading to this release from `3.7.15` or an older version, extra care has to be taken. + +Because older RabbitMQ CLI tools can be incompatible with Erlang 22+ releases, +RabbitMQ **must be upgraded at the same time as Erlang**. + +Alternatively the node can be upgraded to `3.7.18` on Erlang 21.3 first, +then Erlang 22.x or 23.x, then RabbitMQ to the 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) +and [RabbitMQ community Slack](https://rabbitmq-slack.herokuapp.com/). + + +## Changes Worth Mentioning + +### Core Server + +#### Bug Fixes + + * [Maintenance mode](https://www.rabbitmq.com/upgrade.html#maintenance-mode) no longer transfers leaders of classic mirrored queue. + + The original transfer implementation was not guaranteed to be safe when only a + subset of cluster nodes hosted replicas. In addition, the process could take + a lot of time in environments with a lot of classic mirrored queues, more + than in case of node shutdown. + + Quorum queue leadership transfer is still performed as it is dramatically more + efficient and never suffered from any downsides of leadership transfer of CMQs. + + GitHub issue: [#2749](https://github.com/rabbitmq/rabbitmq-server/issues/2749) + + * Exclusive queues that happen to be matched by classic queue mirroring policies + will no longer be considered for rebalancing operations since they are not + actually mirrored (the lifecycle is by design tied to a single client connection). + + GitHub issue: [#2795](https://github.com/rabbitmq/rabbitmq-server/issues/2795) + + * Default replica count for quorum queues was using an incorrect configuration key name. + The default value is now `3`, so in a cluster of five or seven nodes, only three + will host replicas for newly declared quorum queues. One replica is the node to which + the declaring client is connected to, two others are selected randomly. + + Declaring connections can control the number of replicas using the `x-quorum-initial-group-size` + optional queue argument at declaration time. + + GitHub issue: [#2759](https://github.com/rabbitmq/rabbitmq-server/pull/2759) + + * Default [runtime busy waiting](https://www.rabbitmq.com/runtime.html#cpu-reduce-idle-usage) settings were + changed to `none` by default, which reduces CPU footprint on nodes that are mostly idle. The values + can be overridden for workloads that benefit from different values. + + Contributed by @carlhoerberg (CloudAMQP) + + GitHub issue: [#2803](https://github.com/rabbitmq/rabbitmq-server/pull/2803) + + * Definition import now imports runtime parameters after exchanges, queues, and bindings + to reduce the likelihood of starting dynamic Shovels from racing with topology + imports. + + GitHub issue: [#2798](https://github.com/rabbitmq/rabbitmq-server/issues/2798) + + * Memory monitor could run into an exception if queried very early on node boot + before it was fully initialized. + + Contributed by @tomyouyou. + + GitHub issue: [#2733](https://github.com/rabbitmq/rabbitmq-server/pull/2733) + +#### Enhancements + + * `rabbitmq.conf` validation of TLS certificate and private key paths is now more thorough: + it checks if the files have read or read/write permissions instead of checking if it can read + the file's metadata. + + GitHub issue: [#2685](https://github.com/rabbitmq/rabbitmq-server/issues/2685) + +### CLI Tools + +#### Enhancements + + * `rabbitmqctl close_all_user_connections` is a new command that closes all connections that + authenticated using a specific username: + + ``` + rabbitmqctl close_all_user_connections "user-99fc15d3f" "closed to force reconnection" + ``` + + GitHub issue: [#2715](https://github.com/rabbitmq/rabbitmq-server/issues/2715) + + +### Prometheus Plugin + +#### Bug Fixes + + * AuthN authentication attempts metrics produced duplicate `TYPE` and `HELP` strings in + the scraping API endpoint output. + + Some metrics were renamed to avoid duplication. The new names are `auth_attempts_detailed_total`, + `auth_attempts_detailed_succeeded_total`, and `auth_attempts_detailed_failed_total`. + + This issue is specific to RabbitMQ `3.8.10` and `3.8.11`. + + GitHub issue: [#2740](https://github.com/rabbitmq/rabbitmq-server/issues/2740) + + +### LDAP Plugin + +#### Enhancements + + * The plugin now supports two new configuration settings that control SNI and hostname verification + behavior for TLS-enabled LDAP client connections: + + ``` ini + # leave out to keep the default behavior (exact hostname matching) + auth_ldap.ssl_options.hostname_verification = wildcard + + # set to none to disable SNI + auth_ldap.ssl_options.sni = a.rabbitmq.hostname.dev + ``` + + These changes are based on the [research and suggestions](https://pcable.net/posts/2021-02-10-rmq-ldap/) from Patrick @patcable Cable. + + GitHub issue: [#2805](https://github.com/rabbitmq/rabbitmq-server/issues/2805) + + +## Shovel Plugin + +#### Enhancements + + * Dynamic Shovels now can specify [optional queue arguments](https://www.rabbitmq.com/queues.html#optional-arguments) for + the queues they declare. Note that these settings will not have any effects for cases where the plugin + uses already existing queues. + + This allows for the Shovel-managed queues to be [quorum](https://www.rabbitmq.com/quorum-queues.html). For the arguments + that must not be provided at queue declaration time, [policies](https://www.rabbitmq.com/parameters.html#policies) + is the right approach. + + The arguments are specified using the `""` and `""` arguments for source and destination queues, respectively: + + ``` json + { + "src-protocol": "amqp091", + "src-uri": ["amqp://localhost"], + "src-queue": "src-queue", + "dest-protocol": "amqp091", + "dest-uri": ["amqp://localhost"], + "dest-queue": "dest-queue", + "src-queue-args": { + "x-queue-type": "quorum" + }, + "dest-queue-args": { + "x-queue-type": "quorum" + } + } + ``` + + GitHub issue: [#2799](https://github.com/rabbitmq/rabbitmq-server/issues/2799) + + +## AuthN/AuthZ Cache Plugin + +### Enhancement + + * Cache operation timeout has been increased to 15s (same as the channel operation timeout in the core). + This prevents sporadic timeouts in heavily loaded systems. + + GitHub issue: [#2792](https://github.com/rabbitmq/rabbitmq-server/pull/2792) + + +## RabbitMQ Erlang Client + +#### Bug Fixes + + * The client performed hostname resolution twice even if IP version preference was specified by the user. + + Contributed by Pawel @haljin Antemijczuk. + + GitHub issue: [#2748](https://github.com/rabbitmq/rabbitmq-server/issues/2748) + +## Dependency Upgrades + +No dependency changes. + + +## Source Code Archives + +To obtain source code of the entire distribution, please download the archive named `rabbitmq-server-3.8.12.tar.xz` +instead of the source tarball produced by GitHub. diff --git a/release-notes/3.8.13.md b/release-notes/3.8.13.md new file mode 100644 index 0000000000..407cf222e6 --- /dev/null +++ b/release-notes/3.8.13.md @@ -0,0 +1,155 @@ +## RabbitMQ 3.8.13 + +RabbitMQ `3.8.13` is a maintenance release. + +### Erlang/OTP Compatibility Notes + +This release [requires Erlang 22.3](https://www.rabbitmq.com/which-erlang.html). +[Erlang 23](http://blog.erlang.org/OTP-23-Highlights/) is highly recommended +for best forward compatibility with future RabbitMQ versions. + +[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 + +### 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 series (e.g. `3.7.x`). + +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 22.x or Later Versions + +When upgrading to this release from `3.7.15` or an older version, extra care has to be taken. + +Because older RabbitMQ CLI tools can be incompatible with Erlang 22+ releases, +RabbitMQ **must be upgraded at the same time as Erlang**. + +Alternatively the node can be upgraded to `3.7.18` on Erlang 21.3 first, +then Erlang 22.3 or 23.x, then RabbitMQ to the 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) +and [RabbitMQ community Slack](https://rabbitmq-slack.herokuapp.com/). + + +## Changes Worth Mentioning + +### Core Server + +#### Bug Fixes + + * Nodes that had an unusually long name (e.g. 150 or more characters) could overflow + message property lengths with the [direct reply-to](https://www.rabbitmq.com/direct-reply-to.html) identifier they generated. + Now the generated values are almost entirely decoupled from node name length. + + GitHub issue: [#2842](https://github.com/rabbitmq/rabbitmq-server/pull/2842) + + +### Management Plugin + +#### Bug Fixes + + * Consumer utilisation metric has been renamed to consumer capacity which more accurately represents + what it measures. The metric indicates the percentage of time that RabbitMQ has attempted a delivery + to a consumer of a queue, and was allowed to do so by the [channel prefetch value](https://www.rabbitmq.com/confirms.html#channel-qos-prefetch) and + the number of currently unacknowledged deliveries. + + For queues that have no consumers, the metric now returns 0%. For consumers that accept all deliveries + attempted, the metric will be around 100% (optimal). + + For queues that do have consumers but no traffic the metric will be at 100%. The assumption here is that consumers + can absorb all the load. This case is intentionally treated differently from the one above with no online consumers. + + GitHub issue: [#2843](https://github.com/rabbitmq/rabbitmq-server/pull/2843) + + +### Prometheus Plugin + +#### Bug Fixes + + * Consumer utilisation metric has been renamed to consumer capacity which more accurately represents + what it measures. See a more detailed note above in the Management plugin section. + + GitHub issue: [#2843](https://github.com/rabbitmq/rabbitmq-server/pull/2843) + + +### Federation Plugin + +#### Enhancements + + * Quorum queues now can be federated. + + GitHub issue: [#2756](https://github.com/rabbitmq/rabbitmq-server/issues/2756) + + * Exchange federation now supports a new option, `channel_use_mode`, which allows a single + channel to be used for all federation link activity if set to `single`: + + ``` shell + rabbitmqctl set_parameter federation-upstream dc-2 '{"uri":"amqp://dc2.messaging.coolcorp.local:5672", "channel-use-mode": "single"}' + ``` + + This helps avoid a race condition between topology changes and message flow + and the cost of topology operations reducing message transfer rates and increasing + rate variability. + + The default value is `multiple`. It means that every link will use multiple channels (one for message transfer, + one for topology changes, etc), which has been the case since rabbitmq/rabbitmq-federation#97. + This is the recommended mode for most environments, and all environments with a mostly static topology. + + See [rabbitmq/rabbitmq-federation#97](https://github.com/rabbitmq/rabbitmq-federation/pull/97) for the background. + + GitHub issue: [#2829](https://github.com/rabbitmq/rabbitmq-server/pull/2829) + + +### AMQP 1.0 Plugin + +#### Bug Fixes + + * The plugin could run into unhandled exceptions. + + GitHub issue: [#2830](https://github.com/rabbitmq/rabbitmq-server/pull/2830) + + +### OAuth 2 AuthN/AuthZ Backend + +#### Enhancements + + * Several settings of the plugin are now exposed to `rabbitmq.conf` and provide validations: + + ``` ini + auth_backends.1 = oauth2 + auth_oauth2.resource_server_id = a_resource_server_id + auth_oauth2.additional_scopes_key = a_custom_scope_key + auth_oauth2.default_key = id1 + auth_oauth2.signing_keys.id1 = /path/to/signing.key1.pem + auth_oauth2.signing_keys.id2 = /path/to/signing.key2.pem + ``` + + GitHub issue: [#2550](https://github.com/rabbitmq/rabbitmq-server/issues/2550) + + * JWT tokens now can be fetched from a JWKS endpoint provided using the `rabbitmq_auth_backend_oauth2.key_config.jwks_url` + key in `advanced.config`. + + Contributed by Teo @teozkr Klestrup Röijezon. + + GitHub issue: [#2791](https://github.com/rabbitmq/rabbitmq-server/pull/2791) + + +## Dependency Upgrades + + * `lager` was [upgraded to 3.8.2](https://github.com/erlang-lager/lager/compare/3.8.0..3.8.2) + * `cuttlefish` was [upgraded to 2.6.0](https://github.com/kyorai/cuttlefish/compare/v2.4.0..v2.6.0) + * `credentials_obfuscation` was [upgraded to 2.4.0](https://github.com/rabbitmq/credentials-obfuscation/blob/master/ChangeLog.md#changes-between-230-and-240-february-18-2021) + * `observer_cli` was [upgraded to 1.6.0](https://github.com/zhongwencool/observer_cli/compare/1.5.4..v1.6.0) + + +## Source Code Archives + +To obtain source code of the entire distribution, please download the archive named `rabbitmq-server-3.8.13.tar.xz` +instead of the source tarball produced by GitHub. diff --git a/release-notes/3.8.14.md b/release-notes/3.8.14.md new file mode 100644 index 0000000000..bd963c847a --- /dev/null +++ b/release-notes/3.8.14.md @@ -0,0 +1,77 @@ +## RabbitMQ 3.8.14 + +RabbitMQ `3.8.14` is a maintenance release that restores +Erlang 22.3 compatibility for environments that use [direct reply-to](/direct-reply-to.html). + +### Erlang/OTP Compatibility Notes + +This release [requires Erlang 22.3](https://www.rabbitmq.com/which-erlang.html). +[Erlang 23](http://blog.erlang.org/OTP-23-Highlights/) is highly recommended +for best forward compatibility with future RabbitMQ versions. + +[Provisioning Latest Erlang Releases](https://www.rabbitmq.com/which-erlang.html#erlang-repositories) explains +what package repositories and tools can be used to provision a recent version of Erlang `23.x`. + + +## Upgrade and Compatibility Notes + +### 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 series (e.g. `3.7.x`). + +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 23.x or Later Versions + +When upgrading to this release from `3.7.15` or an older version, extra care has to be taken. + +Because older RabbitMQ CLI tools can be incompatible with Erlang 22+ releases, +RabbitMQ **must be upgraded at the same time as Erlang**. + +Alternatively the node can be upgraded to `3.7.18` on Erlang 21.3 first, +then Erlang 23.x, then RabbitMQ to the 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) +and [RabbitMQ community Slack](https://rabbitmq-slack.herokuapp.com/). + + +## Changes Worth Mentioning + +### Core Server + +#### Bug Fixes + + * [Direct reply-to](https://www.rabbitmq.com/direct-reply-to.html) failed witn an exception on Erlang 22.3. + Nodes running on Erlang 23 are not affected. + + GitHub issue: [#2857](https://github.com/rabbitmq/rabbitmq-server/pull/2857) + + * A warnings about async I/O threads was replaced with a similar one about dirty I/O + schedulers. This keeps the message up with the settings used in modern Erlang releases. + + GitHub issue: [#2854](https://github.com/rabbitmq/rabbitmq-server/pull/2854) + +### Other + +#### Enhancements + + * Community-maintained [RabbitMQ OCF scripts](https://github.com/rabbitmq/rabbitmq-server/blob/master/scripts/rabbitmq-server-ha.ocf) were revisited. + + Contributed by Michele @mbaldessari Baldessari. + + GitHub issue: [#2853](https://github.com/rabbitmq/rabbitmq-server/pull/2853) + + +## Dependency Upgrades + + There were no dependency changes. + + +## Source Code Archives + +To obtain source code of the entire distribution, please download the archive named `rabbitmq-server-3.8.14.tar.xz` +instead of the source tarball produced by GitHub. diff --git a/release-notes/3.8.15.md b/release-notes/3.8.15.md new file mode 100644 index 0000000000..288ca0fdae --- /dev/null +++ b/release-notes/3.8.15.md @@ -0,0 +1,175 @@ +## RabbitMQ 3.8.15 + +RabbitMQ `3.8.15` is a maintenance release that includes two security patches. + +All users are advised to consult the set of changes in this release but then +**upgrade straight to `3.8.16` or a newer version if available** and skip this release. + +### Security Patches + +This release addresses two CVEs: + + * [CVE-2021-22117](https://tanzu.vmware.com/security/cve-2021-22117) + * [CVE-2021-22116](https://tanzu.vmware.com/security/cve-2021-22116) + +Our team would like to thank + + * Jonathan Knudsen from the Synopsys Cybersecurity Research Center (CyRC) + * Robert Chen from DeepSurface Security + +for responsibly disclosing the vulnerabilities and helping assess and test +the patches. + +### Obtaining Packages + +This is the first release in the [post-Bintray era](https://blog.rabbitmq.com/posts/2021/03/migrate-off-of-bintray/). +Because Bintray shut down on May 1st, 2021, this version is not distributed via Bintray. +From now on, releases are distributed via GitHub, [Cloudsmith](https://cloudsmith.io/~rabbitmq/repos/), +and [PackageCloud](https://packagecloud.io/rabbitmq). + +### Erlang/OTP Compatibility Notes + +This release is the [last release to support Erlang 22.3](https://blog.rabbitmq.com/posts/2021/03/erlang-24-support-roadmap/). +[Erlang 23](http://blog.erlang.org/OTP-23-Highlights/) is highly recommended +for best forward compatibility with future RabbitMQ versions. + +[Provisioning Latest Erlang Releases](https://www.rabbitmq.com/which-erlang.html#erlang-repositories) explains +what package repositories and tools can be used to provision a recent version of Erlang `23.x`. + + +## Upgrade and Compatibility Notes + +### 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 series (e.g. `3.7.x`). + +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. + + +### 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) +and [RabbitMQ community Slack](https://rabbitmq-slack.herokuapp.com/). + + +## Changes Worth Mentioning + +### Core Server + +#### Bug Fixes + + * Quorum queues did not take snapshots as frequently as they are expected to with some configurations. + This resulted in much higher peak disk space usage for queues that did not have a meaningful backlog. + + GitHub issue: [#2974](https://github.com/rabbitmq/rabbitmq-server/issues/2974) + + * Quorum queue name was unintentionally limited: the length of virtual host and actual queue name + was limited to 254 characters. Quorum queues that had longer names failed to be declared. + + * Deleting a quorum queue would leave some of its internal metrics data around. + + GitHub issue: [#2846](https://github.com/rabbitmq/rabbitmq-server/pull/2846) + + * Client destination address is now obtained w.r.t. the [Proxy protocol](https://www.rabbitmq.com/networking.html#proxy-protocol) settings. + + Contributed by @carlhoerberg (CloudAMQP). + + GitHub issue: [#2942](https://github.com/rabbitmq/rabbitmq-server/pull/2942) + +#### Enhancements + + * Quorum queue consumers that consume messages and do not acknowledge them will now have a 15 minute + acknowledgement timeout applied to them by default. Operators can increase the timeout if necessary. + + Such consumers delay or even prevent on disk data compaction, which can run a node out of disk + space much earlier than anticipated. + + GitHub issue: [#2990](https://github.com/rabbitmq/rabbitmq-server/pull/2990) + + * Channel interceptors now can return channel-level exceptions. + + Contributed by Ayanda @Ayanda-D Dube. + + GitHub issue: [#2989](https://github.com/rabbitmq/rabbitmq-server/pull/2989) + + +### CLI Tools + +#### Bug Fixes + + * `rabbitmq-diagnostics status` could run into an exception when formatting responses + from nodes where high VM memory watermark was configured using `advanced.config`. + + GitHub issue: [#2964](https://github.com/rabbitmq/rabbitmq-server/issues/2964) + + * `rabbitmq-queues rebalance` will no longer pick nodes [under maintenance](https://www.rabbitmq.com/upgrade.html#maintenance-mode) + as new queue leader placement candidates. + + GitHub issue: [#2993](https://github.com/rabbitmq/rabbitmq-server/pull/2993) + +#### Enhancements + + * `rabbitmq-diagnostics remote_shell` is a new command that opens a remote Erlang shell + to the target node. This simplifies troubleshooting of a running node. + + GitHub issue: [#2860](https://github.com/rabbitmq/rabbitmq-server/pull/2860) + + * `rabbitmq-queues await_online_quorum_plus_one` is now a no-op in a single node cluster + since the command does not make sense when there is only one node. + + GitHub issue: [#2890](https://github.com/rabbitmq/rabbitmq-server/pull/2890) + + +### Management Plugin + +#### Bug Fixes + + * When a virtual host was created with tags via the HTTP API, the tags were unintentionally + concatenated together. + + GitHub issue: [#2982](https://github.com/rabbitmq/rabbitmq-server/pull/2982) + + * More precise UI description for message consumption mode that is destructive (consumes in automatic acknowledgement mode). + + GitHub issue: [#3011](https://github.com/rabbitmq/rabbitmq-server/pull/3011) + + +### AWS Peer Discovery Plugin + +#### Enhancements + + * [AWS peer discovery mechanism](https://www.rabbitmq.com/cluster-formation.html#peer-discovery-aws) now supports + [Instance Metadata Service v2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html). + In case it is not available, requests will fall back to the original metadata service endpoint. + + The v2 endpoint offers substantial security improvements and is one of + the [AWS best practices](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-standards-fsbp-controls.html#ec2-8-remediation). + + Contributed by @thuandb (AWS). + + GitHub issue: [#2952](https://github.com/rabbitmq/rabbitmq-server/pull/2952) + + +### Auth Mechanism TLS Plugin + +#### Enhancements + + * The plugin now has limited support for username extraction from SAN of type "other name". + Note that the type by definition supports arbitrary values, so supporting all possible + inputs is not realistic. + + Contributed by @Thibi2000. + + GitHub issue: [#2983](https://github.com/rabbitmq/rabbitmq-server/issues/2983), [#2985](https://github.com/rabbitmq/rabbitmq-server/issues/2985) + +## Dependency Upgrades + + There were no dependency changes. + + +## Source Code Archives + +To obtain source code of the entire distribution, please download the archive named `rabbitmq-server-3.8.15.tar.xz` +instead of the source tarball produced by GitHub. diff --git a/release-notes/3.8.16.md b/release-notes/3.8.16.md new file mode 100644 index 0000000000..ff44bdb1f5 --- /dev/null +++ b/release-notes/3.8.16.md @@ -0,0 +1,87 @@ +## RabbitMQ 3.8.16 + +RabbitMQ `3.8.16` is a maintenance release. + +It reintroduces `rabbitmq_peer_discovery_aws` plugin that was unintentionally removed +from `3.8.15` due to release pipeline changes. + +This is the first release to drop support for Erlang 22.3 and introduce support for the [upcoming Erlang 24](https://blog.rabbitmq.com/posts/2021/03/erlang-24-support-roadmap/) release. + +### Obtaining Packages + +This release is distributed via GitHub, [Cloudsmith](https://cloudsmith.io/~rabbitmq/repos/), +and [PackageCloud](https://packagecloud.io/rabbitmq). + +### Erlang/OTP Compatibility Notes + +This is the [first release to require Erlang 23.2 or later and support upcoming Erlang 24](https://blog.rabbitmq.com/posts/2021/03/erlang-24-support-roadmap/). + +[Provisioning Latest Erlang Releases](https://www.rabbitmq.com/which-erlang.html#erlang-repositories) explains +what package repositories and tools can be used to provision a recent version of Erlang `23.3`. + + +## Upgrade and Compatibility Notes + +### 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 series (e.g. `3.7.x`). + +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. + + +### 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) +and [RabbitMQ community Slack](https://rabbitmq-slack.herokuapp.com/). + + +## Changes Worth Mentioning + +### Core Server + +#### Erlang Release Series Support + + * This release [introduces Erlang 24 support and drops support for Erlang 22](https://blog.rabbitmq.com/posts/2021/03/erlang-24-support-roadmap/). Erlang 24 offers non-trivial real world throughput improvements for many + RabbitMQ installations and workloads. It is expected to ship in May 2021. + + In the meantime, see [Provisioning Latest Erlang Releases](https://www.rabbitmq.com/which-erlang.html#erlang-repositories) to + learn how to provision a recent version of Erlang `23.3`. + + GitHub issue: [#2900](https://github.com/rabbitmq/rabbitmq-server/pull/2900) + + +### AWS Peer Discovery Plugin + +#### Bug Fixes + + * This plugin was unintentionally excluded from the distribution in `3.8.15` and has now been + added back. + + GitHub issue: [#3023](https://github.com/rabbitmq/rabbitmq-server/issues/3023) + + +### Management Plugin + +#### Enhancements + + * Messaging polling HTTP API endpoint leaked temporary connections it used in case of a polling timeout. + Note that **this endpoint is not recommended to be used** outside of QA environments. + Use a [long-lived consumer](https://www.rabbitmq.com/consumers.html) via one of the supported messaging protocols. + + Contributed by @luos. + + GitHub issue: [#3024](https://github.com/rabbitmq/rabbitmq-server/pull/3024) + + +## Dependency Upgrades + +* Cuttlefish has been upgraded from [`2.6.0` to `3.0.0`](https://github.com/kyorai/cuttlefish/compare/v2.6.0..v3.0.0) +* Lager has been upgraded from [`3.8.2` to `3.9.1`](https://github.com/erlang-lager/lager/compare/3.8.2..3.9.1) + + +## Source Code Archives + +To obtain source code of the entire distribution, please download the archive named `rabbitmq-server-3.8.16.tar.xz` +instead of the source tarball produced by GitHub. diff --git a/release-notes/3.8.17.md b/release-notes/3.8.17.md new file mode 100644 index 0000000000..832de5bcae --- /dev/null +++ b/release-notes/3.8.17.md @@ -0,0 +1,145 @@ +## RabbitMQ 3.8.17 + +RabbitMQ `3.8.17` is a maintenance release that includes a security patch. + +### Security Patches + +This release addresses an undisclosed vulnerability with CVSS 3.1 [score of 3.1](https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:L/I:L/A:N/E:P/RL:O/RC:C) (low): [CVE-2021-32718](https://github.com/rabbitmq/rabbitmq-server/security/advisories/GHSA-c3hj-rg5h-2772). + +Our team would like to thank Christian Rellmann from [usd AG](https://www.usd.de/) for [responsibly disclosing](https://www.rabbitmq.com/contact.html#security) +the vulnerability and helping us verify a fix. + +### Obtaining Packages + +RabbitMQ releases are distributed via [GitHub](https://github.com/rabbitmq/rabbitmq-server/releases), [Cloudsmith](https://cloudsmith.io/~rabbitmq/repos/), +and [PackageCloud](https://packagecloud.io/rabbitmq). + +### Erlang/OTP Compatibility Notes + +This release [requires Erlang 23.2](https://www.rabbitmq.com/which-erlang.html) and [supports Erlang 24](https://blog.rabbitmq.com/posts/2021/03/erlang-24-support-roadmap/). + +[Provisioning Latest Erlang Releases](https://www.rabbitmq.com/which-erlang.html#erlang-repositories) explains +what package repositories and tools can be used to provision modern Erlang versions. + + +## Upgrade and Compatibility Notes + +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. + +If upgrading from a`3.7.x` release, 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 a `3.6.x` or older [release series](https://www.rabbitmq.com/versions.html), first upgrade +to [`3.7.27`](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.27) and then to this version. + + +## 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) +and [RabbitMQ community Slack](https://rabbitmq-slack.herokuapp.com/). + + +## Changes Worth Mentioning + +### Core Server + +#### Enhancements + + * Queue index efficiency improvements, mostly around peak memory consumption with large backlogs of small messages. + + Note that some of the improvements come from more optimal defaults: those will only be + applicable to newly created virtual hosts (or new clusters). + + GitHub issues: [#2954](https://github.com/rabbitmq/rabbitmq-server/pull/2954), [#3041](https://github.com/rabbitmq/rabbitmq-server/pull/3041) + + * [Consumer delivery acknowledgement timeout](https://www.rabbitmq.com/consumers.html#acknowledgement-timeout) default has been bumped to 30 minutes (previously 15 minutes). The value + can be overridden. + + GitHub issue: [#3033](https://github.com/rabbitmq/rabbitmq-server/pull/3033) + +#### Bug Fixes + + * A classic queue with [single active consumer](https://www.rabbitmq.com/consumers.html#single-active-consumer) option enabled could run into + an exception after a restart or initial enablement of the management plugin. + + GitHub issue: [#3072](https://github.com/rabbitmq/rabbitmq-server/issues/3072) + + +### Management Plugin + +#### Bug Fixes + + * A combination of HTTPS (TLS) settings and advanced HTTP server settings + resulted in an exception. + + GitHub issue: [#3039](https://github.com/rabbitmq/rabbitmq-server/pull/3039) + + * External stats collector is now restarted again if it fails for any reason. + + Contributed by @luos. + + GitHub issue: [#3040](https://github.com/rabbitmq/rabbitmq-server/pull/3040) + + +### Consistent History Exchange Plugin + +#### Enhancements + + * When nodes are restarted, schema database tables used by this plugin are now reconciled + with cluster peers the [same way RabbitMQ core does it](https://www.rabbitmq.com/clustering.html#restarting). + + GitHub issue: [#3067](https://github.com/rabbitmq/rabbitmq-server/pull/3067) + + +### Recent History Exchange Plugin + +#### Enhancements + + * When nodes are restarted, schema database tables used by this plugin are now reconciled + with cluster peers the [same way RabbitMQ core does it](https://www.rabbitmq.com/clustering.html#restarting). + + GitHub issue: [#3067](https://github.com/rabbitmq/rabbitmq-server/pull/3067) + + +### Delayed Message Exchange Plugin + +#### Enhancements + + * When nodes are restarted, schema database tables used by this plugin are now reconciled + with cluster peers the [same way RabbitMQ core does it](https://www.rabbitmq.com/clustering.html#restarting). + + Contributed by @mwfriedm. + + GitHub issue: [rabbitmq/rabbitmq-delayed-message-exchange#163](https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/pull/163) + + +### Last Value Cache Exchange Plugin + +#### Enhancements + + * When nodes are restarted, schema database tables used by this plugin are now reconciled + with cluster peers the [same way RabbitMQ core does it](https://www.rabbitmq.com/clustering.html#restarting). + + GitHub issue: [rabbitmq/rabbitmq-lvc-exchange#28](https://github.com/rabbitmq/rabbitmq-lvc-exchange/issues/28) + + + +### Web MQTT Plugin + +#### Bug Fixes + + * MQTT-over-WebSockets client connections were not accounted for by the file handle tracking mechanism (metric and resource alarm). + + GitHub issue: [#3076](https://github.com/rabbitmq/rabbitmq-server/pull/3076) + + +## Dependency Upgrades + +None in this release. + + +## Source Code Archives + +To obtain source code of the entire distribution, please download the archive named `rabbitmq-server-3.8.17.tar.xz` +instead of the source tarball produced by GitHub. diff --git a/release-notes/3.8.18.md b/release-notes/3.8.18.md new file mode 100644 index 0000000000..6b4e121318 --- /dev/null +++ b/release-notes/3.8.18.md @@ -0,0 +1,179 @@ +## RabbitMQ 3.8.18 + +RabbitMQ `3.8.18` is a maintenance release that includes a security patch. + +This release addresses an undisclosed vulnerability with CVSS 3.1 [score of 3.1](https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:L/I:L/A:N/E:P/RL:O/RC:C) (low): [CVE-2021-32719](https://github.com/rabbitmq/rabbitmq-server/security/advisories/GHSA-5452-hxj4-773x) + +Our team would like to thank Fahimhusain Raydurg for [responsibly disclosing](https://www.rabbitmq.com/contact.html#security) +the vulnerability and Patrik Ragnarsson from CloudAMQP for contributing a fix. + +### Obtaining Packages + +RabbitMQ releases are distributed via [GitHub](https://github.com/rabbitmq/rabbitmq-server/releases), [Cloudsmith](https://cloudsmith.io/~rabbitmq/repos/), +and [PackageCloud](https://packagecloud.io/rabbitmq). + +### Erlang/OTP Compatibility Notes + +This release [requires Erlang 23.2](https://www.rabbitmq.com/which-erlang.html) and [supports Erlang 24](https://blog.rabbitmq.com/posts/2021/03/erlang-24-support-roadmap/). + +[Provisioning Latest Erlang Releases](https://www.rabbitmq.com/which-erlang.html#erlang-repositories) explains +what package repositories and tools can be used to provision modern Erlang versions. + + +## Upgrade and Compatibility Notes + +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. + +If upgrading from a`3.7.x` release, 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 a `3.6.x` or older [release series](https://www.rabbitmq.com/versions.html), first upgrade +to [`3.7.27`](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.27) and then to this version. + + +## 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) +and [RabbitMQ community Slack](https://rabbitmq-slack.herokuapp.com/). + + +## Changes Worth Mentioning + +### Core Server + +#### Enhancements + + * [Peer discovery](https://www.rabbitmq.com/cluster-formation.html) no longer uses randomized delays to avoid the inherent race condition + during [initial cluster formation](https://www.rabbitmq.com/cluster-formation.html#initial-formation-race-condition). Instead it relies on an internal + distributed locking mechanism available in modern Erlang releases. + + While randomized startup delay was reasonably effective at ensuring only one cluster was formed even during parallel node + startup, it by definition assumes that with some low probability more than one node can still start as seed nodes, + and be joined by different groups of cluster peers. The locking mechanism does not have this downside. + Now that RabbitMQ requires Erlang 23.2, the internal locking library becomes an option for peer discovery. + Note that etcd and Consul-based peer discovery still use those service's support for distributed locks. + + `cluster_formation.randomized_startup_delay_range.min` and `cluster_formation.randomized_startup_delay_range.max` configuration keys + will no longer have any effect. + + GitHub issue: [#3075](https://github.com/rabbitmq/rabbitmq-server/pull/3075) + + * Node startup banner now includes Erlang version, runtime operation mode (JIT vs. emulator), + and underlying crypto library version (e.g. OpenSSL 1.1.1k) it was built against. + + GitHub issue: [#2777](https://github.com/rabbitmq/rabbitmq-server/pull/2777) + + * Build system targets now use `hostname(1)` in a way that is compatible with Solaris. + + Contributed by Pavel @tropikhajma Heimlich. + + GitHub issue: [#3117](https://github.com/rabbitmq/rabbitmq-server/pull/3117) + +#### Bug Fixes + + * Queue deletion could run into an exception in some rare cases. + + Contributed by @tomyouyou. + + GitHub issue: [#3086](https://github.com/rabbitmq/rabbitmq-server/issues/3086) + + +### Prometheus Plugin + +#### Bug Fixes + + * In certain double stack (IPv4 and IPv6) environments, the plugin would start a single listener + but register two internally. That extra non-existent listener would make `rabbitmq-diagnostics drain` + fail as it disables all registered listeners. + + GitHub issue: [#3021](https://github.com/rabbitmq/rabbitmq-server/pull/3021) + + +### Management Plugin + +#### Bug Fixes + + * In certain double stack (IPv4 and IPv6) environments, the plugin would start a single listener + but register two internally. That extra non-existent listener would make `rabbitmq-diagnostics drain` + fail as it disables all registered listeners. + + GitHub issue: [#3021](https://github.com/rabbitmq/rabbitmq-server/pull/3021) + +### Kubernetes Peer Discovery Plugin + +#### Enhancements + + * Kubernetes [peer discovery](https://www.rabbitmq.com/cluster-formation.html) mechanism no longer uses randomized delays to avoid the inherent race condition + during [initial cluster formation](https://www.rabbitmq.com/cluster-formation.html#initial-formation-race-condition). Instead it relies on an internal + distributed locking mechanism available in modern Erlang releases. + + While randomized startup delay was reasonably effective at ensuring only one cluster was formed even during parallel node + startup, it by definitely assumes that with some low probability more than one node can still start as seed nodes, + and be joined by different groups of cluster peers. The locking mechanism does not have this downside. + Now that RabbitMQ requires Erlang 23.2, the internal locking library becomes an option for peer discovery. + + `cluster_formation.randomized_startup_delay_range.min` and `cluster_formation.randomized_startup_delay_range.max` configuration keys + will no longer have any effect. + + GitHub issue: [#3075](https://github.com/rabbitmq/rabbitmq-server/pull/3075) + + +### AWS Peer Discovery Plugin + +#### Enhancements + + * AWS [peer discovery](https://www.rabbitmq.com/cluster-formation.html) mechanism no longer uses randomized delays to avoid the inherent race condition + during [initial cluster formation](https://www.rabbitmq.com/cluster-formation.html#initial-formation-race-condition). Instead it relies on an internal + distributed locking mechanism available in modern Erlang releases. + + While randomized startup delay was reasonably effective at ensuring only one cluster was formed even during parallel node + startup, it by definitely assumes that with some low probability more than one node can still start as seed nodes, + and be joined by different groups of cluster peers. The locking mechanism does not have this downside. + Now that RabbitMQ requires Erlang 23.2, the internal locking library becomes an option for peer discovery. + + `cluster_formation.randomized_startup_delay_range.min` and `cluster_formation.randomized_startup_delay_range.max` configuration keys + will no longer have any effect. + + GitHub issue: [#3075](https://github.com/rabbitmq/rabbitmq-server/pull/3075) + + +### Federation Plugin + +#### Bug Fixes + + * Queue federation will now declare queues on the upstream side only if it does not already + exist. This makes it possible to federate pre-declared queues of different types. + + Note that such setups should be considered edge cases. Queue federation was never meant + to federated queues of different types under the same name in different clusters. + Such setups could be useful in [Blue/Green deployment upgrade](https://www.rabbitmq.com/blue-green-upgrade.html) scenarios but + otherwise should be avoided. + + GitHub issue: [#3107](https://github.com/rabbitmq/rabbitmq-server/pull/3107) + + +### AuthN/AuthZ Backend HTTP Plugin + +#### Bug Fixes + + * `auth_http.connection_timeout` and `auth_http.request_timeout` are two new configuration parameters that control HTTP client connection + and overall request timeouts. They both default to 15 seconds. The value can be increased for services that can occasionally slow down + significantly. + + Contributed by Miłosz @SzumiecM Szumiec. + + GitHub issue: [#3140](https://github.com/rabbitmq/rabbitmq-server/pull/3140) + + +## Dependency Upgrades + + * `jose` was updated [from `1.11.1` to `2b1d66b5f4`](https://github.com/potatosalad/erlang-jose/commit/2b1d66b5f4fbe33cb198149a8cb23895a2c877ea) + * `jsx` was updated [from `2.11.0` to `3.1.0`](https://github.com/talentdeficit/jsx/blob/main/CHANGES.md) + * `observer_cli` was updated [from `1.6.1` to `1.6.2`](https://github.com/zhongwencool/observer_cli/compare/1.6.1..1.6.2) + + +## Source Code Archives + +To obtain source code of the entire distribution, please download the archive named `rabbitmq-server-3.8.18.tar.xz` +instead of the source tarball produced by GitHub. diff --git a/release-notes/3.8.19.md b/release-notes/3.8.19.md new file mode 100644 index 0000000000..adecfe43db --- /dev/null +++ b/release-notes/3.8.19.md @@ -0,0 +1,79 @@ +## RabbitMQ 3.8.19 + +RabbitMQ `3.8.19` is a maintenance release. + +### Obtaining Packages + +RabbitMQ releases are distributed via [GitHub](https://github.com/rabbitmq/rabbitmq-server/releases), [Cloudsmith](https://cloudsmith.io/~rabbitmq/repos/), +and [PackageCloud](https://packagecloud.io/rabbitmq). + +### Erlang/OTP Compatibility Notes + +This release [requires Erlang 23.2](https://www.rabbitmq.com/which-erlang.html) and [supports Erlang 24](https://blog.rabbitmq.com/posts/2021/03/erlang-24-support-roadmap/). + +[Provisioning Latest Erlang Releases](https://www.rabbitmq.com/which-erlang.html#erlang-repositories) explains +what package repositories and tools can be used to provision modern Erlang versions. + + +## Upgrade and Compatibility Notes + +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. + +If upgrading from a`3.7.x` release, 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 a `3.6.x` or older [release series](https://www.rabbitmq.com/versions.html), first upgrade +to [`3.7.27`](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.27) and then to this version. + + +## 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) +and [RabbitMQ community Slack](https://rabbitmq-slack.herokuapp.com/). + + +## Changes Worth Mentioning + +### Core Server + +#### Enhancements + + * Binding recovery on node startup is now more efficient. This means in clusters with a lot of + queues and/or bindings, nodes start quicker. + + GitHub issue: [#3137](https://github.com/rabbitmq/rabbitmq-server/pull/3137) + + * Plugin directory paths are now deduplicated, so if a single directory is specified + more than ones, the node won't complain about duplicate plugins. + + GitHub issue: [#3155](https://github.com/rabbitmq/rabbitmq-server/issues/3155) + + * Startup banner and log entries now use path separators more consistently on Windows. + + Thanks to Linda @LindaLawton Lawton for pointing out the inconsistency. + + GitHub issue: [#3149](https://github.com/rabbitmq/rabbitmq-server/issues/3149) + + + +### Shovel Plugin + +#### Bug Fixes + + * When dynamic Shovels are started the plugin now acquires a distributed lock. + This is generally not necessary but helps avoid duplicate Shovels being started + via import of a definition file on every cluster node during cluster formation. + + GitHub issue: [#3167](https://github.com/rabbitmq/rabbitmq-server/pull/3167) + + +## Dependency Upgrades + +No dependency changes in this release. + + +## Source Code Archives + +To obtain source code of the entire distribution, please download the archive named `rabbitmq-server-3.8.19.tar.xz` +instead of the source tarball produced by GitHub. diff --git a/release-notes/3.8.2.md b/release-notes/3.8.2.md new file mode 100644 index 0000000000..4de05b195c --- /dev/null +++ b/release-notes/3.8.2.md @@ -0,0 +1,204 @@ +## RabbitMQ 3.8.2 + +RabbitMQ `3.8.2` is a maintenance release. + +### Erlang/OTP Compatibility Notes + +This release [**requires Erlang/OTP 21.3**](https://www.rabbitmq.com/which-erlang.html) or later. +`22.x` series is 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 `21.3.x` and `22.x`. + +### Compatibility Notes + +#### 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 21.x or 22.x, then to RabbitMQ 3.8.x. + +#### 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. + +### 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 + +### Core Server + +#### Enhancements + + * Raft implementation optimizations. + + GitHub issues: [rabbitmq/ra#137](https://github.com/rabbitmq/ra/pull/137), [rabbitmq/ra#148](https://github.com/rabbitmq/ra/pull/148) + + * Quorum queue optimization: enables local (not going through the leader) delivery from Raft followers + when appropriate and safe. + + GitHub issues: [rabbitmq/rabbitmq-server#2146](https://github.com/rabbitmq/rabbitmq-server/pull/2146), [rabbitmq/ra#132](https://github.com/rabbitmq/ra/pull/132) + + * If `x-queue-type` argument is not provided at queue declaration time, the type is assumed to be `classic` + instead of missing. + + GitHub issue: [rabbitmq/rabbitmq-common#341](https://github.com/rabbitmq/rabbitmq-common/issues/341) + + * Quorum queue consumer timeout now can be configured using new style configuration file: + + ``` ini + # Hard timeout for quorum queue consumer acknowledgemnts of two minutes + consumer_timeout = 120000 + ``` + + GitHub issue: [rabbitmq/rabbitmq-server#2163](https://github.com/rabbitmq/rabbitmq-server/pull/2163) + +#### Bug Fixes + + * A quorum queue could produce an empty Raft log segment if node is killed at a particular moment in time, + which would prevent the node from successfully recovering the log after restart. + + GitHub issues: [rabbitmq/ra#138](https://github.com/rabbitmq/ra/pull/138) + + * Quorum queue consumer count metric could be duplicated when reported via HTTP API or to a Prometheus scraper. + + GitHub issue: [rabbitmq/rabbitmq-server#2176](https://github.com/rabbitmq/rabbitmq-server/pull/2176) + + +### CLI Tools + +#### Enhancements + + * It is now possible to [export and import definitions]() without the use of plugins with + `rabbitmqctl export_definitions` and `rabbitmqctl import_definitions`: + + ``` sh + # export as a JSON file + rabbitmqctl export_definitions /path/to/target.file.json + + # export as JSON to standard output and pipe to jq + rabbitmqctl export_definitions "-" | jq + + # export as a compressed Erlang term file + rabbitmqctl export_definitions /path/to/target.file --format=erlang + + # learn more + rabbitmqctl help export_definitions + ``` + + ``` sh + # import from a JSON file + rabbitmqctl import_definitions /path/to/target.file.json + + # import JSON from standard input + cat /path/to/definitions.json | rabbitmqctl import_definitions "-" + + # import from a compressed Erlang term file + rabbitmqctl import_definitions /path/to/target.file --format=erlang + + # learn more + rabbitmqctl help import_definitions + ``` + + GitHub issue: [rabbitmq/rabbitmq-management#749](https://github.com/rabbitmq/rabbitmq-management/issues/749) + + * Entities with `amq.*` prefixes are now skipped during import instead of producing an error. + + GitHub issue: [rabbitmq/rabbitmq-server#2170](https://github.com/rabbitmq/rabbitmq-server/issues/2170) + +#### Bug Fixes + + * `rabbitmqctl await_startup` failed with an exception when RabbitMQ application was stopped but the + runtime (Erlang VM) was running. + + GitHub issue: [rabbitmq/rabbitmq-server#2158](https://github.com/rabbitmq/rabbitmq-server/issues/2158) + + +### Management Plugin + +#### Bug Fixes + + * Definition import via HTTP API could fail in if performed via HTTP API (but not management UI) + and contained operator policies. + + GitHub issue: [rabbitmq/rabbitmq-management#751](https://github.com/rabbitmq/rabbitmq-management/issues/751) + +#### Enhancements + + * Metric aggregation optimizations. + + GitHub issue: [rabbitmq/rabbitmq-management-agent#84](https://github.com/rabbitmq/rabbitmq-management-agent/pull/84) + + +### MQTT Plugin + +#### Enhancements + + * Throughput improvements ranging from 14 to 60 percent depending on workload. + + GitHub issue: [rabbitmq/rabbitmq-server#2168](https://github.com/rabbitmq/rabbitmq-server/issues/2168) + + * Throughput improvements and reduced CPU usage but slightly higher per connection RAM footprint. + + GitHub issues: [rabbitmq/rabbitmq-mqtt#216](https://github.com/rabbitmq/rabbitmq-mqtt/pull/216), [rabbitmq/rabbitmq-mqtt#217](https://github.com/rabbitmq/rabbitmq-mqtt/pull/217) + +#### Bug Fixes + + * Client ID tracker could produce an empty Raft log segment if node is killed at a particular moment in time, + which would prevent the node from successfully recovering the log after restart. + + GitHub issues: [rabbitmq/discussions#4](https://github.com/rabbitmq/discussions/issues/4), [rabbitmq/ra#138](https://github.com/rabbitmq/ra/pull/138) + + * Last Will messages that use QoS 2 will now be downgraded to QoS 1 just like with "regular" published messages. + + GitHub issue: [rabbitmq/rabbitmq-mqtt#214](https://github.com/rabbitmq/rabbitmq-mqtt/issues/214) + + +### AMQP 1.0 Plugin + +#### Enhancements + + * Throughput improvements. + + GitHub issue: [rabbitmq/rabbitmq-server#2168](https://github.com/rabbitmq/rabbitmq-server/issues/2168) + + +### STOMP Plugin + +#### Enhancements + + * Throughput improvements. + + GitHub issue: [rabbitmq/rabbitmq-server#2168](https://github.com/rabbitmq/rabbitmq-server/issues/2168) + + +### Web STOMP Plugin + +#### Enhancements + + * Clients now can authenticate using an x.509 (TLS) certificate. + + GitHub issue: [rabbitmq/rabbitmq-web-stomp#116](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/116) + + +### Prometheus Plugin + + * A small number of queue metrics were not read from the metric store correctly. + + GitHub issue: [rabbitmq/rabbitmq-prometheus#19](https://github.com/rabbitmq/rabbitmq-prometheus/issues/19) + + +## 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.2.tar.xz`. diff --git a/release-notes/3.8.3.md b/release-notes/3.8.3.md new file mode 100644 index 0000000000..b45cfc6522 --- /dev/null +++ b/release-notes/3.8.3.md @@ -0,0 +1,305 @@ +## RabbitMQ 3.8.3 + +RabbitMQ `3.8.3` is a maintenance release. + + +### Erlang/OTP Compatibility Notes + +This release [**requires Erlang/OTP 21.3**](https://www.rabbitmq.com/which-erlang.html) or later. +`22.x` series is 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 `21.3.x` and `22.x`. + + +### Compatibility Notes + +#### 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 21.x or 22.x, then to RabbitMQ 3.8.x. + +#### 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. + +### 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 + + +### Core Server + +#### Bug Fixes + + * Reduced scheduled GC activity in connection socket writer to one run per 1 GiB of data transferred, with an option to change the value or disable scheduled run entirely. + More frequent binary heap GC runs seem unneccesary on Erlang 22. + + Contributed by Aleksander Nycz. + + GitHub issue: [rabbitmq/rabbitmq-common#343](https://github.com/rabbitmq/rabbitmq-common/pull/343) + + * Eliminated an inefficiency in recovery of quorum queues with a backlog of messages. + + GitHub issue: [rabbitmq/rabbitmq-server#2260](https://github.com/rabbitmq/rabbitmq-server/pull/2260) + + * In a case where a node hosting a quorum queue replica went offline and was removed from the cluster, + and later came back, quorum queues could enter a loop of Raft leader elections. + + GitHub issue: [rabbitmq/rabbitmq-server#2255](https://github.com/rabbitmq/rabbitmq-server/pull/2255) + + * Quorum queues with a dead lettering could fail to recover. + + GitHub issue: [rabbitmq/rabbitmq-server#2256](https://github.com/rabbitmq/rabbitmq-server/pull/2256) + + * The node now can recover even if virtual host recovery terms file was corrupted. + + Contributed by @tomyouyou. + + GitHub issue: [rabbitmq/rabbitmq-server#2195](https://github.com/rabbitmq/rabbitmq-server/pull/2195) + + * Autoheal could fail to finish if one of its state transitions initiated by a remote node timed out. + + Contributed by @tomyouyou. + + GitHub issue: [rabbitmq/rabbitmq-server#2209](https://github.com/rabbitmq/rabbitmq-server/pull/2209) + + * Syslog client is now started even when Syslog logging is configured only for some log sinks. + + GitHub issue: [rabbitmq/rabbitmq-server#2044](https://github.com/rabbitmq/rabbitmq-server/issues/2044) + + * Policies that quorum queues ignored were still listed as applied to them. + + GitHub issue: [rabbitmq/rabbitmq-server#2210](https://github.com/rabbitmq/rabbitmq-server/pull/2210) + + * If a quorum queue leader rebalancing operation timed out, CLI tools failed with an exception instead of a sensible internal API response. + + Contributed by Gabriele Santomaggio. + + GitHub issue: [rabbitmq/rabbitmq-server#2214](https://github.com/rabbitmq/rabbitmq-server/issues/2214) + + * Handle timeout error on the rebalance function. + + Contributed by Gabriele Santomaggio. + + GitHub issue: [rabbitmq/rabbitmq-server#2218](https://github.com/rabbitmq/rabbitmq-server/pull/2218) + + * Handle and raise protocol error for absent queues assumed to be alive. + + Contributed by Ayanda Dube. + + GitHub issue: [rabbitmq/rabbitmq-server#2233](https://github.com/rabbitmq/rabbitmq-server/pull/2233) + +#### Enhancements + + * Some Proxy protocol errors are now logged at debug level. + This reduces log noise in environments where TCP load balancers and proxies perform health checks by opening a TCP connection but never sending any data. + + GitHub issue: [rabbitmq/rabbitmq-server#2204](https://github.com/rabbitmq/rabbitmq-server/pull/2204) + + * Quorum queue deletion operation no longer supports the "if unused" and "if empty" options. + They are typically used for transient queues don't make much sense for quorum ones. + + GitHub issue: [rabbitmq/rabbitmq-server#2211](https://github.com/rabbitmq/rabbitmq-server/pull/2211) + + * Do not treat applications that do not depend on rabbit as plugins. + This is especially important for applications that should not be stopped before rabbit is stopped. + + GitHub Issue: [rabbitmq/rabbitmq-server#2212](https://github.com/rabbitmq/rabbitmq-server/pull/2212) + + * RabbitMQ nodes will now gracefully shutdown when receiving a `SIGTERM` signal. + Previously the runtime would invoke a default handler that terminates the VM giving RabbitMQ no chance to execute its shutdown steps. + + GitHub issue: [rabbitmq/rabbitmq-server#2222](https://github.com/rabbitmq/rabbitmq-server/issues/2222) + + * Every cluster now features a persistent internal cluster ID that can be used by core features or plugins. + Unlike the human-readable cluster name, the value cannot be overriden by the user. + + GitHub issue: [rabbitmq/rabbitmq-server#2226](https://github.com/rabbitmq/rabbitmq-server/pull/2226) + + * Speedup execution of boot steps by a factor of 2N, where N is the number of attributes per step. + + Contributed by Ayanda Dube. + + GitHub issue: [rabbitmq/rabbitmq-server#2246](https://github.com/rabbitmq/rabbitmq-server/pull/2246) + + +### CLI Tools + +#### Bug Fixes + + * `rabbitmq-diagnostics status` failed to display the results when executed against a node that had high VM watermark set as an absolute value (using `vm_memory_high_watermark.absolute`). + + GitHub issue: [rabbitmq/rabbitmq-cli#395](https://github.com/rabbitmq/rabbitmq-cli/issues/395) + +#### Enhancements + + * New health checks that can be used to determine if it's a good moment to shut down a node for an upgrade. + + ``` sh + # Exits with a non-zero code if target node hosts leader replica of at least one queue + # that has out-of-sync mirror. + rabbitmq-diagnostics check_if_node_is_mirror_sync_critical + + # Exits with a non-zero code if one or more quorum queues will lose online quorum + # should target node be shut down + rabbitmq-diagnostics check_if_node_is_quorum_critical + ``` + + GitHub issue: [rabbitmq/rabbitmq-cli#389](https://github.com/rabbitmq/rabbitmq-cli/issues/389) + + * Some proxy protocol errors are now logged at debug level. + * This reduces log noise in environments where TCP load balancers and proxies perform health checks by opening a TCP connection but never sending any data. + + GitHub issue: [rabbitmq/rabbitmq-server#2204](https://github.com/rabbitmq/rabbitmq-server/pull/2204) + + +### Management and Management Agent Plugins + +#### Bug Fixes + + * Consumer section on individual page was unintentionally hidden. + + GitHub issue: [rabbitmq/rabbitmq-management#758](https://github.com/rabbitmq/rabbitmq-management/issues/758) + + * Fix queue-type select by adding unsafe-inline CSP policy. + + GitHub issue: [rabbitmq/rabbitmq-management#769](https://github.com/rabbitmq/rabbitmq-management/pull/769) + +#### Enhancements + + * An undocumented "automagic login" feature on the login form was removed. + + GitHub issue: [rabbitmq/rabbitmq-management#748](https://github.com/rabbitmq/rabbitmq-management/pull/748) + + * A new `POST /login` endpoint can be used by custom management UI login forms to authenticate the user and set the cookie. + + GitHub issue: [rabbitmq/rabbitmq-management#764](https://github.com/rabbitmq/rabbitmq-management/issues/764) + + * A new `POST /rebalance/queues` endpoint that is the HTTP API equivalent of `rabbitmq-queues rebalance` + + GitHub issue: [rabbitmq/rabbitmq-management#782](https://github.com/rabbitmq/rabbitmq-management/issues/782) + + * Warning about a missing `handle.exe` in `PATH` on Windows is now only logged every 10 minutes. + + GitHub issue: [rabbitmq/rabbitmq-management-agent#90](https://github.com/rabbitmq/rabbitmq-management-agent/issues/90) + + * `rabbitmqadmin declare queue` now supports a new `queue_type` parameter to simplify declaration of quorum queues. + + GitHub issue: [rabbitmq/rabbitmq-management#761](https://github.com/rabbitmq/rabbitmq-management/issues/761) + + * HTTP API request log entries now includes acting user. + + GitHub issue: [rabbitmq/rabbitmq-management#760](https://github.com/rabbitmq/rabbitmq-management/issues/760) + + * [Content Security Policy headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) are now also set for static assets such as JavaScript files. + + GitHub issue: [rabbitmq/rabbitmq-management#767](https://github.com/rabbitmq/rabbitmq-management/issues/767) + + +### Prometheus Plugin + +#### Enhancements + + * Add option to aggregate metrics for channels, queues & connections. Metrics are now aggregated by default (safe by default). + This new behaviour can be disabled via `prometheus.return_per_object_metrics = true` config. + + GitHub issue: [rabbitmq/rabbitmq-prometheus#28](https://github.com/rabbitmq/rabbitmq-prometheus/issues/28) + + +### Kubernetes Peer Discovery Plugin + +#### Enhancements + + * The plugin will now notify [Kubernetes API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.16/#event-v1-core) of node startup and peer stop/unavailability events. + + Contributed by Gabriele Santomaggio. + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-k8s#61](https://github.com/rabbitmq/rabbitmq-peer-discovery-k8s/pull/61) + + +### Etcd Peer Discovery Plugin + +#### Bug Fixes + + * Only run healthcheck when backend is configured. + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-etcd#21](https://github.com/rabbitmq/rabbitmq-peer-discovery-etcd/pull/21) + + +### Federation Plugin + +#### Bug Fixes + + * Use vhost to delete federated exchange. + + [Reported by Brett Janer](https://groups.google.com/forum/#!topic/rabbitmq-users/nfulekZc_OQ/discussion). + + GitHub issue: [rabbitmq/rabbitmq-federation#99](https://github.com/rabbitmq/rabbitmq-federation/pull/99) + +#### Enhancements + + * "Command" operations such as binding propagation now use a separate channel for all links, preventing latency spikes for asynchronous operations (such as message publishing) (a head-of-line blocking problem). + + Contributed by Grigory Starinkin. + + GitHub issue: [rabbitmq/rabbitmq-federation#97](https://github.com/rabbitmq/rabbitmq-federation/pull/97) + + +### Auth Backend OAuth 2 Plugin + + * Additional scopes can be fetched from a predefined JWT token field. + Those scopes will be combined with the standard scopes field. + + Contributed by @papugamichal. + + GitHub issue: [rabbitmq/rabbitmq-auth-backend-oauth2#41](https://github.com/rabbitmq/rabbitmq-auth-backend-oauth2/pull/41) + + +### Trust Store Plugin + +#### Enhancements + + * HTTPS certificate provider will not longer terminate if upstream service response contains invalid JSON. + + GitHub issue: [rabbitmq/rabbitmq-trust-store#73](https://github.com/rabbitmq/rabbitmq-trust-store/issues/73) + + +### MQTT Plugin + +#### Enhancements + + * Avoid blocking when registering or unregistering a client ID. + + GitHub issue: [rabbitmq/rabbitmq-mqtt#226](https://github.com/rabbitmq/rabbitmq-mqtt/pull/226) + + +### AMQP 1.0 Client Plugin + +#### Enhancements + + * Handle heartbeat in `close_sent/2`. + + GitHub issue: [rabbitmq/rabbitmq-amqp1.0-client#44](https://github.com/rabbitmq/rabbitmq-amqp1.0-client/pull/44) + + + +## 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.3.tar.xz`. + + + +## Dependency upgrades + + * observer-cli was upgraded [from v1.5.2 to v1.5.3](https://github.com/zhongwencool/observer_cli/compare/1.5.2...1.5.3) + * prometheus.erl was upgraded [from v4.4.0 to v4.5.0](https://github.com/deadtrickster/prometheus.erl/compare/v4.4.0...v4.5.0) + * ra was upgraded [from v1.0.5 to v1.0.8](https://github.com/rabbitmq/ra/compare/v1.0.5...v1.0.8) diff --git a/release-notes/3.8.4.md b/release-notes/3.8.4.md new file mode 100644 index 0000000000..13e8d55492 --- /dev/null +++ b/release-notes/3.8.4.md @@ -0,0 +1,413 @@ +## RabbitMQ 3.8.4 + +RabbitMQ `3.8.4` is a maintenance release. It focuses on bug fixes and usability +improvements. etcd [peer discovery](https://www.rabbitmq.com/cluster-formation.html) plugin includes potentially breaking changes which are covered in detail below. + +This is the first release to be [fully 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. + +This is the first release to officially support Erlang 23. Compared to `3.8.3`, which +generally works as expected on Erlang 23, [Prometheus monitoring](https://www.rabbitmq.com/prometheus.html) plugin had to +be adapted to support a memory allocator metric format that has changed compared to +earlier Erlang releases. + +There is one **remaining known Erlang 23 incompatibility**: `rabbitmq-diagnostics observer` **will fail** on Erlang 23. +This will be addressed in a future release. +The root cause is the same memory allocator metric change. + +[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 + +### Raft Segment File Format Change + +In earlier `3.8.x` versions, Raft log segment files were unintentionally limited to 4 GiB, +which can be problematic for environments that use quorum queues and medimum to large message +payloads. + +This releases removes the limitation by changing the segment file on-disk format. +While **no action is required** for upgrading to `3.8.4`, operators should keep in mind +that segment files produced by `3.8.4` nodes won't be readable by earlier versions. +In other words, this release **does not support downgrading** to earlier `3.8.x` versions. + +### Custom Prefixless Node Name + +Environments that override node name using `NODENAME` in `rabbitmq-env.conf` may have to +also define `RABBITMQ_NODENAME` in the same file for CLI tools to pick the value up: + +``` ini +# how node name is typically overridden in rabbitmq-env.conf[.bat] files +NODENAME=rabbit@custom.hostname +# for CLI tools in 3.8.4, otherwise not necessary +RABBITMQ_NODENAME=rabbit@custom.hostname +``` + +This behaviour change compared to earlier `3.8.x` version was not intentional and was +[corrected for `3.8.5`](https://github.com/rabbitmq/rabbitmq-cli/pull/422). + +Alternatively, it is possible to provide target node name using a command line flag: + +``` shell +rabbitmq-diagnostics -n rabbit@custom.hostname status +``` + +### 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 + + * A node recovering a large disk backlog did not throttle its recovery activity, potentially + using large amounts of memory at peak during recovery. + + GitHub issue: [rabbitmq/rabbitmq-server#2254](https://github.com/rabbitmq/rabbitmq-server/issues/2254) + + * Raft log segment files were unintentionally limited to 4 GiB in size, which could result + in failing log flush operations in environments where medium and large messages were published to + quorum queues. + + This problem is addressed by a change to the on disk format of Raft log segment files. + The change is irreversible, meaning that **there is no downgrade path** from `3.8.4` to earlier releases. + + GitHub issue: [rabbitmq/ra#176](https://github.com/rabbitmq/ra/pull/176) + + * A reached delivery limit on a quorum queue could result in an exception for polling (`basic.get`) consumers. + + GitHub issue: [rabbitmq/rabbitmq-server#2330](https://github.com/rabbitmq/rabbitmq-server/pull/2330) + + * A publish to a quorum queue that happened to not have an elected leader failed with an exception. + Such operations are generally expected to be retried by channels. + + GitHub issue: [rabbitmq/rabbitmq-server#2295](https://github.com/rabbitmq/rabbitmq-server/pull/2295) + + * Separate authN and authZ backends did not behave as expected when `rabbitmq_auth_backend_cache` was enabled. + + GitHub issue: [rabbitmq/rabbitmq-server#2322](https://github.com/rabbitmq/rabbitmq-server/issues/2322) + + * Handle a condition where epmd connection was closed during node registration. + + GitHub issue: [rabbitmq/rabbitmq-server#2332](https://github.com/rabbitmq/rabbitmq-server/pull/2332) + + * Registering a quorum queue consumer did not result in a `consumer.created` event like it would + for classic queues. + + GitHub issue: [rabbitmq/rabbitmq-server#2341](https://github.com/rabbitmq/rabbitmq-server/issues/2341) + +#### Enhancements + + * Reduced peak memory use of quorum queues that go idle (not under constant load). + + GitHub issue: [rabbitmq/rabbitmq-server#2272](https://github.com/rabbitmq/rabbitmq-server/pull/2272) + + * Change default configuration values for quorum queues to improve publisher back pressure when under heavy load. + + GitHub issue: [rabbitmq/rabbitmq-server#2334](https://github.com/rabbitmq/rabbitmq-server/pull/2334) + + * Definition import is now partially concurrent, improving CPU utilisation and reducing the amount of time + taken to import a large definition file. + + GitHub issue: [rabbitmq/rabbitmq-server#2224](https://github.com/rabbitmq/rabbitmq-server/issues/2224) + + * Improved configuration merging for cases when multiple files are used, e.g. `rabbitmq.conf` plus + `advanced.config` or even multiple `.conf` files (the latter is an experimental feature). + + GitHub issue: [rabbitmq/rabbitmq-server#2277](https://github.com/rabbitmq/rabbitmq-server/pull/2277) + + * More peer discovery errors are retried. + + GitHub issue: [rabbitmq/rabbitmq-server#1627](https://github.com/rabbitmq/rabbitmq-server/issues/1627) + + * Allow product name, version and MOTD to be overwritten via environment variables. + + GitHub issue: [rabbitmq/rabbitmq-server#2247](https://github.com/rabbitmq/rabbitmq-server/pull/2247) + + * Improve display of product name and version. + + GitHub issue: [rabbitmq/rabbitmq-server#2326](https://github.com/rabbitmq/rabbitmq-server/pull/2326) + + * Make RabbitMQ a regular Erlang/OTP application. + + GitHub issue: [rabbitmq/rabbitmq-server#2180](https://github.com/rabbitmq/rabbitmq-server/issues/2180) + + +### CLI Tools + +#### Enhancements + + * New `rabbitmq-upgrade` commands: `await_online_quorum_plus_one` and `await_online_synchronized_mirror`. + The commands will wait for a safe quorum of nodes (quorum queues) or a synchronised leader replica (classic mirrored queues) + to be or come online within a period of time. + + ``` sh + # Exits with a non-zero exit code if there is not a quorum + 1 of nodes online for all + # quorum queues within 120 seconds (default timeout) + rabbitmq-upgrade await_online_quorum_plus_one + # Will wait for a quorum + 1 of nodes to be online for all quorum queues for 0 seconds... + + # The timeout can be adjusted via the -t flag: + rabbitmq-upgrade await_online_quorum_plus_one -t 60 + # Will wait for a quorum + 1 of nodes to be online for all quorum queues for 60 seconds... + + # There is an equivalent command for classic mirrored queues + rabbitmq-upgrade await_online_synchronized_mirror + ``` + + GitHub issue: [rabbitmq/rabbitmq-cli#409](https://github.com/rabbitmq/rabbitmq-cli/issues/409) + + * New `rabbitmq-diagnostics` command: `os_env` + + GitHub issue: [rabbitmq/rabbitmq-cli#412](https://github.com/rabbitmq/rabbitmq-cli/pull/412) + + +### Prometheus Plugin + +#### Enhancements + + * Compatibility with Erlang 23 memory allocator metric format. + + GitHub issue: [rabbitmq/rabbitmq-prometheus#42](https://github.com/rabbitmq/rabbitmq-prometheus/issues/42) + + * Node color labeling in Grafana dashboards now works out of the box with one more common naming scheme. + + GitHub issue: [rabbitmq/rabbitmq-prometheus#33](https://github.com/rabbitmq/rabbitmq-prometheus/issues/33) + + Contributed by @Aakcht. + + +### Federation Plugin + +#### Bug Fixes + + * Credential obfuscation now uses the same [shared secret](https://www.rabbitmq.com/clustering.html#erlang-cookie) + on all nodes to make sure that a link running on node A can be restarted by a command against node B. + Previously each node used its own generated secret for obfuscation, which means certain operations + on links originated on other nodes were not possible. + + GitHub issue: [rabbitmq/rabbitmq-server#2351](https://github.com/rabbitmq/rabbitmq-server/pull/2351) + +#### Enhancements + + * Internal resources cleanup is now more selective on abnormal link termination. A new upstream parameter, `resource-cleanup-mode`, + can be set to `"never"` used to prevent internal queues from being deleted by exchange federation links on termination. + Use this when data safety is more important than protection from resource leaks. It then will be up to the operator to make + sure such resources are periodically deleted or use a suitable [TTL](https://www.rabbitmq.com/ttl.html). + + GitHub issue: [rabbitmq/rabbitmq-federation#105](https://github.com/rabbitmq/rabbitmq-federation/issues/105) + + * SNI is now enabled by default for TLS-enabled connections. + + Contributed by Carl Hörberg (CloudAMQP). + + GitHub issue: [rabbitmq/rabbitmq-erlang-client#132](https://github.com/rabbitmq/rabbitmq-erlang-client/pull/132) + + +### Shovel Plugin + +#### Bug Fixes + + * Credential obfuscation now uses the same [shared secret](https://www.rabbitmq.com/clustering.html#erlang-cookie) + on all nodes to make sure that a shovel running on node A can be restarted by a command against node B. + Previously each node used its own generated secret for obfuscation, which means certain operations + on shovels originated on other nodes were not possible. + + GitHub issue: [rabbitmq/rabbitmq-server#2351](https://github.com/rabbitmq/rabbitmq-server/pull/2351) + + * Shovels are now correctly removed even when deletion commands are executed against a different node + (not the one on which the target Shovel has been created). + + GitHub issue: [rabbitmq/rabbitmq-shovel#68](https://github.com/rabbitmq/rabbitmq-shovel/issues/68) + + * More negative AMQP 1.0 endpoint connection responses are handled. + + Contributed by Renaud @bougueil Mariana. + + GitHub issue: [rabbitmq/rabbitmq-amqp1.0-client#48](https://github.com/rabbitmq/rabbitmq-amqp1.0-client/pull/48) + + * Messages forwarded from an AMQP 0-9-1 source to an AMQP 1.0 destination now propagates more + message properties. + + GitHub issue: [rabbitmq/rabbitmq-shovel#70](https://github.com/rabbitmq/rabbitmq-shovel/issues/70) + + * Pre-3.7 `delete-after` Shovel property is now considered as well as the new `src-delete-after` property. + + GitHub issue: [rabbitmq/rabbitmq-shovel#72](https://github.com/rabbitmq/rabbitmq-shovel/issues/72) + +#### Enhancements + + * Revisited [Shovel documentation guides](https://www.rabbitmq.com/shovel.html). + + * SNI is now enabled by default for TLS-enabled connections. + + Contributed by Carl Hörberg (CloudAMQP). + + GitHub issue: [rabbitmq/rabbitmq-erlang-client#132](https://github.com/rabbitmq/rabbitmq-erlang-client/pull/132) + + +### Management Plugin + +#### Enhancements + + * More frequent garbage collection by stats DB cache processes in environments where HTTP API queries produced + large data sets. + + GitHub issue: [rabbitmq/rabbitmq-management#788](https://github.com/rabbitmq/rabbitmq-management/pull/788) + + * `rabbitmqadmin` CLI switches now take precedence over config file values. This is more typical + for command line tools. + + GitHub issue: [rabbitmq/rabbitmq-management#804](https://github.com/rabbitmq/rabbitmq-management/issues/804) + + * `rabbitmqadmin` binding deletion now defaults to the same property key value as binding creation. + + Contributed by Ivan Kaloyanov. + + GitHub issue: [rabbitmq/rabbitmq-management#779](https://github.com/rabbitmq/rabbitmq-management/pull/779) + +#### Bug Fixes + + * TLS settings of this plugin now supersede those of RabbitMQ core listeners. In more practical terms, + it is now possible to use a separate set of certificate/private key pairs for management UI and + the HTTP API. + + GitHub issue: [rabbitmq/rabbitmq-management#800](https://github.com/rabbitmq/rabbitmq-management/issues/800) + + * Queue page failed to render with a `TypeError` when stats were disabled. + + GitHub issue: [rabbitmq/rabbitmq-management#787](https://github.com/rabbitmq/rabbitmq-management/issues/787) + + * `rabbitmqadmin import` mangled non-ASCII characters. + + GitHub issue: [rabbitmq/rabbitmq-management#785](https://github.com/rabbitmq/rabbitmq-management/issues/785) + + * `rabbitmqadmin`'s pretty JSON format was not compatible with Python 3. + + GitHub issue: [rabbitmq/rabbitmq-management#797](https://github.com/rabbitmq/rabbitmq-management/pull/797) + + +### etcd Peer Discovery Plugin + +This release effectively replaces the etcd-based peer discovery plugin with a new one which +[uses etcd v3 API](https://github.com/rabbitmq/rabbitmq-peer-discovery-etcd/issues/22) and a different API client. +etcd v2 API has been effectively deprecated and requires extra effort to enable with the latest etcd release, +so this was **treated as a medium severity bug** and ships in a patch release. + +There are several new features that come with this new client. Existing already formed clusters won't have to +change anything in the short term as [peer discovery only runs during cluster formation](https://www.rabbitmq.com/cluster-formation.html#peer-discovery-how-does-it-work). +All configuration keys of the original plugin are still accepted by the plugin, and most will have +the expected or semantically similar effect. + +When provisioning new clusters, etcd 3.4+ will now be required. + +#### Enhancements + + * The plugin now uses an etcd v3 API client and v3 gRPC-based API. This includes using a forward-compatible API version, + natively-provided endpoint for locking instead of reinventing one, and other improvements listed below. + It also means that **etcd 3.4+** is now required by the plugin. + + Unless specified otherwise, all other configuration settings of the original plugin are still supported. + + `rabbitmq-autocluster`-era environment variable-based configuration of the plugin has been removed. Use the config + file-based one instead. + + `cluster_formation.etcd.scheme` configuration key won't fail validation but will no longer have any effect. + `cluster_formation.etcd.key_prefix` will be used but only after the hardcoded `/rabbitmq/discovery` + and `/rabbitmq/locks` prefixes. Having a predictable key prefix is more important in this version of the etcd API. + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-etcd#22](https://github.com/rabbitmq/rabbitmq-peer-discovery-etcd/issues/22) + + * Multiple etcd endpoings now can be specified as connection candidates. Previously used endpoint configuration keys, + `cluster_formation.etcd.host` and `cluster_formation.etcd.port`, are still supported and added to the final list of + endpoints. + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-etcd#7](https://github.com/rabbitmq/rabbitmq-peer-discovery-etcd/issues/7) + + * Support for TLS-enabled connections to etcd. + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-etcd#24](https://github.com/rabbitmq/rabbitmq-peer-discovery-etcd/issues/24) + + * Support for [etcd authentication](https://etcd.io/docs/v3.4.0/op-guide/authentication/). + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-etcd#6](https://github.com/rabbitmq/rabbitmq-peer-discovery-etcd/issues/6) + + +### Consul Peer Discovery Plugin + +#### Bug Fixes + + * In case `CONSUL_PORT` is set to a blank string, the plugin will fall back to the default port value + instead of failing with an exception. Note that the use of environment variables over config file + keys is **highly discouraged** and will be removed in a future version. + + GitHub issue: [rabbitmq/rabbitmq-peer-discovery-consul#41](https://github.com/rabbitmq/rabbitmq-peer-discovery-consul/issues/41) + + +### LDAP Plugin + +#### Enhancements + + * Setting `` to `0` will force a new connection to be opened for every operation. This helps work around + obscure issues likely caused by per-connection caching in some LDAP implementations. + Users of this setting are expected to also use the [rabbitmq-auth-backend-cache](https://github.com/rabbitmq/rabbitmq-auth-backend-cache) plugin. + + GitHub issue: [rabbitmq/rabbitmq-auth-backend-ldap#120](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/pull/120) + + +### OAuth 2.0 Plugin + +#### Enhancements + + * When token key ID is missing in configuration, a warning will be logged to + make troubleshooting easier. + + GitHub issue: [rabbitmq/rabbitmq-auth-backend-oauth2#44](https://github.com/rabbitmq/rabbitmq-auth-backend-oauth2/issues/44) + + +### Trust Store Plugin + +#### Bug Fixes + + * Some debug messages were unintentionally logged as errors. + + Contributed by @mgrafl. + + GitHub issue: [rabbitmq/rabbitmq-trust-store#75](https://github.com/rabbitmq/rabbitmq-trust-store/issues/75) + + +## Dependency Upgrades + + * New dependency: [eetcd](https://github.com/zhongwencool/eetcd/) + * ra was upgraded [from v1.0.8 to v1.1.2](https://github.com/rabbitmq/ra/compare/v1.0.8...v1.1.2) + * `credentials_obfuscation` was upgraded [from v1.0.0 to v2.0.0](https://github.com/rabbitmq/credentials-obfuscation/compare/v1.0.0...v2.0.0) + * Prometheus client was upgraded [from 4.5.0 to 4.6.0](https://github.com/deadtrickster/prometheus.erl/compare/v4.5.0...v4.6.0) + + +## 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.4.tar.xz`. diff --git a/release-notes/3.8.5.md b/release-notes/3.8.5.md new file mode 100644 index 0000000000..fc4457dc8b --- /dev/null +++ b/release-notes/3.8.5.md @@ -0,0 +1,315 @@ +## 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 ` 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`. diff --git a/release-notes/3.8.6.md b/release-notes/3.8.6.md new file mode 100644 index 0000000000..97cea05d40 --- /dev/null +++ b/release-notes/3.8.6.md @@ -0,0 +1,306 @@ +## RabbitMQ 3.8.6 + +RabbitMQ `3.8.6` is a maintenance release. +It focuses on bug fixes and usability improvements. + +### RabbitMQ Adopts the Mozilla Public License 2.0 + +Starting with this release, core RabbitMQ server and all [tier 1 plugins](https://www.rabbitmq.com/plugins.html#plugin-tiers) +are [relicensed](https://github.com/rabbitmq/rabbitmq-server/issues/2372) under the [Mozilla Public License 2.0](https://www.mozilla.org/en-US/MPL/2.0/) +(previously used license: the Mozilla Public License 1.1). + +The permissiveness of the MPL 2.0 is largely the same as of the MPL 1.1. +See the [MPL 2.0 FAQ](https://www.mozilla.org/en-US/MPL/2.0/FAQ/) and +[MPL 2.0 Revision and Changes FAQ](https://www.mozilla.org/en-US/MPL/2.0/Revision-FAQ/) to learn more. + +### Erlang 23 Compatibility + +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 removed HiPE precompilation support. HiPE has been deprecated and +mostly unmaintained since Erlang 22, and will be replaced with a JIT [in Erlang 24](http://erlang.org/pipermail/erlang-questions/2020-June/099645.html) +in 2021. + +``` shell +rabbitmqctl hipe_compile +``` + +and + +``` ini +hipe_compile = true +``` + +are both retained for backwards compatibility but they won't have any effect. + + +### 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 + +#### License Change + +RabbitMQ has been [relicensed](https://github.com/rabbitmq/rabbitmq-server/issues/2372) under the [Mozilla Public License 2.0](https://www.mozilla.org/en-US/MPL/2.0/) +(previously used license: the Mozilla Public License 1.1). + +The permissiveness of the MPL 2.0 is largely the same as of the MPL 1.1. +See the [MPL 2.0 FAQ](https://www.mozilla.org/en-US/MPL/2.0/FAQ/) and +[MPL 2.0 Revision and Changes FAQ](https://www.mozilla.org/en-US/MPL/2.0/Revision-FAQ/) to learn more. + +#### Deprecations + + * Removed HiPE pre-compilation support. + + GitHub issue: [rabbitmq/rabbitmq-server#2392](https://github.com/rabbitmq/rabbitmq-server/pull/2392) + +#### Bug Fixes + + * Definition import on node boot (via the **built-in `load_definitions` configuration setting**) is now performed + after plugins are enabled. + + This resolves a long-standing chicken-and-egg dependency problem that prevented definitions + that depend on plugins being functional from being successfully imported during node boot. + + Note that definition import via the management plugin (`management.load_definitions`) is still + performed during management plugin activation time and therefore **can not offer any guarantees** + as some plugins may be enabled after the management one. + + Some affected features include + + * [federation upstreams](https://www.rabbitmq.com/federation.html#getting-started) + * [dynamic shovels](https://www.rabbitmq.com/shovel-dynamic.html) + * exchanges of types provided by plugins such as [rabbitmq-consistent-hash-exchange](https://github.com/rabbitmq/rabbitmq-consistent-hash-exchange) + + GitHub issue: [rabbitmq/rabbitmq-server#2384](https://github.com/rabbitmq/rabbitmq-server/issues/2384) + + * Similarly, client connection listeners (both TCP and TLS-enabled) are now started after + plugin activation. This makes certain configurations that use the trust store plugin + behave as expected. + + GitHub issue: [rabbitmq/rabbitmq-server#2405](https://github.com/rabbitmq/rabbitmq-server/issues/2405) + + * Environment variables prefixed with `RABBITMQ_` were ignored when used in the [`rabbitmq-env.conf` file](), + while their prefixless counterparts worked as expected. + + GitHub issue: [rabbitmq/rabbitmq-common#401](https://github.com/rabbitmq/rabbitmq-common/issues/401) + +#### Enhancements + + * `rabbitmq.conf` config parser now accepts lines that only consist of whitespace. + + GitHub issue: [rabbitmq/rabbitmq-server#2393](https://github.com/rabbitmq/rabbitmq-server/pull/2393) + + +### CLI Tools + +#### Deprecations + + * `rabbitmqctl hipe_compile` is now a no-op. HiPE support has been deprecated in Erlang 22 + [will be removed in Erlang 24](http://erlang.org/pipermail/erlang-questions/2020-June/099645.html). + + GitHub issue: [rabbitmq/rabbitmq-cli#433](https://github.com/rabbitmq/rabbitmq-cli/pull/433) + + * The use of the `` environment variable to configure the [shared secret](https://www.rabbitmq.com/cli.html#erlang-cookie) is now deprecated. + Use the [local file](https://www.rabbitmq.com/cli.html#cookie-file-locations) option instead or, if the value absolutely must be provided on the command line, + the `--erlang-cookie [value]` switch. + + GitHub issue: [rabbitmq/rabbitmq-cli#443](https://github.com/rabbitmq/rabbitmq-cli/issues/443) + +#### Bug Fixes + + * `rabbitmqctl export_definitions` incorrectly serialised runtime parameter values. + + GitHub issue: [rabbitmq/rabbitmq-cli#435](https://github.com/rabbitmq/rabbitmq-cli/issues/435) + + * `CTL_ERL_ARGS` environment variable was unintentionally ignored starting with version `3.8.4`. + + GitHub issue: [rabbitmq/rabbitmq-server#2394](https://github.com/rabbitmq/rabbitmq-server/issues/2394) + + * `[command] --help` and `help [command]` output had minor unintentional inconsistencies. + + GitHub issue: [rabbitmq/rabbitmq-cli#437](https://github.com/rabbitmq/rabbitmq-cli/pull/437) + +#### Enhancements + + * `rabbitmq-queues check_if_node_is_quorum_critical` and `rabbitmq-queues check_if_node_is_mirror_sync_critical` checks + have been adjusted. They now special case single node clusters as the check does not make much sense + in those environments. + + `rabbitmq-queues check_if_node_is_mirror_sync_critical` now also excludes exclusive queues from + consideration as they, even if matched by a policy that enables classic queue mirroring, + would not actually be mirrored. + + GitHub issue: [rabbitmq/rabbitmq-cli#432](https://github.com/rabbitmq/rabbitmq-cli/issues/432) + + * `rabbitmq-diagnostics status` now includes the total amount of memory used by the node in its + regular output. It was previously only available when `--formatter=json` switch was used. + + GitHub issue: [rabbitmq/rabbitmq-cli#449](https://github.com/rabbitmq/rabbitmq-cli/pull/449) + + * `rabbitmq-diagnostics erlang_cookie_sources` is a new command that helps with troubleshooting + CLI tool authentication to nodes by listing relevant environment information about the + [shared secret](https://www.rabbitmq.com/cli.html#erlang-cookie). The actual secret + **is not displayed** for obvious security reasons. + + GitHub issue: [rabbitmq/rabbitmq-cli#446](https://github.com/rabbitmq/rabbitmq-cli/pull/446) + +* `rabbitmqct eval_file` is a new command that evaluates Erlang code expressions from a local file + on the target node: + + ``` shell + rabbitmqctl eval_file /path/to/code_snippet.escript + ``` + + GitHub issue: [rabbitmq/rabbitmq-cli#438](https://github.com/rabbitmq/rabbitmq-cli/issues/438) + + * `rabbitmqct eval` now accepts code snippets from standard input: + + ``` shell + rabbitmqctl eval <=1.5 and <1.5 +- streamlined packaging process + + +Upgrading +========= + +If you are upgrading from an earlier release of RabbitMQ, note that +RabbitMQ's internal database schema has changed, and hence the +MNESIA_BASE directory should be cleared before starting the new +server. This wipes out any configuration information and persisted +messages. + +The upgrade process will be much improved in future releases, to the +point where a running RabbitMQ cluster can be upgraded without service +interruption. Meanwhile, if you need assistance in migration please +contact the RabbitMQ team at rabbitmq-sales@pivotal.io. + + +Credits +======= + +We would like to thank the following individuals for submitting bug +reports and feedback that we incorporated into this release: + +Antonio Cordova +Carl Bourne +David Pollack +David MacIver +Francesco Cesarini +Gerald Loeffler +Hunter Morris +Jason Pellerin +Jeff Rogers +Martin Logan +Matt Darling +Michael Newton +Neil Bartlett +Norbert Klamann +Robert Greig +Wannes Sels +Warren Pfeffer diff --git a/release-notes/README-1.1.1.txt b/release-notes/README-1.1.1.txt new file mode 100644 index 0000000000..4728c1b734 --- /dev/null +++ b/release-notes/README-1.1.1.txt @@ -0,0 +1,61 @@ +Release: RabbitMQ 1.1.1 +Status : beta + +Release Highlights +================== + +RabbitMQ server +--------------- +- improved interoperability with Qpid M1 clients +- fixed a bug in persistent message re-delivery that caused RabbitMQ + to fail when attempting to re-deliver messages after a restart +- fixed a performance problem that caused throughput to drop + significantly for larger message sizes +- fixed a bug in amqqueue:stat_all/0 that caused it to fail +- refactored some internals in order to support additional transports + more easily + +Java client +----------- +- improved interoperability with Qpid M1 Java server +- changed threading model to stop clients from exiting when there are + open AMQP connections +- extended API to allow setting of frameMax and channelMax + +Packaging +--------- +- included main test suite runner in source distribution +- dropped version status (i.e. alpha, beta, etc) from file and dir + names +- renamed server erlang package dir to "rabbitmq_server-", to + comply with Erlang/OTP conventions + + +Upgrading +========= + +Upgrading to this release from RabbitMQ 1.1.0 requires no special +steps at the server end. There have been some minor changes to the +Java client API. Most client code is unlikely to be affected by these, +and is easily changed if it is. + +If you are upgrading from an earlier release of RabbitMQ, note that +RabbitMQ's internal database schema has changed, and hence the +MNESIA_BASE directory should be cleared before starting the new +server. This wipes out any configuration information and persisted +messages. + + +Credits +======= + +We would like to thank the following individuals for submitting bug +reports and feedback that we incorporated into this release: + +Ben Hood +James Wolstenholme +Jeff Rogers +Maximillian Dornseif +Michael Arnoldus +Steve Jenson +Tanmay Goel diff --git a/release-notes/README-1.2.0.txt b/release-notes/README-1.2.0.txt new file mode 100644 index 0000000000..fea8e5b203 --- /dev/null +++ b/release-notes/README-1.2.0.txt @@ -0,0 +1,63 @@ +Release: RabbitMQ 1.2.0 +Status : beta + +Release Highlights +================== + +RabbitMQ server +--------------- +- introduced internal flow control to prevent performance drops when + running a server near capacity +- simplified cluster configuration and added "automatic" clustering +- made rabbitmqctl command line syntax less confusing +- fixed a couple of race conditions that could result in a client + receiving unexpected sequences of command replies and messages +- refactored internals to make it easier to construct handlers for + transports other than raw TCP/IP + +Java client +----------- +- fixed a race condition between invocation of a Consumer's + handle{Consume,Cancel}Ok and handleDelivery methods; the former are + now called inside the connection's thread, just like the latter + +Packaging +--------- +- simplified rabbitmqctl invocation under Debian +- moved default location of the log and mnesia dirs under Windows to + sub directories of the RABBITMQ_BASE directory +- changed startup scripts to allow the rabbitmq_server package to + reside outside the OTP library directory + + +Upgrading +========= + +Under Windows the default location of the mnesia directory has changed +from %RABBITMQ_BASE% to %RABBITMQ_BASE%\db. If you have an existing +installation that uses the old default location and you would like to +retain the server state (including persisted messages) then just move +the *.DAT, *.DCD, *.DCL and *.LOG files from that directory to the new +location. + +There have been some minor changes to the Java client API. Most client +code is unlikely to be affected by these, and is easily changed if it +is. + +If you are upgrading from RabbitMQ-1.0.0 note that RabbitMQ's internal +database schema has changed, and hence the MNESIA_BASE directory +should be cleared before starting the new server. This wipes out any +configuration information and persisted messages. + + +Credits +======= + +We would like to thank the following individuals for submitting bug +reports and feedback that we incorporated into this release: + +Ben Hood +Emmanuel Okyere +Holger Hoffsttte +Jodi Moran +Robert Greig diff --git a/release-notes/README-1.3.0.txt b/release-notes/README-1.3.0.txt new file mode 100644 index 0000000000..18418a6fed --- /dev/null +++ b/release-notes/README-1.3.0.txt @@ -0,0 +1,96 @@ +Release: RabbitMQ 1.3.0 +Status : beta + +Release Highlights +================== + +server +------ +bug fixes +- eliminate a number of race conditions that could result in message + loss and other incorrect or unusual behaviour +- eliminate duplication of messages when bindings overlap +- prevent unbounded memory usage when topic exchanges encounter + messages with highly variable routing keys +- redesigned persister so it works properly in a clustered broker +- fix a couple of bugs that could cause persisted messages to stick + around forever, resulting in an unbounded memory usage +- prevent performance drop under high load +- do not requeue messages on tx.rollback +- fix bug in heartbeat logic that could result in a connection + remaining alive even though the client had stopped sending any data +- correct handling of queue.bind with empty routing key and queue name +- complain about acks with an unknown delivery tag +- prevent sending of zero-length content body frames + +enhancements +- improve error reporting for various framing-related errors +- improve rabbitmq-multi robustness and error reporting +- identify log locations in startup message +- keep log file contents on server restart +- support QPid's extended field types +- improve performance, particularly for persistent messaging +- re-architect internals to eliminate some code duplication, reduce + component dependencies, and construct cleaner internal APIs + +Java client +----------- +bug fixes +- eliminate edge case that could result in stuck AMQConnection.close +- use linear timers to prevent heartbeat timeouts on system clock + adjustment, which happens in some virtualisation platforms +- eliminate a race condition that could result in an exception when + establishing a connection + +enhancements +- add SSL support +- improve error reporting for various framing-related errors +- add new FileProducer/Consumer example +- make MulticastMain example more versatile, with improved command + line options +- improve performance + +packaging +--------- +bug fixes +- fix broken 'rabbitmqctl -n' on Debian +- fix broken removal of the rabbitmq-server Debian package +- fix broken Erlang library installation on 64bit RPM-based systems +- fix failure of server shutdown when started at boot time on Debian +- fix various problems with RPMs + +improvements +- better compliance with debian packaging policies + + +Upgrading +========= + +Care must be taken when upgrading a server that contains persisted +messages. The persister log format has changed between RabbitMQ-1.2.0 +and this release. When RabbitMQ-1.3.0 first starts following an +upgrade it will move the existing persister log to a backup file - +check the log files for details. Thus the previously persisted +messages are not lost, but neither are they replayed. Therefore it is +recommended that the upgrade is performed only when there are no +important persistent messages remaining. + + +Credits +======= + +We would like to thank the following individuals for submitting bug +reports and feedback that we incorporated into this release: + +Andrew Munn +Barry Pederson +Ben Hood +David Pollak +Emmanuel Okyere +Joe Lee +John Leuner +Matt Darling +Michael Arnoldus +Nick Levine +Tom Samplonius +Willem van Heemstra diff --git a/release-notes/README-1.4.0.txt b/release-notes/README-1.4.0.txt new file mode 100644 index 0000000000..0127bfa467 --- /dev/null +++ b/release-notes/README-1.4.0.txt @@ -0,0 +1,108 @@ +Release: RabbitMQ 1.4.0 +Status : beta + +Release Highlights +================== + +server +------ +bug fixes +- maintain message order on persister replay +- do not throw away work on connection.close +- eliminate possibility of generating duplicate message ids when + broker is restarted +- deal with race conditions during queue creation that could result in + a queue being reported as 'not_found' when it did in fact exist, and + the converse, or multiple queue processes being created per queue. +- suppress a few errors that would be logged in various connection + shutdown scenarios but turn out to be harmless +- ensure preservation of content properties during persistence - this + was working fine for the AMQP transport, but not the STOMP gateway +- fix various other small bugs + +enhancements +- improve performance of queue creation +- add explanatory text to errors returned to the client and reported + in the logs +- rationalise severities of logged errors, and log information + allowing the correlation of log events with connections +- return 'connection_forced' error to clients on broker shutdown +- supervise queue processes +- improve/refactor internal APIs to assist in creation of extensions +- add type signature for all exported functions, and type check code + with dialyzer +- generate AMQP codec from JSON representation of protocol spec + +Java client +----------- +bug fixes +- completely revamp connection and channel closure handling, resolving + a number race conditions and other bugs in the process and resulting + in a cleaner, more comprehensive and consistent API +- correct a few minor errors in the javadocs + +enhancements +- generate AMQP codec from JSON representation of protocol spec + +building & packaging +-------------------- +bug fixes +- only source /etc/default/rabbitmq in init.d scripts, thus stopping + it from overriding env var settings +- pay attention to NODE* env vars in rabbitmq-multi script, thus + allowing users to easily start multiple nodes with non-default + settings for the node name, ip and port. +- make rpm update work + +enhancements +- on Windows, place the server logs and db in a dir under the per-user + %APPDATA% directory +- display names of nodes started by rabbitmq-multi +- migrate from cvs to hg, and split into separate repositories for + server, java client, etc. +- clean up and refactor Makefiles +- avoid hanging for 30s when an invalid database schema is detected + + +Upgrading +========= + +The database schema has changed in this version of RabbitMQ. If you +attempt to start RabbitMQ-1.4.0 over top of a previous installation, +it will fail, citing "schema_integrity_check_failed". To correct this, +delete your mnesia directory (on most platforms, +/var/lib/rabbitmq/mnesia) and restart the server. Note that this will +destroy all your durable exchanges and queues, and all your persisted +messages! + +Care must be taken when upgrading a server that contains persisted +messages. The persister log format has changed between RabbitMQ-1.3.0 +and this release. When RabbitMQ-1.4.0 first starts following an +upgrade it will move the existing persister log to a backup file - +check the log files for details. Thus the previously persisted +messages are not lost, but neither are they replayed. Therefore it is +recommended that the upgrade is performed only when there are no +important persistent messages remaining. + +Due to a bug in the rpm packaging, which has now been fixed, users +with an existing rpm-based installation of the RabbitMQ server should +first remove the rabbitmq-server package ('rpm -e rabbitmq-server') +before proceeding with the normal upgrade. + + +Credits +======= + +We would like to thank the following individuals for submitting bug +reports and feedback that we incorporated into this release: + +Andrew Statsenko +David Corcoran +Dmitriy Samovskiy +Holger Hoffstaette +John Leuner +Kyle Salasko +Lars Bachmann +Michael Arnoldus +Petr Sturc +Sean Treadway diff --git a/release-notes/README-1.5.0.txt b/release-notes/README-1.5.0.txt new file mode 100644 index 0000000000..22d51be400 --- /dev/null +++ b/release-notes/README-1.5.0.txt @@ -0,0 +1,143 @@ +Release: RabbitMQ 1.5.0 +Status : beta + +Release Highlights +================== + +server +------ +bug fixes +- support running on top of the latest Erlang/OTP release (R12B-5) +- maintain effect visibility guarantees in cross-node routing +- reduce likelihood of timeouts when channels interact with a large + number of queues +- graceful handling of some corner cases in abrupt client disconnect + +enhancements +- remove tickets and realms +- improve scalability of queue and binding creation and deletion +- add 'queue.unbind' command to protocol +- disable Nagle for more consistent latency +- throttle producers with 'channel.flow' when running low on memory + Note that this feature is disabled by default; please see + https://www.rabbitmq.com/admin-guide.html#memsup for details. +- remove a few spurious errors in the logs +- show the actual listening IP & port in logs +- improve rabbitmqctl: + - add a few useful info commands + - add a 'reopen_logs' command to assist in log management + - add a '-q' flag to suppress informational messages and thus + facilitate post-processing of the output + - write errors to stderr instead of stdout + +Java client +----------- +bug fixes +- eliminate several race condition in connection and channel closure + that could result in deadlock +- always respond to a server's 'connection.close' and 'channel.close' +- prevent interference between interal locking on channels and + application-level locking + +enhancements +- remove tickets and realms +- support 'queue.unbind' +- disable Nagle for more consistent latency +- react to server-issued 'channel.flow' by (un)blocking producers +- add channel.abort method to unconditionally and idempotently close a + channel +- complete the set of channel and connection close and abort methods + +.net client +----------- +bug fixes +- eliminate "Cannot access a disposed object" exception in connection + closure and disposal +- correct heartbeat logic to prevent spurious timeouts when not idling + +enhancements +- remove tickets and realms +- support 'queue.unbind' +- disable Nagle for more consistent latency +- react to server-issued 'channel.flow' by (un)blocking producers +- add IModel.abort method to unconditionally and idempotently close a + channel +- complete the set of channel and connection close and abort methods + +building & packaging +-------------------- +bug fixes +- correct locations of libraries et al on 64bit rpm systems + +enhancements +- detect upgrade from pre-1.5.0 and warn/ask user (under debian & rpm) +- comply with debian and rpm packaging policies and guidelines +- prevent accidental executing of scripts as non-root user under + debian & rpm +- read /etc/default/rabbitmq in scripts on Unix-y systems, with env + vars taking precedence over vars set in that file and the defaults + used by the scripts +- prefix env vars with 'RABBITMQ_' +- allow script execution from anywhere (not just the scripts' dir) +- add script & instructions to start RabbitMQ as a Windows service +- add 'status' command to init.d script under debian & rpm +- automatic log rotation under debian & rpm +- use simplejson.py instead of json.py in code generation, thus + allowing use of Python 2.6 + + +Upgrading +========= + +The database schema has changed between RabbitMQ-1.4.0 and this +release. When the RabbitMQ server detects the presence of an old +database, it moves it to a backup location, creates a fresh, empty +database, and logs a warning. + +If your RabbitMQ installation contains important data, such as user +accounts, durable exchanges and queues, or persistent messages, then +we recommend you contact rabbitmq-sales@pivotal.io for assistance with the +upgrade. + + +Credits +======= + +We would like to thank the following individuals for submitting bug +reports and feedback that we incorporated into this release: + +Alister Morton +Aman Gupta +Andrius Norkaitis +Barry Pedersen +Benjamin Black +Benjamin Polidore +Brian Sullivan +David Corcoran +Dmitriy Samovskiy +Edwin Fine +Eran Sandler +Esteve Fernandez +Ezra Zygmuntowicz +Ferret +Gavin Bong +Geoffrey Anderson +Holger Hoffst�tte +Jacek Korycki +John Leuner +Jonatan Kallus +Jonathan McGee +Kyle Sampson +Leo Martins +Maarten Engelen +Nathan Woodhull +Nigel Verdon +Paul Jones +Pete Kay +Peter Kieltyka +Sarah Jelinek +Sean Treadway +Steve Jenson +Terry Jones +Vadim Zaliva +Valentino Volonghi diff --git a/release-notes/README-1.5.1.txt b/release-notes/README-1.5.1.txt new file mode 100644 index 0000000000..006eef4d98 --- /dev/null +++ b/release-notes/README-1.5.1.txt @@ -0,0 +1,81 @@ +Release: RabbitMQ 1.5.1 +Status : final + +Release Highlights +================== + +server +------ +bug fixes +- handle race condition between routing and queue deletion that could + cause errors on message publication +- the default settings for RABBITMQ_SERVER_ERL_ARGS were not taken + into account, resulting in decreased network performance +- add workaround for the Erlang/OTP bug OTP-7025, which caused errors + in topic routing in Erlang/OTP versions older than R12B-1 +- display the nodes of queue and connection processes in rabbitmqctl's + list_{queues,connections} command. Previously we displayed pids, + which was broken and not particularly useful. + +enhancements +- enable 'channel.flow'-based producer throttling by default on Linux +- include stack traces in error reports in rabbit.log +- speed up rabbitmqctl and rabbitmq-multi + +Java client +----------- +no significant changes + +.net client +----------- +bug fixes +- handle race condition in client-initiated connection closure that + could result in an OperationInterruptedException + +enhancements +- re-enable heartbeating by default + +building & packaging +-------------------- +bug fixes +- fix bug that caused removal of RPMs to be incomplete +- produce separate RPMs for SuSE-like systems to resolve various + incompatibilities +- rename BUILD to README in order to prevent build failures on systems + with case-insensitive file naming (such as OS X) + +enhancements +- minor tweaks in Debian and RPM packaging for better compliance with + packaging guidelines +- better handling of errors encountered during code generation + + +Upgrading +========= + +No special precautions are necessary when upgrading from +RabbitMQ-1.5.0. + +When upgrading from earlier releases, note that the database schema +has changed in RabbitMQ-1.5.x. When the RabbitMQ server detects the +presence of an old database, it moves it to a backup location, creates +a fresh, empty database, and logs a warning. + +If your RabbitMQ installation contains important data, such as user +accounts, durable exchanges and queues, or persistent messages, then +we recommend you contact rabbitmq-sales@pivotal.io for assistance with the +upgrade. + + +Credits +======= + +We would like to thank the following individuals for submitting bug +reports and feedback that we incorporated into this release: + +Aymerick Jhanne +Chuck Remes +Ezra Zygmuntowicz +Glenn Robuck +Mathias Gug +Michael Barker diff --git a/release-notes/README-1.5.2.txt b/release-notes/README-1.5.2.txt new file mode 100644 index 0000000000..22acf3b74d --- /dev/null +++ b/release-notes/README-1.5.2.txt @@ -0,0 +1,79 @@ +Release: RabbitMQ 1.5.2 +Status : final + +Release Highlights +================== + +server +------ +bug fixes +- prevent the shell from attempting to perform path expansion on vars + in the startup scripts, which was resulting in errors when starting + rabbit on some systems. +- make guid generation independent of persister, thus preventing + timeouts when the persister is busy +- get scripts to source configuration from /etc/rabbitmq/rabbitmq.conf + rather than /etc/default/rabbitmq, since the latter is reserved for + init.d scripts. + +Java client +----------- +bug fixes +- eliminate race condition in server-initiated channel closure that + could lead to deadlock + +.net client +----------- +bug fixes +- eliminate race condition in server-initiated channel closure that + could lead to deadlock + +building & packaging +-------------------- +enhancements +- minor tweaks in Debian and RPM packaging for better compliance with + packaging guidelines +- place wrapper scripts for rabbitmq-server and rabbitmq-multi + alongside the rabbitmqctl wrapper in /usr/sbin +- do not start the server by default on RPM-based systems, in order to + comply with common practice and guidelines +- suppress stdout in logrotate scripts, to keep cron et al happy + +Upgrading +========= + +The place from which the server startup and control scripts source +configuration information on Unix systems has changed from +/etc/default/rabbitmq to /etc/rabbitmq/rabbitmq.conf. If you have been +using the former, just move the file to the latter location. The +/etc/default/rabbitmq file (/etc/sysconfig/rabbitmq on RPM-based +systems) is still being sourced by the init.d script, but it should +only contain settings directly affecting the behaviour of the init.d +script, such as NODE_COUNT. + +When upgrading from releases earlier than RabbitMQ-1.5.x, note that +the database schema has changed. When the RabbitMQ server detects the +presence of an old database, it moves it to a backup location, creates +a fresh, empty database, and logs a warning. + +If your RabbitMQ installation contains important data, such as user +accounts, durable exchanges and queues, or persistent messages, then +we recommend you contact rabbitmq-sales@pivotal.io for assistance with the +upgrade. + + +Credits +======= + +We would like to thank the following individuals for submitting bug +reports and feedback that we incorporated into this release: + +Billy Chasen +Charl Matthee +Christopher Hoover +Darien Kindlund +Dmitriy Samovskiy +Jason Williams +Mathias Gug +Peter Lemenkov +Phil Stubbings diff --git a/release-notes/README-1.5.3.txt b/release-notes/README-1.5.3.txt new file mode 100644 index 0000000000..996cd057f3 --- /dev/null +++ b/release-notes/README-1.5.3.txt @@ -0,0 +1,79 @@ +Release: RabbitMQ 1.5.3 +Status : final + +Release Highlights +================== + +server +------ +bug fixes +- prevent the shell from attempting to perform path expansion on vars + in the startup scripts, which was resulting in errors when starting + rabbit on some systems. +- make guid generation independent of persister, thus preventing + timeouts when the persister is busy +- get scripts to source configuration from /etc/rabbitmq/rabbitmq.conf + rather than /etc/default/rabbitmq, since the latter is reserved for + init.d scripts. + +Java client +----------- +bug fixes +- eliminate race condition in server-initiated channel closure that + could lead to deadlock + +.net client +----------- +bug fixes +- eliminate race condition in server-initiated channel closure that + could lead to deadlock + +building & packaging +-------------------- +enhancements +- minor tweaks in Debian and RPM packaging for better compliance with + packaging guidelines +- place wrapper scripts for rabbitmq-server and rabbitmq-multi + alongside the rabbitmqctl wrapper in /usr/sbin +- do not start the server by default on RPM-based systems, in order to + comply with common practice and guidelines +- suppress stdout in logrotate scripts, to keep cron et al happy + +Upgrading +========= + +The place from which the server startup and control scripts source +configuration information on Unix systems has changed from +/etc/default/rabbitmq to /etc/rabbitmq/rabbitmq.conf. If you have been +using the former, just move the file to the latter location. The +/etc/default/rabbitmq file (/etc/sysconfig/rabbitmq on RPM-based +systems) is still being sourced by the init.d script, but it should +only contain settings directly affecting the behaviour of the init.d +script, such as NODE_COUNT. + +When upgrading from releases earlier than RabbitMQ-1.5.x, note that +the database schema has changed. When the RabbitMQ server detects the +presence of an old database, it moves it to a backup location, creates +a fresh, empty database, and logs a warning. + +If your RabbitMQ installation contains important data, such as user +accounts, durable exchanges and queues, or persistent messages, then +we recommend you contact rabbitmq-sales@pivotal.io for assistance with the +upgrade. + + +Credits +======= + +We would like to thank the following individuals for submitting bug +reports and feedback that we incorporated into this release: + +Billy Chasen +Charl Matthee +Christopher Hoover +Darien Kindlund +Dmitriy Samovskiy +Jason Williams +Mathias Gug +Peter Lemenkov +Phil Stubbings diff --git a/release-notes/README-1.5.4.txt b/release-notes/README-1.5.4.txt new file mode 100644 index 0000000000..47d52cccae --- /dev/null +++ b/release-notes/README-1.5.4.txt @@ -0,0 +1,81 @@ +Release: RabbitMQ 1.5.4 +Status : final + +Release Highlights +================== + +server +------ +bug fixes +- starting a RabbitMQ instance that contains a large number + (thousands) durable exchanges, queues or bindings now takes just a + few seconds instead of several minutes. +- on Windows, rabbitmq-multi.bat can now start RabbitMQ even when the + path to the startup script contains spaces, whereas previously that + would fail. +- on Windows, the rabbitmqctl.bat and rabbitmq-multi.bat scripts now + report errors correctly instead of swallowing them. + +enhancements +- make the default settings of the various env vars which can be set + in rabbitmq.conf visible to that script, thus permitting more + advanced manipulation of the settings than was previously possible. +- permit configuration of rabbitmqctl's Erlang start parameters by + sourcing rabbitmq.conf from the script and adding some env vars. +- on Windows, rabbitmq-server.bat and rabbitmq-multi.bat can now be + configured with the RABBITMQ_{SERVER,MULTI}_{ERL,START}_ARGS env + vars. + +Java client +----------- +no changes + +.net client +----------- +no changes + +building & packaging +-------------------- +bug fixes +- correct paths in 64-bit RPMs; the paths got broken in the 1.5.3 + release, preventing the server from starting +- in the Debian and RPM packages, set the current working dir of the + various scripts to /var/lib/rabbitmq instead of /. The latter was + preventing crash dumps from being written. +- fix BSD incompatibility in 'make srcdist' + +enhancements +- minor tweaks in Debian and RPM packaging for better compliance with + packaging guidelines + + +Upgrading +========= + +When upgrading from releases earlier than 1.5.3, note that the place +from which the server startup and control scripts source configuration +information on Unix systems has changed from /etc/default/rabbitmq to +/etc/rabbitmq/rabbitmq.conf. If you have been using the former, just +move the file to the latter location. The /etc/default/rabbitmq file +(/etc/sysconfig/rabbitmq on RPM-based systems) is still being sourced +by the init.d script, but it should only contain settings directly +affecting the behaviour of the init.d script, such as NODE_COUNT. + +When upgrading from releases earlier than 1.5.x, note that the +database schema has changed. When the RabbitMQ server detects the +presence of an old database, it moves it to a backup location, creates +a fresh, empty database, and logs a warning. If your RabbitMQ +installation contains important data, such as user accounts, durable +exchanges and queues, or persistent messages, then we recommend you +contact rabbitmq-sales@pivotal.io for assistance with the upgrade. + + +Credits +======= + +We would like to thank the following individuals for submitting bug +reports and feedback that we incorporated into this release: + +Alex Clemesha +Aymerick Jehanne +John Leuner diff --git a/release-notes/README-1.5.5.txt b/release-notes/README-1.5.5.txt new file mode 100644 index 0000000000..0e2fe4ed67 --- /dev/null +++ b/release-notes/README-1.5.5.txt @@ -0,0 +1,91 @@ +Release: RabbitMQ 1.5.5 +Status : final + +Release Highlights +================== + +server +------ +bug fixes +- in a clustered setup, bindings to durable queues are now correctly + recovered when a queue's node restarts. +- node failure in a clustered setup could trigger premature exchange + auto-deletion +- the cluster config file name was inadvertently changed from + rabbitmq_cluster.config to cluster.config in release 1.5.4. It has + now been changed back. +- when attempting to delete a non-existing exchange, return 404 (not + found), as defined by the spec, rather than 541 (internal error) +- correct some type specs to keep dialyzer happy + +enhancements +- display the node name and database dir on startup + +Java client +----------- +bug fixes +- correct semantics of connection.tune's channel-max parameter - it + determines the range of usable channel numbers - from 1 to + channel-max, inclusive. Previously the highest channel number we + allowed was channel-max - 1. +- correct misleading javadoc for GetResponse.getMessageCount(). + +enhancements +- improve error reporting + +.net client +----------- +bug fixes +- correct semantics of connection.tune's channel-max parameter - it + determines the range of usable channel numbers - from 1 to + channel-max, inclusive. Previously the highest channel number we + allowed was channel-max - 1. + +building & packaging +-------------------- +bug fixes +- work around absence of escript in path on some Fedora/EPEL + installations +- make build work with python 2.4, which Fedore/EPEL 5 is on +- work around possible bug in Debian packaging of Erlang OTP R13, + which misses a dependency on os-mon in erlang-nox + +enhancements +- minor tweaks in RPM packaging for better compliance with packaging + guidelines + + +Upgrading +========= + +When upgrading from releases earlier than 1.5.3, note that the place +from which the server startup and control scripts source configuration +information on Unix systems has changed from /etc/default/rabbitmq to +/etc/rabbitmq/rabbitmq.conf. If you have been using the former, just +move the file to the latter location. The /etc/default/rabbitmq file +(/etc/sysconfig/rabbitmq on RPM-based systems) is still being sourced +by the init.d script, but it should only contain settings directly +affecting the behaviour of the init.d script, such as NODE_COUNT. + +When upgrading from releases earlier than 1.5.x, note that the +database schema has changed. When the RabbitMQ server detects the +presence of an old database, it moves it to a backup location, creates +a fresh, empty database, and logs a warning. If your RabbitMQ +installation contains important data, such as user accounts, durable +exchanges and queues, or persistent messages, then we recommend you +contact rabbitmq-sales@pivotal.io for assistance with the upgrade. + + +Credits +======= + +We would like to thank the following individuals for submitting bug +reports and feedback that we incorporated into this release: + +Aaron Cline +Bradford Cross +John Leuner +Levi Greenspan +Peter Lemenkov +Rob Golkosky +Steve Marah diff --git a/release-notes/README-1.6.0.txt b/release-notes/README-1.6.0.txt new file mode 100644 index 0000000000..7f224630c5 --- /dev/null +++ b/release-notes/README-1.6.0.txt @@ -0,0 +1,86 @@ +Release: RabbitMQ 1.6.0 +Status : final + +Release Highlights +================== + +server +------ +bug fixes +- eliminate potential memory leak of transactionally published + messages in certain system errors +- prevent possible starvation of some consumers on channels that get + temporarily blocked due to backlogs +- do not send more messages to backlogged channels when accepting a + new consumer +- prevent possible message reordering in the event of temporary node + failure in a clustered setup +- return 'not_found' error in all cases of 'queue.unbind' attempting + to remove a non-existing binding + +enhancements +- implement AMQP's basic.qos' channel prefetch count limiting +- implement AMQP 0-9/0-9-1's headers exchange type +- introduce a permissions system which allows fine-grained access + control on resources involved in AMQP operations. See + https://www.rabbitmq.com/admin-guide.html#access-control for details +- introduce 'alternate exchanges' to handle messages which are + otherwise unroutable. See + https://www.rabbitmq.com/extensions.html#alternate-exchange for + details +- improve performance and stability under high load +- reduce memory consumption +- prefix all mnesia tables with "rabbit_" in order to prevent name + clashes with other Erlang applications, in particular ejabberd +- handle rabbitmqctl commands with higher priority, thus ensuring that + answers are returned promptly even under high load +- reduce severity of "connection closed abruptly" log event from + 'error' to 'warning' + +Java client +----------- +enhancements +- support extended list of table field types + +.net client +----------- +bug fixes +- make unit tests work under .NET 2.0 + +enhancements +- rename public fields to avoid name clashes with properties that trip + up tools like Powershell +- suppress inclusion of spec comments in generated code due to + licensing issues +- generate strong named (i.e. signed) assemblies. See the bottom of + https://www.rabbitmq.com/dotnet.html for details + +building & packaging +-------------------- +enhancements +- introduce wrapper scripts in macports, as in the Debian and RPM + packaging, which ensure the real scripts are run as the right + ('rabbitmq') user +- remove build-time dependency on mnesia +- trim Debian Erlang package dependencies +- auto-generate the module list in rabbit.app, thus ensuring it is + always up to date + +Upgrading +========= + +When upgrading from releases earlier than 1.5.3, note that the place +from which the server startup and control scripts source configuration +information on Unix systems has changed from /etc/default/rabbitmq to +/etc/rabbitmq/rabbitmq.conf. If you have been using the former, just +move the file to the latter location. The /etc/default/rabbitmq file +(/etc/sysconfig/rabbitmq on RPM-based systems) is still being sourced +by the init.d script, but it should only contain settings directly +affecting the behaviour of the init.d script, such as NODE_COUNT. + +The database schema has changed. When the RabbitMQ server detects the +presence of an old database, it moves it to a backup location, creates +a fresh, empty database, and logs a warning. If your RabbitMQ +installation contains important data, such as user accounts, durable +exchanges and queues, or persistent messages, then we recommend you +contact rabbitmq-sales@pivotal.io for assistance with the upgrade. diff --git a/release-notes/README-1.7.0.txt b/release-notes/README-1.7.0.txt new file mode 100644 index 0000000000..738ae128f8 --- /dev/null +++ b/release-notes/README-1.7.0.txt @@ -0,0 +1,105 @@ +Release: RabbitMQ 1.7.0 +Status : beta + +Release Highlights +================== + +server +------ +bug fixes +- prevent timeouts of rabbitmqctl when the server is busy +- prevent load avg calculation from failing under high load, which + could cause connection establishment to break +- remove channel closing timeout since it can cause a protocol + violation +- prevent client disconnects from sometimes resulting in enormous + error log entries and causing considerable CPU and memory pressure + +enhancements +- support SSL natively - see +- add a plugin mechanism to provide a framework for developing rabbit + extensions and managing their installation - see + +- support configuration via erlang config file, which has fewer + escaping and formatting requirements than the other configuration + mechanisms - see +- display diagnostics when rabbitmqctl fails with a badrpc error, + making it easier to track down the cause +- improve queue hibernation logic to reduce system load in + pathological scenarios, like invocations of 'rabbitmqctl + list_queues' at one second intervals +- increase consumer throughput under high load +- improve performance of channel and connection termination +- escape output of all rabbitmqctl commands +- react to memory pressure more quickly +- more graceful handling of some rare error conditions during + connection establishment, preventing spurious error log entries +- display location of application descriptor on startup, to make it + easy to locate rabbit installations +- in 'rabbitmqctl list_connections', display the connection state by + default, and no longer shows absent usernames as 'none', thus + avoiding possible confusion +- add hook mechanism for altering/augmenting broker behaviour +- add cute banner :) + +Java client +----------- +bug fixes +- work around Java Hotspot bug that could cause channel number + allocation to return null + +enhancements +- disable heartbeats by default +- add queuePurge to API +- make content properties (deep) cloneable + +.net client +----------- +bug fixes +- fix a number of race conditions in the Subscription close/shutdown + logic, making it safe to close Subscriptions from any thread +- allow SharedQueues (and thus QueuingBasicConsumer and Subscription) + to drain messages after close + +enhancements +- disable heartbeats by default +- make content properties (deep) cloneable +- add some more AmqpTcpEndpoint constructors to API + +building & packaging +-------------------- +bug fixes +- prevent purging of server debian and RPM packages from failing due + to epmd still running +- fix escaping/quoting corner cases in server control wrapper scripts +- in RPM packages, eliminate spurious removal of server startup from + all run levels during upgrade + +enhancements +- install server Erlang app in RabbitMQ-specific directory tree + (e.g. /usr/lib/rabbitmq) rather than the Erlang/OTP tree. This + allows OTP to be upgraded w/o breaking rabbit. +- package .net client in Windows installer +- include .net client in complete windows bundle +- switch .net client build from nant to msbuild and include VS + solution +- update complete windows bundle from Erlang/OTP R11B5 to R12B5 +- make installation work under MacPorts 1.8.0 +- make server buildable under freebsd +- permit configuration of server startup log locations in + /etc/default/rabbitmq +- improve formatting of man pages +- do not stomp on RABBITMQ_* environment variables in server Makefile + +Upgrading +========= +The database schema has not changed since the 1.6.0 release, so user +accounts, durable exchanges and queues, and persistent messages will +all be retained during the upgrade. + +If, however, you are upgrading from a release prior to 1.6.0, when the +RabbitMQ server detects the presence of an old database, it moves it +to a backup location, creates a fresh, empty database, and logs a +warning. If your RabbitMQ installation contains important data then we +recommend you contact rabbitmq-sales@pivotal.io for assistance with the +upgrade. diff --git a/release-notes/README-1.7.1.txt b/release-notes/README-1.7.1.txt new file mode 100644 index 0000000000..e2b0835498 --- /dev/null +++ b/release-notes/README-1.7.1.txt @@ -0,0 +1,123 @@ +Release: RabbitMQ 1.7.1 + +Release Highlights +================== + +server +------ +bug fixes +- correct various quoting errors in the Windows scripts that caused + them to fail +- ensure that stalled ssl negotiation do not block further ssl + connection acceptance +- prohibit the (re)declaration of queues that reside on node that is + currently stopped, thus preventing message loss or duplication when + that node recovers +- eliminate race condition in queue auto-deletion, ensuring that it + has completed before channel/connection closure completes +- ensure that ack processing cannot stall under heavy load when using + basic.qos +- make plug-ins and config files work when running as a Windows + service +- write crash dumps to a sensible location + (%APPDATA%\RabbitMQ\erl_crash.dump by default) when running as a + Windows service +- get the Windows service to use Erlang/OTP R12B-5 by default, since + that, rather than R11B-5, is what we ship in the Windows bundle +- correct formatting of plug-in activation errors +- make column order of 'rabbitmqctl list_bindings' match the + documentation +- do not escape spaces in rabbitmqctl output +- prevent vars declared in Windows scripts from polluting the + environment +- clean up properly when the rabbit Erlang application is stopped, + thus making it more well-behaved and easier to embed + +enhancements +- make the various scripts work with complete short node names +- improve memory monitoring and producer throttling. See the updated + documentation at https://www.rabbitmq.com/extensions.html#memsup. +- make tcp_listeners configurable via the rabbitmq.config file +- use the base64 module instead of ssl_base64 if we can, since the + latter is sometimes missing from Erlang installations +- display pids instead of just nodes in 'rabbitmqctl list_connections' + and 'rabbitmqctl list_queues', to aid troubleshooting +- add capability to display the transmitted client_properties in + 'rabbitmqctl list_connections' +- extend codec with array type ('A') +- add proper headers to auto-generated code + +Java client +----------- +bug fixes +- eliminate race in connection establishment that could cause errors + to be reported in different ways +- fix quoting in runjava.bat to stop it from tripping over exotic + Windows paths + +enhancements +- enforce codec size limits, specifically on AMQP's shortstr type, + thus preventing the creation of invalid AMQP protocol frames +- add support for basic.recover in the API +- name threads, to aid troubleshooting +- allow applications to adjust socket configuration, e.g. buffer sizes +- extend codec with array type ('A') +- throw a more informative exception (UnknownChannelException) when + receiving a frame for an unknown channel +- add proper headers to auto-generated code + +.net client +----------- +bug fixes +- close connections on app domain unload, thus preventing spurious + errors and possible connection leaks when the client is run in + certain app containers, e.g. IIS +- close socket on ssl upgrade error, thus plugging a socket leak +- resolve various bugs in the ssl negotiation code that cause it to + fail on .Net proper (though not mono) + +enhancements +- improve performance by introducing I/O buffering +- permit ssl connections that do not validate the server certificate +- improve standard display of BrokerUnreachableException +- make SharedQueue implement IEnumerable and allow multiple concurrent + enumerators per instance +- switch the code gen to the BSD-licensed version of the AMQP spec +- extend codec with array type ('A') +- add proper headers to auto-generated code + +building & packaging +-------------------- +bug fixes +- stop Debian package purge from failing after plug-in (de)activation +- when upgrading the rpm package, do not remove rabbit from any + runlevels +- fix error handling in rabbit.app generation, ensuring that errors + are reported rather than written to the generated file +- during Debian package removal, only kill epmd if it was started by + the rabbitmq user, in order to reduce the likelihood of interference + with other Erlang applications +- resolve minor incompatibility with some versions of 'echo' that + could result in spurious '-e's appearing in script error messages + +enhancements +- make MacPorts package work on Snow Leopard +- streamline dependencies in MacPorts package +- automate generation of MacPorts package and create a RabbitMQ + MacPorts repository - see https://www.rabbitmq.com/macports.html +- mirror downloads onto Amazon Cloudfront, for better availability and + download speed +- allow 'rabbitmq' user to execute the various wrapper scripts + +Upgrading +========= +The database schema has not changed since the 1.6.0 release, so user +accounts, durable exchanges and queues, and persistent messages will +all be retained during the upgrade. + +If, however, you are upgrading from a release prior to 1.6.0, when the +RabbitMQ server detects the presence of an old database, it moves it +to a backup location, creates a fresh, empty database, and logs a +warning. If your RabbitMQ installation contains important data then we +recommend you contact rabbitmq-sales@pivotal.io for assistance with the +upgrade. diff --git a/release-notes/README-1.7.2.txt b/release-notes/README-1.7.2.txt new file mode 100644 index 0000000000..a4c66001fd --- /dev/null +++ b/release-notes/README-1.7.2.txt @@ -0,0 +1,75 @@ +Release: RabbitMQ 1.7.2 + +Release Highlights +================== + +server +------ +bug fixes +- fix a number of problems with memory monitoring under Windows, + including compatibility issues with versions of Erlang/OTP older + than R13, and 64-bit versions of Windows. See the updated + documentation at https://www.rabbitmq.com/extensions.html#memsup +- correct various path escaping bugs under Windows that could result + in RabbitMQ failing to start +- make 'rabbitmq-multi start_all ' work again for n>1 +- issuing a basic.qos when there are outstanding acks can no longer + result in a higher limit than requested +- enforce codec size limits, thus preventing the server from sending + invalid AMQP frames + +enhancements +- add rabbitmqctl list_channels and list_consumers commands, and add + exclusivity information to list_queues. Also introduce a + close_connection command to allow an administrator to selectively + terminate client connections. See the updated admin guide at + https://www.rabbitmq.com/admin-guide.html for details on these new + features. +- remove the explicit setting of TCP buffer sizes in the server, thus + allowing auto-(re)sizing to occur. This generally results in + substantially improved throughput over high-latency links, and makes + manual fine-tuning easier. +- introduce declarative boot sequencing, which allows plugins to be + started at arbitrary chosen points during the sequence + +Java client +----------- +bug fixes +- ensure that QueuingConsumer throws an ShutdownSignalException in + *all* consuming threads, not just one +- fix race conditions in 'tracer' tool that could cause it to fail + +enhancements +- make exception stack traces more meaningful +- allow overriding of several RpcClient methods, for easier extension + and re-use +- improve performance of channel creation for high channel counts +- improve performance of 'tracer' tool +- add option to 'tracer' tool to suppress content bodies, which is + useful for tracing connections carrying a high data volume +- better exception reporting in 'tracer' tool + +.net client +----------- +enhancements +- improve performance of channel creation for high channel counts + +building & packaging +-------------------- +bug fixes +- under macports, ensure env var settings are passed to the various + startup and control scripts + + +Upgrading +========= +The database schema has not changed since the 1.6.0 release, so user +accounts, durable exchanges and queues, and persistent messages will +all be retained during the upgrade. + +If, however, you are upgrading from a release prior to 1.6.0, when the +RabbitMQ server detects the presence of an old database, it moves it +to a backup location, creates a fresh, empty database, and logs a +warning. If your RabbitMQ installation contains important data then we +recommend you contact rabbitmq-sales@pivotal.io for assistance with the +upgrade. diff --git a/release-notes/README-1.8.0.txt b/release-notes/README-1.8.0.txt new file mode 100644 index 0000000000..344e558acc --- /dev/null +++ b/release-notes/README-1.8.0.txt @@ -0,0 +1,208 @@ +Release: RabbitMQ 1.8.0 + +Release Highlights +================== + +server +------ +bug fixes +- prevent a change in host name from preventing RabbitMQ from being + restarted. +- ensure that durable exclusive queues do not survive a restart of the + broker. +- fix a race condition that could occur when concurrently declaring + exclusive queues. +- ensure that queues being recovered by a node in a cluster cannot be + accessed via other nodes until the queue is fully initialised. +- prevent bursts of declarations or deletions of queues or exchanges + from exhausting mnesia's transactional capacity. +- prevent bursts of connections from exhausting TCP backlog buffers. +- various corrections to documentation to correct discrepancies + between the website, the man pages, and the commands' usage outputs. + +enhancements +------------ +- introduce a pluggable exchange type API permitting plugins to the + broker to define new exchange types which can then be used by + clients. +- introduce a backing queue API permitting plugins to the broker to + define new ways in which messages can be stored. +- several semantic changes to bring the behaviour inline with the AMQP + 0-9-1 spec: + + honour many of the queue exclusivity requirements for AMQP 0-9-1, + such as queue redeclaration, basic.get, queue.bind and + queue.unbind. + + honour exchange and queue equivalence requirements for AMQP 0-9-1, + especially for queue and exchange redeclaration. + + ensure that exclusive queues are synchronously deleted before the + connection fully closes. + + permit durable queues to be bound to transient exchanges. + + enforce detection and raising exceptions due to invalid and reused + delivery-tags in basic.ack rigorously + + queue.purge now does not remove unacknowledged messages. +- require clients to respond to channel.flow messages within 10 + seconds to avoid an exception being raised and more rigorously deal + with clients that disobey channel.flow messages. See + https://www.rabbitmq.com/extensions.html#memsup +- the server now supports the client sending channel.flow messages to + temporarily halt the flow of deliveries to the client. +- optimise cross-node routing of messages in a cluster scenario whilst + maintaining visibility guarantees. +- ensure that clients who present invalid credentials cannot flood the + broker with requests. +- drop support for versions of Erlang older than R12B-3. +- ensure that the minimum number of frames are used to deliver + messages, regardless of incoming and outgoing frame sizes. +- display the current version of Erlang when booting Rabbit, and + ensure the version is sufficiently youthful. +- work around some name resolver issues, especially under Windows. +- introduce a Pacemaker OCF script (and then fix it, thanks to patches + by Florian Haas) to permit RabbitMQ to be used in basic + active/passive HA scenarios (see + https://www.rabbitmq.com/pacemaker.html). + + +java client +----------- +bug fixes +- fix a race condition when closing channels which could lead to the + same channel being closed twice. +- MulticastMain could calculate negative rates, due to integer + wrapping. +- be consistent about naming conventions. + +enhancements +- Java client is now available via Maven Central. +- redesign the ConnectionFactory to be more idiomatic. +- expose server properties in connection.start. +- allow additional client properties to be set in connection.start_ok. +- attempt to infer authentication failures and construct appropriate + exceptions. +- MulticastMain now logs returned publishes. + + +.net client +----------- +bug fixes +- prevent memory leak due to DomainUnload event handler. +- improvements to catching connections which are timing out. +- ensure explicitly numbered closed channels return their channel + number to the pool correctly. +- removed artificial limitation on maximum incoming message size. + +enhancements +- expose server properties in connection.start. +- allow additional client properties to be set in connection.start_ok. +- attempt to infer authentication failures and construct appropriate + exceptions. + + +code generation +--------------- +enhancements +- permit multiple specifications to easily be combined and merged. +- permit any number of different "actions" in code generation. + + +building & packaging +-------------------- +bug fixes +- stop the INSTALL file from being installed in the wrong place by the + Debian packages. + +enhancements +- source rpm (.src.rpm) packages are now available +- rpm packages are now noarch, matching the debs + + +Upgrading +========= +The database schema and the format in which persistent messages are +stored have both changed since the last release (1.7.2). When +starting, the RabbitMQ server will detect the existence of an old +database and will move it to a backup location, before creating a +fresh, empty database, and will log a warning. If your RabbitMQ +installation contains important data then we recommend you contact +rabbitmq-sales@pivotal.io for assistance with the upgrade. + + +Important notes on the AMQP 0-9-1 semantic changes +================================================== + +This release incorporates a number of semantic changes to the broker +behaviour which bring the broker more in-line with the AMQP 0-9-1 +specification. We don't think any of these changes are going to be a +big problem for anyone, and will probably be irrelevant for most +people. In almost all cases they're tightening up or tidying up edge +cases where the 0-8 spec was incomplete or specified something +unhelpful. However, it's probably worth reading the list below to make +absolutely sure you're not depending on any of our existing weird +behaviour. + + +Reuse of delivery tags +---------------------- + +In previous versions of RabbitMQ, you could ack the same message with +the same delivery tag multiple times. In 1.8.0 this will cause a +not-found exception. Note that if a message is redelivered for any +reason it will get a new delivery tag so you can ack it again. + + +Exchange equivalence +-------------------- + +In previous versions of RabbitMQ you could actively declare an +exchange with one set of durable and auto-delete parameters, then +actively declare it again with different parameters and get the same +exchange back. This now causes a precondition_failed exception, as it +would if the type does not match. Note that with the old behaviour the +exchange did not actually change to match the new parameters; you just +got back something that was not what you asked for. + +In previous versions, when passively declaring an exchange, the type +parameter was checked (but not the durable and auto-delete +parameters). Now only the name is checked. Passive declaration cannot +create an exchange, and exchanges are only identified by their +name. Therefore it does not make sense to require the other parameters +of exchange.declare to match the exchange declaration in the passive +case. + + +Queue equivalence +----------------- + +Similarly, when actively redeclaring a queue you could vary the +durable and auto-delete parameters and get back a queue which did not +match what you asked for. Again, this is now causes a +precondition_failed exception. Likewise, passive declaration of +queues only needs to match on the queue name, not any other +parameters. + + +Purging unacknowledged messages +------------------------------- + +When queue.purge is called, messages which had been send but not +acknowledged used to be purged. Now they are not. This makes much more +sense as consumers from a queue may have no idea whether or not a +queue has been purged by some other client. + + +Binding durable queues to transient exchanges +--------------------------------------------- + +This used not to be permitted. Now it is. The binding is considered +transient. + + +Queue exclusivity enforcement +----------------------------- + +In previous versions of RabbitMQ, an exclusive queue could still be +accessed by other connections for (un)binding or basic.get. This is now +not permitted. + +Also, an exclusive queue would continue to exist for a short time after +the connection was closed. It's now deleted while the connection is +being closed (assuming that's happening in an orderly manner). diff --git a/release-notes/README-1.8.1.txt b/release-notes/README-1.8.1.txt new file mode 100644 index 0000000000..382d758a36 --- /dev/null +++ b/release-notes/README-1.8.1.txt @@ -0,0 +1,69 @@ +Release: RabbitMQ 1.8.1 + +Release Highlights +================== + +server +------ +bug fixes + - unbinding from an auto-delete exchange produced an error + - the message count reported when declaring a queue was incorrect under rare + conditions + - it was possible for a channel.close_ok message to get lost in rare + circumstances + +enhancements +------------ + - clustering produces better error messages when clustering fails + - the AMQP 0.8 specification permitted a rare case of deadlock while closing + channels and connections. AMQP 0.9.1 forbids this condition and RabbitMQ now + implements the correction + - the AMQP basic.recover method is now synchronous by default - the + asynchronous version is still available, but deprecated + - the AMQP basic.recover method is now permitted in transacted channels, where + this was previously forbidden + - maximum AMQP frame size is specified more rigorously in AMQP 0.9.1 - RabbitMQ + now enforces the negotiated maximum frame size + - AMQP 0.9.1 guidance on error constants is now followed more closely and + 0.9.1 error codes are produced in more situations + - SSL compatiblity under R14A has been improved + +java client +----------- +enhancements + - the API can now report on channel flow events + - better handling of unsolicited messages and unknown consumer tags, by adding + a default consumer + - documentation enhancements around the use of AMQConnection + +.net client +----------- +enhancements + - better handling of unsolicited messages and unknown consumer tags, by adding + a default consumer + - documentation enhancements around the use of ConnectionFactory + +building & packaging +-------------------- +bug fixes + - fix permission errors for commandline utilities in MacPorts + +enhancements + - compiles under Erlang R14A + - builds using GNU Make 3.80 - previously version 3.81 was required + - error output when using old versions of GNU Make has been added + - builds under RHEL5 and distributions with xmlto version 0.0.18 + - better type-checking, making use of recent features in Dialyzer + +Upgrading +========= +The database schema has not changed since version 1.8.0, so user accounts, +durable exchanges and queues, and persistent messages will all be retained +during the upgrade. + +If, however, you are upgrading from a release prior to 1.8.0, when the +RabbitMQ server detects the presence of an old database, it moves it to a +backup location, creates a fresh, empty database, and logs a warning. If +your RabbitMQ installation contains important data then we recommend you +contact rabbitmq-sales@pivotal.io for assistance with the upgrade. + diff --git a/release-notes/README-2.0.0.txt b/release-notes/README-2.0.0.txt new file mode 100644 index 0000000000..8128240016 --- /dev/null +++ b/release-notes/README-2.0.0.txt @@ -0,0 +1,98 @@ +Release: RabbitMQ 2.0.0 + +Release Highlights +================== + +server +------ +bug fixes +- correct file descriptor limits on Windows, preventing crashes due to + exceeding the limit +- fix bug that resulted in 'rabbitmqctl status' reporting disk nodes + as ram nodes +- tx.commit no longer fails when participating queues are deleted + during the lifetime of the transaction +- more robust logic to detect changes in the data layout between + rabbit versions and thus guard against upgrade failures + +enhancements +- new persister + - the volume of messages rabbit can hold on to is bounded by disk + space (in previous versions it was bounded by memory) + - rabbit optimises memory usage by paging messages out to / in from + disk as needed + - consistently high performance regardless of retained message + volume (previous versions would slow down considerably as the + persisted message volume grew) + - consistently fast startup regardless of volume of persisted data + (previous versions would require time proportional to the amount + of data) + - better performance for concurrent transactions (in previous + version the rate at which queues could handle transactions + involving persistent messages was fixed) +- implement AMQP 0-9-1, in addition to 0-8 - see + https://www.rabbitmq.com/specification.html +- instrumentation for asynchronous statistics events, emitting more + stats than currently available and laying the foundation for + monitoring a busy broker without crippling performance - + see https://blog.rabbitmq.com/posts/2010/08/management-monitoring-and-statistics/ +- more effective flow control mechanism that does not require + cooperation from clients and reacts quickly to prevent the broker + from exhausing memory - see https://www.rabbitmq.com/extensions.html#memsup +- implement basic.reject - see +https://blog.rabbitmq.com/posts/2010/08/well-ill-let-you-go-basicreject-in-rabbitmq/ +- simplify plugin activation by moving it into the server startup +- permit upgrades of Erlang w/o breaking rabbit servers with activated + plugins +- introduce support for queue leases - see https://www.rabbitmq.com/extensions.html#queue-leases +- improve the setting of permissions, making it easer to use and + introducing a way to grant no permissions at all - see https://www.rabbitmq.com/admin-guide.html#management +- delete exclusive queues synchronously on server-initiated connection + close (rather than just client-initiated) + +java client +----------- +bug fixes +- prevent spurious timeout exceptions that theoretically could have + arisen due to spurios thread wake-ups + +enhancements +- switch to AMQP 0-9-1 - see + https://www.rabbitmq.com/specification.html + +.net client +----------- +bug fixes +- fix bug that caused incorrect responses to server-issued + channel.flow commands, which in turn resulted in connections getting + closed with an error. +- make SSL connections work in Mono + +enhancements +- implement AMQP 0-9-1, in addition to 0-8 and 0-9 - see + https://www.rabbitmq.com/specification.html +- simplify the Subscription class and make it more versatile +- improve documentation + +building & packaging +-------------------- +bug fixes +- correct location of rabbitmq.config file under macports - it now + lives in /opt/local/etc/rabbitmq/ +- "make docs_all" now works on more platforms + +enhancements +- portable, binary plugin releases to simplify plugin installation - + see https://www.rabbitmq.com/plugins.html +- automatically create plugin directory, to streamline plugin + installation + +Upgrading +========= +The database schema and the format in which persistent messages are +stored have both changed since the last release (1.8.1). When +starting, the RabbitMQ server will detect the existence of an old +database and will move it to a backup location, before creating a +fresh, empty database, and will log a warning. If your RabbitMQ +installation contains important data then we recommend you contact +rabbitmq-sales@pivotal.io for assistance with the upgrade. diff --git a/release-notes/README-2.1.0.txt b/release-notes/README-2.1.0.txt new file mode 100644 index 0000000000..0a5e70d45c --- /dev/null +++ b/release-notes/README-2.1.0.txt @@ -0,0 +1,53 @@ +Release: RabbitMQ 2.1.0 + +Release Highlights +================== + +server +------ +enhancements + - detects incorrect nodename in rabbitmq_multi + - extend supported timeout types for queue lease, see + https://www.rabbitmq.com/extensions.html#queue-leases + - print plugin versions on startup + - extend permissions system - add 'is_admin' field; useful for + the management plugin + - queue.declare and queue.delete should always work quickly, even + if the broker is busy + +bug fixes + - the 'client' permission scope wasn't working correctly + - in the presence of 'verify_peer' option broker will now not accept + self-signed ssl certificates + - fixed sasl logging to terminal + - fixed 'rabbitmq_multi stop_all' on freebsd + - fixed race condition which might result in a message being lost when + the broker is quitting + - fixed race condition in heartbeat handling, which could result + in a connection being dropped without logging the reason for that + +java client +----------- +enhancements + - basic.consume 'filter' argument is now called 'arguments' + - dropped Channel.queuePurge/2 method + - added --help flag to MulticastMain + +.net client +----------- +enhancements + - basic.consume 'filter' argument is now called 'arguments' + +bug fixes + - fixed race condition in synchronous basic.recover + - codegen was generating incorrect code for nowait parameter + + +Upgrading +========= +The database schema has changed since the last release (2.0.0). When +starting, the RabbitMQ server will detect the existence of an old +database and will move it to a backup location, before creating a +fresh, empty database, and will log a warning. If your RabbitMQ +installation contains important data then we recommend you contact +rabbitmq-sales@pivotal.io for assistance with the upgrade. diff --git a/release-notes/README-2.1.1.txt b/release-notes/README-2.1.1.txt new file mode 100644 index 0000000000..4203f8905a --- /dev/null +++ b/release-notes/README-2.1.1.txt @@ -0,0 +1,60 @@ +Release: RabbitMQ 2.1.1 + +Release Highlights +================== + +server +------ +enhancements + - add exchange to exchange bindings. See + www.rabbitmq.com/extensions.html#exchange-bindings. Blog post forthcoming. + - reduce disk use when creating and deleting queues + - faster connection termination and queue deletion for connections + that use exclusive queues + - miscellaneous persister performance improvements + - extend queue leases on declaration + - add 'client_flow' channel info item for 'rabbitmqctl list_channels' + - add SSL information for 'rabbitmqctl list_connections' + - enforce restrictions regarding the default exchange + - add version information to database - for future upgrades + - better memory detection on AIX + +bug fixes + - fix a bug that could kill rabbit after a queue.purge + - fix a bug which could cause 'rabbitmqctl list_connections' to crash + some of the connection handlers + - reduce per-queue memory back to expected levels + - don't ignore channel.flow when there were no consumers + - fix some bugs that caused too few or too many stats to be emitted + +java client +----------- +bug fixes + - eliminate the possibility of deadlock when opening channels at the + same times as others are being closed + - move heartbeat sender into a separate thread to ensure that missing + heartbeats are detected promptly in all cases + +.net client +----------- +enhancements + - added a means to detect when channel.flow is active + +building & packaging +-------------------- +enhancements + - better use of dialyzer: report more warnings + - better dependency handling in server build, reducing rebuilds + + +Upgrading +========= +The database schema has not changed since version 2.1.0, so user accounts, +durable exchanges and queues, and persistent messages will all be retained +during the upgrade. + +If, however, you are upgrading from a release prior to 2.1.0, when the +RabbitMQ server detects the presence of an old database, it moves it to a +backup location, creates a fresh, empty database, and logs a warning. If +your RabbitMQ installation contains important data then we recommend you +contact rabbitmq-sales@pivotal.io for assistance with the upgrade. diff --git a/release-notes/README-2.2.0.txt b/release-notes/README-2.2.0.txt new file mode 100644 index 0000000000..88231a0f20 --- /dev/null +++ b/release-notes/README-2.2.0.txt @@ -0,0 +1,106 @@ +Release: RabbitMQ 2.2.0 + +Release Highlights +================== + +server +------ +bug fixes +- fix issue that causes cross-cluster communication to deadlock after + sustained cluster activity +- fix queue memory leak when using the management plugin or other + consumers of queue statistics +- brokers started with rabbitmq_multi.bat are now restartable +- clustering reset no longer destroys installed plugins +- fix race condition between queue declaration and connection + termination that causes spurious noproc errors to appear in the log +- fix memory leak when long-running channels consume and cancel on + many queues +- queue.declare and exchange.declare raise precondition_failed rather + than not_allowed when attempting to redeclare a queue or exchange + with parameters different than those currently known to the broker + +enhancements +- automatic, lossless upgrade to new versions of RabbitMQ + (when not clustered) +- support per-queue message TTL. See: + https://www.rabbitmq.com/extensions.html#queue-ttl +- the volume of pending acks is now bounded by disk space rather + than by memory +- store passwords as hashes +- allow server properties to be configured in the RabbitMQ config file +- SSL connections are listed as such by rabbitmqctl +- simplify permission configuration by removing the client + permission scope +- improve performance of message routing +- removed support for basic.recover with requeue=false + +java client +----------- +enhancements +- 'noAck' argument renamed to 'autoAck' +- add PossibleAuthenticationFailureException and + ProtocolVersionMismatchException to match up with the .net client. + +.net client +----------- +bug fixes +- fix race condition that can cause spurious SocketErrors to be thrown + during connection.close +- fix WCF support to use 'amq.direct' exchange instead of default + exchange + +management plugin +----------------- +bug fixes +- fix issue preventing user authentication when using Safari +- backing queue stats now display correctly + +enhancements +- the management plugin is now fully cluster-aware +- show detailed incoming/outgoing message rates per channel, exchange + and queue +- show active/idle state for channels and queues +- show node uptime, rabbit version, erlang version and total queued + messages +- add tab completion to rabbitmqadmin + +STOMP plugin +------------ +enhancements +- overhaul the destination selection process to use only the + 'destination' header +- add support for /queue and /topic destinations +- remove support for custom 'routing_key' and 'exchange headers' and + introduce /exchange// destination type +- the order of SEND and SUBSCRIBE frames is no longer important +- STOMP listeners show up as such in the management plugin + +build and packaging +------------------- +bug fixes +- remove build-time dependency on OTP source to allow users to + build without the OTP source present +- eliminate all valid dialyzer errors + +enhancements +- include pre-compiled man pages in the MacPorts distribution, + drastically reducing the number of dependencies required. + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply +install the new version. All configuration and persistent message data +is retained. + +To upgrade a non-clustered RabbitMQ from release 2.1.0, first upgrade +to 2.1.1 (which retains all data), and then to the current version as +described above. + +To upgrade a clustered RabbitMQ or from releases prior to 2.1.0, if +the RabbitMQ installation does not contain any important data then +simply install the new version. RabbitMQ will move the existing data +to a backup location before creating a fresh, empty database. A +warning is recorded in the logs. If your RabbitMQ installation +contains important data then we recommend you contact +rabbitmq-sales@pivotal.io for assistance with the upgrade. diff --git a/release-notes/README-2.3.0.txt b/release-notes/README-2.3.0.txt new file mode 100644 index 0000000000..54de49e4c4 --- /dev/null +++ b/release-notes/README-2.3.0.txt @@ -0,0 +1,163 @@ +Release: RabbitMQ 2.3.0 + +Release Highlights +================== + +server +------ +bug fixes +- prevent message store deleting open files leading to eaccess on Windows + and potential disk space leak +- various bugs in delegate leading to poor cluster performance and + nodes blocking if other nodes are down +- ensure regular flushes of queue index data to disk resulting in better + data retention in the event of a broker failure +- prevent queues from hibernating indefinitely on startup under memory + pressure +- prevent message store in-memory cache from becoming too large +- prevent infinite loop after certain types of queue process crash, + and prevent such a crash during queue deletion on Erlang R12B3 +- make SASL PLAIN parser more robust +- fix startup scripts to work on Solaris 10 +- prevent delivery of large messages to consumers from blocking deliveries + on other channels +- basic.recover affects prefetch count +- prevent channel crash on basic.recover to a deleted queue +- correct serialisation of PIDs in clusters, without which the + management plug-in failed to display some detailed stats +- prevent potential crash of queues in clusters in the event of + improbable ordering of events upon the death of a channel +- add missing failure diagnostics on rabbitmqctl list_consumers +- fix truncated failure diagnostics for rabbitmqctl under Windows + +enhancements +- add confirm mode - an extension to the AMQP 0-9-1 spec allowing + clients to receive streaming receipt confirmations for the messages + they publish. See + https://www.rabbitmq.com/extensions.html#confirms for more information. +- add a basic.nack method. See + https://www.rabbitmq.com/extensions.html#negative-acknowledgements +- add an unforgeable user-id header. See + https://www.rabbitmq.com/extensions.html#validated-user-id +- pluggable SASL authentication mechanisms, and a new plugin + to authenticate using SSL (see below) +- pluggable authentication / authorisation backends, and a new plugin + to authenticate and authorise using LDAP (see below) +- internal exchanges (cannot be published to directly, + typically used with exchange-to-exchange bindings) +- users can be made unable to log in with a password +- IPv6 support. RabbitMQ will listen on IPv4 and IPv6 by default. +- list SSL algorithm information in rabbitmqctl +- improved diagnostic error messages in common startup error cases +- allow node name to be specified without a host +- persister optimisation - eliminate unnecessary pending actions upon + queue deletion (pseudo pipeline flush) +- improve pluggable exchange type API to allow better handling of race + conditions + + +java client +----------- +bug fixes +- fix for compilation under Java 1.5 +- remove support for Java 1.4 + +enhancements +- confirm mode +- pluggable SASL authentication mechanisms +- include generated source in Maven source bundle + + +.net client +----------- +bug fixes +- noAck set correctly in Subscription class + +enhancements +- confirm mode +- pluggable SASL authentication mechanisms +- API tidied up to more closely resemble that of the Java client +- distribute XML documentation with binary release + + +management plugin +----------------- +bug fixes +- race condition that can lead to stats db failing on queue deletion +- closing connections on remote cluster nodes +- fix web UI memory leaks in Chrome +- mitigate web UI memory leaks in all browsers + +enhancements +- command line tool rabbitmqadmin can display overview statistics and + filter columns +- context-sensitive help +- web UI state is persistent +- display statistics for confirms +- API: empty fields can be omitted on PUT +- no longer depends on the crypto application, simplifying installation + for some users + + +STOMP plugin +------------ +bug fixes +- plug channel leak on UNSUBSCRIBE +- fix breakage of SEND after UNSUBSCRIBE +- gracefully handle SUBSCRIBE to non-existent exchange +- correct semantics of UNSUBSCRIBE receipts + +enhancements +- updates to support the draft STOMP 1.1 spec +- major refactoring to use OTP behaviours +- enhanced and fixed examples +- IPv6 support + + +build and packaging +------------------- + +enhancements +- Windows bundle now includes Erlang R14B01 + + +shovel plugin +------------- +bug fixes +- close client connections properly if failure occurs during startup + +enhancements +- allow specification of heartbeat, frame_max and channel_max in + connection URI + + +ssl authentication mechanism plugin +----------------------------------- +Experimental plugin allowing clients to authenticate with the SASL +EXTERNAL mechanism and client SSL certificates. A password is not +required. + + +ldap authentication backend plugin +---------------------------------- +Experimental plugin allowing the authentication / authorisation +database to be hosted in an LDAP server. + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply +install the new version. All configuration and persistent message data +is retained. + +To upgrade a non-clustered RabbitMQ from release 2.1.0, first upgrade +to 2.1.1 (which retains all data), and then to the current version as +described above. + +To upgrade a clustered RabbitMQ or from releases prior to 2.1.0, if +the RabbitMQ installation does not contain any important data then +simply install the new version. RabbitMQ will move the existing data +to a backup location before creating a fresh, empty database. A +warning is recorded in the logs. If your RabbitMQ installation +contains important data then we recommend you contact +rabbitmq-sales@pivotal.io for assistance with the upgrade. diff --git a/release-notes/README-2.3.1.txt b/release-notes/README-2.3.1.txt new file mode 100644 index 0000000000..7d62429044 --- /dev/null +++ b/release-notes/README-2.3.1.txt @@ -0,0 +1,36 @@ +Release: RabbitMQ 2.3.1 + +Release Highlights +================== + +server +------ +bug fixes +- fix critical bug causing queue processes to sometimes crash when + using transactions or confirms +- improve error message when failing to declare a queue or exchange due + to argument equivalence + +java client +----------- +bug fixes +- fix race condition closing a channel + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply +install the new version. All configuration and persistent message data +is retained. + +To upgrade a non-clustered RabbitMQ from release 2.1.0, first upgrade +to 2.1.1 (which retains all data), and then to the current version as +described above. + +To upgrade a clustered RabbitMQ or from releases prior to 2.1.0, if +the RabbitMQ installation does not contain any important data then +simply install the new version. RabbitMQ will move the existing data +to a backup location before creating a fresh, empty database. A +warning is recorded in the logs. If your RabbitMQ installation +contains important data then we recommend you contact +rabbitmq-sales@pivotal.io for assistance with the upgrade. diff --git a/release-notes/README-2.4.0.txt b/release-notes/README-2.4.0.txt new file mode 100644 index 0000000000..0724be09d4 --- /dev/null +++ b/release-notes/README-2.4.0.txt @@ -0,0 +1,143 @@ +Release: RabbitMQ 2.4.0 + +Release Highlights +================== + +server +------ +bug fixes +- in a cluster, don't fail with an internal-error when re-declaring a + queue on a connection to a node other than the queue's "home" node +- in a cluster, report a not-found error instead of internal-error + when attempting to re-declare a durable queue whose node is + unavailable +- do not ignore the RABBITMQ_LOG_BASE variable on Windows +- fix a bug causing SSL connections to die on Erlang prior to R14 + when using "rabbitmqctl list_connections" with the SSL options +- various minor fixes + +enhancements +- greatly speed up routing for topic exchanges with many bindings +- propagate memory alarms across cluster, thus reacting better to + memory pressure on individual nodes. +- sender-selected distribution (i.e. add support for the CC and BCC + headers). See + https://www.rabbitmq.com/extensions.html#sender-selected-distribution + for more information. +- server-side consumer cancellation notifications. See + https://www.rabbitmq.com/extensions.html#consumer-cancel-notify + for more information. +- have the server present its AMQP extensions in a "capabilities" + field in server-properties. See + https://www.rabbitmq.com/extensions.html#capabilities + for more information. +- determine file descriptor limits accurately on Windows, usually + resulting in much higher limits than previously, which allows more + connections and improves performance +- indicate in the logs when the file descriptor limit has been reached + (causing the server to not accept any further connections) +- allow SASL mechanisms to veto themselves based on socket type +- rename rabbitmq.conf to rabbitmq-env.conf, to avoid confusion with + rabbitmq.config +- improve performance of publisher confirms +- various other minor enhancements and performance improvements + + +java client +----------- +bug fixes +- prevent stack overflow when connections have large numbers channels +- do not require a working reverse DNS when establishing connections + +enhancements +- ConnectionFactory accepts a connection timeout parameter +- allow prioritisation of SASL mechanisms +- support for server-side consumer cancellation notifications +- have the client present its AMQP extensions in a "capabilities" + field in client-properties +- rename ReturnListener.handleBasicReturn to handleReturn + + +.net client +----------- +bug fixes +- WCF bindings specified in configuration files are no longer ignored + +enhancements +- support for server-side consumer cancellation notifications +- have the client present its AMQP extensions in a "capabilities" + field in client-properties +- support IPv6 + + +management plugin +----------------- +bug fixes +- hide passwords in the web UI +- fix rabbitmqadmin's handling of Unicode strings + +enhancements +- present the managed socket and open file counts and respective limits +- better memory usage reporting for hibernating queues +- better support for serving the web interface through a proxy +- allow users to choose which node a queue is declared on +- show memory alarm states for nodes +- show statistics for basic.returns +- publish/receive messages via HTTP; this is intended for testing / + learning / debugging, not as a general solution for HTTP messaging + + +STOMP plugin +------------ +bug fixes +- prevent crash when publishing from STOMP, but subscribing from + non-STOMP +- correctly process publishes spanning multiple network packets +- do not crash when publishing with undefined headers +- receipts for SEND frames wait on confirms +- do not issue a DISCONNECT with receipt when a clean shutdown has + *not* occurred + +enhancements +- add documentation. See https://www.rabbitmq.com/stomp.html +- significant performance improvements +- extend flow-control on back pressure through the STOMP gateway + preventing the STOMP from overloading the server +- support for the "persistent" header +- support for multiple NACK + + +SSL authentication mechanism plugin +----------------------------------- +enhancements +- only offer this mechanism on SSL connections + + +build and packaging +------------------- +enhancements +- Windows installer for the broker +- remove the rabbitmq-multi script in order to simplify startup and + improve error reporting +- add the "cond-restart" and "try-restart" options to the init script +- specify runlevels in the rabbitmq-server.init script +- make the java client jar an OSGi bundle +- Debian package only depends on erlang-nox + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply +install the new version. All configuration and persistent message data +is retained. + +To upgrade a non-clustered RabbitMQ from release 2.1.0, first upgrade +to 2.1.1 (which retains all data), and then to the current version as +described above. + +To upgrade a clustered RabbitMQ or from releases prior to 2.1.0, if +the RabbitMQ installation does not contain any important data then +simply install the new version. RabbitMQ will move the existing data +to a backup location before creating a fresh, empty database. A +warning is recorded in the logs. If your RabbitMQ installation +contains important data then we recommend you contact +rabbitmq-sales@pivotal.io for assistance with the upgrade. diff --git a/release-notes/README-2.4.1.txt b/release-notes/README-2.4.1.txt new file mode 100644 index 0000000000..bacad447d9 --- /dev/null +++ b/release-notes/README-2.4.1.txt @@ -0,0 +1,87 @@ +Release: RabbitMQ 2.4.1 + +Release Highlights +================== + +server +------ +bug fixes +- fix breakage of upgrades when durable queues are present or + following a non-clean shutdown +- prevent "rabbitmqctl wait" from waiting forever in certain + circumstances +- the broker can be run on Erlang R12B-3 again +- some other small bug fixes + +enhancements +- upgrades in clusters. See + https://www.rabbitmq.com/clustering.html#upgrading +- improve memory usage when dealing with persistent messages waiting + on acks from consumers +- better error reporting for some startup problems +- add timestamp to events published to the amq.rabbit.log exchange + + +java client +----------- +enhancements +- remove dependency on javax.security.sasl, thus improving + compatibility with Android and WebSphere + + +.net client +----------- +bug fixes +- the client can be built on .NET 2.0 again + + +management plugin +----------------- +bug fixes +- fix issue that would cause non-admin users to be repeatedly prompted + for their password when viewing the queues page + + +STOMP plugin +------------ +bug fixes +- the plugin works on Erlang R12 again + + +SSL authentication mechanism plugin +----------------------------------- +bug fixes +- accept SSL certificates with fields containing characters + outside ASN.1 PrintableString (e.g. underscores) + + +build and packaging +------------------- +bug fixes +- the OCF script works correctly when specifying an alternative + configuration file + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply +install the new version. All configuration and persistent message data +is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install +the new version on all the nodes and follow these instructions: + https://www.rabbitmq.com/clustering.html#upgrading +All configuration and persistent message data is retained. + +To upgrade a non-clustered RabbitMQ from release 2.1.0, first upgrade +to 2.1.1 (which retains all data), and then to the current version as +described above. + +To upgrade a clustered RabbitMQ prior to 2.1.1 or a stand-alone broker +from releases prior to 2.1.0, if the RabbitMQ installation does not +contain any important data then simply install the new +version. RabbitMQ will move the existing data to a backup location +before creating a fresh, empty database. A warning is recorded in the +logs. If your RabbitMQ installation contains important data then we +recommend you contact rabbitmq-sales@pivotal.io for assistance with the +upgrade. diff --git a/release-notes/README-2.5.0.txt b/release-notes/README-2.5.0.txt new file mode 100644 index 0000000000..c6495020c4 --- /dev/null +++ b/release-notes/README-2.5.0.txt @@ -0,0 +1,135 @@ +Release: RabbitMQ 2.5.0 + +Release Highlights +================== + +server +------ +bug fixes +- reduce complexity of recovery, significantly improving startup times + when there are large numbers of exchanges or bindings +- recover bindings between durable queues and non-durable exchanges + on restart of individual cluster nodes +- do not read messages off disk in the x-message-ttl logic. This could + severely impact performance when many queues expired messages + (near)simultaneously. +- resolve a timer issue that could impact performance when under high + load and memory pressure +- make source code compilable with latest Erlang release (R14B03) +- assert x-message-ttl equivalence on queue redeclaration + +enhancements +- tracing facility for incoming and outgoing messages - see + https://www.rabbitmq.com/firehose.html +- optionally serialise events for exchange types +- detect available memory on OpenBSD +- add Windows service description +- improve inbound network performance +- improve routing performance +- new rabbitmqctl commands: + report - comprehensive report of server status for support purposes + environment - display application environment (such as config vars) + cluster_status - display cluster status (formerly part of 'status') + +java client +----------- +bug fixes +- compile under Java 1.5 (again) + +enhancements +- experimental API employing command objects and builders. See + http://hg.rabbitmq.com/rabbitmq-java-client/file/default/test/src/com/rabbitmq/client/test/AMQBuilderApiTest.java + for some examples. Feedback welcome! + +.net client +----------- +bug fixes +- make method id of 'exchange.unbind-ok' match definition in the + broker, so the client lib can recognise that command. +- WCF bindings specified in configuration files are no longer ignored + +enhancements +- allow larger than default message sizes in WCF +- updated documentation + +management plugin +----------------- +bug fixes +- handle race between queue creation/deletion and stats reporting that + could result in errors in the latter, particularly when there are + large numbers of queues and/or high churn +- handle race when starting the management plug-in on multiple cluster + nodes, which in some rare (but quite reproducible) circumstances + could cause some of the brokers to crash +- remove duplicate 'messages' entry from queue stats JSON +- make binding arguments optional in the HTTP API for binding creation +- correct error handling in the HTTP API for binding creation +- prevent spurious failures of aliveness test + +enhancements +- performance improvements which significantly reduce the cost of + stats reporting, allowing the management plug-in to cope with much + higher numbers of queues, bindings, etc. +- issue an alert when a configured user cannot access any vhost or a + vhost has no users +- allow choice of which stats/info items to return in the HTTP API +- include protocol adapter and direct connections in API and UI +- full STOMP SSL information displayed + +rabbitmq-mochiweb +----------------- + +enhancements +- more flexible configuration permitting different services to run on + different ports, SSL support and interface-based restrictions. See + https://www.rabbitmq.com/mochiweb.html for more details. Note that by + default the JSON-RPC channel plugin will now listen on port 55670. + +STOMP plugin +------------ +enhancements +- support connections over SSL +bug fixes +- correct spelling of 'heart-beat' header +- don't drop messages if producer hangs up quickly + +build and packaging +------------------- +bug fixes +- fix breakage in /etc/init.d/rabbitmq-server rotate-logs command + +enhancements +- plug-in build system: support the declaration of inter-plugin + dependencies, making development of plugins much easier. + Inter-module dependencies are calculated automatically for all + plugins. Note that some plugins and applications have been + renamed for consistency, which may require changes to any existing + `rabbitmq.config` to match. +- do not require access to www.docbook.org when building the server + w/o docbook installed +- get rid of some warnings in the .net client build + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply +install the new version. All configuration and persistent message data +is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install +the new version on all the nodes and follow these instructions: + https://www.rabbitmq.com/clustering.html#upgrading +All configuration and persistent message data is retained. + +To upgrade a non-clustered RabbitMQ from release 2.1.0, first upgrade +to 2.1.1 (which retains all data), and then to the current version as +described above. + +To upgrade a clustered RabbitMQ prior to 2.1.1 or a stand-alone broker +from releases prior to 2.1.0, if the RabbitMQ installation does not +contain any important data then simply install the new +version. RabbitMQ will move the existing data to a backup location +before creating a fresh, empty database. A warning is recorded in the +logs. If your RabbitMQ installation contains important data then we +recommend you contact rabbitmq-sales@pivotal.io for assistance with the +upgrade. diff --git a/release-notes/README-2.5.1.txt b/release-notes/README-2.5.1.txt new file mode 100644 index 0000000000..442055a6cd --- /dev/null +++ b/release-notes/README-2.5.1.txt @@ -0,0 +1,34 @@ +Release: RabbitMQ 2.5.1 + +Release Highlights +================== + +server +------ +bug fixes +- fix bug preventing upgrades from 2.1.1 and 2.2.0. + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply +install the new version. All configuration and persistent message data +is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install +the new version on all the nodes and follow these instructions: + https://www.rabbitmq.com/clustering.html#upgrading +All configuration and persistent message data is retained. + +To upgrade a non-clustered RabbitMQ from release 2.1.0, first upgrade +to 2.1.1 (which retains all data), and then to the current version as +described above. + +To upgrade a clustered RabbitMQ prior to 2.1.1 or a stand-alone broker +from releases prior to 2.1.0, if the RabbitMQ installation does not +contain any important data then simply install the new +version. RabbitMQ will move the existing data to a backup location +before creating a fresh, empty database. A warning is recorded in the +logs. If your RabbitMQ installation contains important data then we +recommend you contact rabbitmq-sales@pivotal.io for assistance with the +upgrade. diff --git a/release-notes/README-2.6.0.txt b/release-notes/README-2.6.0.txt new file mode 100644 index 0000000000..bcdb00cea6 --- /dev/null +++ b/release-notes/README-2.6.0.txt @@ -0,0 +1,181 @@ +Release: RabbitMQ 2.6.0 + +Release Highlights +================== + +server +------ +bug fixes +- upgrading from RabbitMQ 2.1.1 to any later release could break if + there were durable queues with persistent messages present +- on very slow machines, starting rabbit via the supplied init scripts + could fail with a timeout +- rabbit could fail to stop (when asked to do so) in the presence of + some plug-ins (e.g. shovel) +- 'ram' nodes in a cluster could consume ever increasing amounts of + disk space +- the presence of fast consumers on a queue could significantly delay + the addition of new consumers +- when a client was issuing a tx.commit in one channel, and + simultaneously, in another channel, deleted a durable queue with + persistent messages involved in that tx, rabbit could terminate with + an error +- when a client was using both basic.qos and channel.flow, the latter + would fail to re-enable message flow +- when using 'confirm' mode, the deletion of queues could cause nacks + to be issued (incorrectly) +- in extremely rare circumstances (never observed in the wild), a + queue with a per-queue message ttl could break during sudden changes + in rabbit memory usage + +enhancements +- introduce active-active HA, with queues getting mirrored on nodes in + a cluster. See https://www.rabbitmq.com/ha.html +- revamp the handling of AMQP's tx (transaction) class and clarify its + behaviour See https://www.rabbitmq.com/specification.html#tx +- replace the 'administrator' flag, as used by the management plugin, + with a more general 'user tags' mechanism. See + https://www.rabbitmq.com/man/rabbitmqctl.8.man.html#set_user_tags +- do not require 'configure' permissions for passive queue/exchange + declaration +- optimise of message delivery on channels with a basic.qos + prefetch limit that are consuming from many queues +- in 'rabbitmqctl list_channels', do not show the tx mode by default +- when a cluster 'degrades' to only containing ram nodes - through + 'rabbitmqctl' actions or node failure - display/log a warning. +- eliminate some spurious errors from the sasl log + +java client +----------- +enhancements +- allow response timeouts to be specified in the {Json}RpcClient +- introduce Channel.waitForConfirms() helper method, to make usage of + 'confirm' mode more convenient in common cases. +- re-introduce default constructor for BasicProperties +- cater for multiple listeners in all APIs +- eradicate use of impl types in public APIs +- make Tracer embeddable + +.net client +----------- +enhancements +- return the complete result of a QueueDeclare, rather than just the + queue name. +- introduce IModel.WaitForConfirms() helper method, to make usage of + 'confirm' mode more convenient in common cases. +- document 'confirms' in user guide + +management plugin +----------------- +bug fixes +- listing/inspecting queues with exclusive consumers would trigger a + 500 error +- lots of cookies would be created for recording implicit preferences +- /api/aliveness-test could return a 500 error instead of 401 +- fix off-by-one error in used file descriptor count on some + platforms, and gracefully deal with absence of 'lsof' command + +enhancements +- introduce a more advanced permissions model, allowing access to + information for monitoring purposes without the user needing to be a + rabbit administrator. See + https://www.rabbitmq.com/management.html#permissions +- simplify changing the URL; shorter default URL +- make the stats collection interval configurable, providing a way to + reduce the impact of stats collection on servers with many active + connections/channels/queues, and adjust the rate calculation + period. See + https://www.rabbitmq.com/management.html#statistics-interval +- in a cluster, make the management stats db highly available; it + automatically fails over to a different node +- get the management stats db to 'catch up' when it is started in a + cluster and there are existing nodes with queues etc +- report file descriptor counts on more platforms +- display message re-delivery rates +- show (mochi)web listeners +- handle encoding errors gracefully +- add an extension mechanisms - plug-ins for the management + plug-in. The first of these is rabbitmq-shovel-management which + displays status information of the rabbitmq-shovel plugin +- add fields for well-known arguments such as message TTL and alternate + exchange to queue and exchange forms + + +mochiweb plugin +--------------- +bug fixes +- on slow machines a timeout could occur during startup + +enhancements +- the '*' listener context no longer needs to be specified, thus + simplifying configuration + +auth-backend-ldap plugin +------------------------ +enhancements +- eliminate "undefined function" warning on startup + +shovel plugin +------------- +enhancements +- support guaranteed delivery with 'confirm' mode +- support the use of AMQP 0-9-1 methods in configuration + +STOMP plugin +------------ +bug fixes +- heartbeats were issued as a 0x0 byte instead of LF (0x0A) + +enhancements +- provide a way to send & subscribe to existing AMQP queues +- support temporary/reply queues +- support durable subscriptions +- set the default prefetch count for /queue destinations to + 'unlimited' instead of 1 +- optionally allow clients to omit the login & passcode in CONNECT + frames, using a configurable default user instead +- optionally allow clients to omit the CONNECT frame altogether + +For more details on all the above see the STOMP plugin documentation +at https://www.rabbitmq.com/stomp.html + +federation plugin +----------------- +First release of this plugin, which offers scalable publish / +subscribe messaging across WANs and administrative domains. See +http://hg.rabbitmq.com/rabbitmq-federation/file/default/README + +build and packaging +------------------- +bug fixes + +enhancements +- make Windows Start menu entries more easily identifiable/searchable +- stop producing the Windows bundle. The Windows installer has matured + sufficiently to take its place. +- employ the same convention for plugin app source files as rebar +- clean up some xref warnings in the plugin build + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply +install the new version. All configuration and persistent message data +is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install +the new version on all the nodes and follow these instructions: + https://www.rabbitmq.com/clustering.html#upgrading +All configuration and persistent message data is retained. + +To upgrade a non-clustered RabbitMQ from release 2.1.0, first upgrade +to 2.1.1 (which retains all data), and then to the current version as +described above. + +To upgrade a clustered RabbitMQ prior to 2.1.1 or a stand-alone broker +from releases prior to 2.1.0, if the RabbitMQ installation does not +contain any important data then simply install the new +version. RabbitMQ will move the existing data to a backup location +before creating a fresh, empty database. A warning is recorded in the +logs. If your RabbitMQ installation contains important data then we +recommend you contact rabbitmq-sales@pivotal.io for assistance with the +upgrade. diff --git a/release-notes/README-2.6.1.txt b/release-notes/README-2.6.1.txt new file mode 100644 index 0000000000..c87e93be0f --- /dev/null +++ b/release-notes/README-2.6.1.txt @@ -0,0 +1,59 @@ +Release: RabbitMQ 2.6.1 + +Release Highlights +================== + +server +------ +bug fixes +- the broker failed to (re)start on reboot on systems that keep + /var/run on a temporary file systems, e.g. Ubuntu. +- the Windows service failed to increase the Erlang process limit, + limiting the broker to a few thousand queues, connections and + channels. + +.net client +----------- +enhancements +- add the "headers" exchange to RabbitMQ.Client.ExchangeType + +management plugin +----------------- +bug fixes +- on a busy broker, /api/nodes could fail with a timeout, affecting + several management UI pages. + +topology visualiser +------------------- +First official release. See +https://www.rabbitmq.com/plugins.html#rabbitmq_management_visualiser + +STOMP plugin +------------ +enhancements +- trim whitespace from headers when speaking STOMP 1.0 + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply +install the new version. All configuration and persistent message data +is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install +the new version on all the nodes and follow these instructions: + https://www.rabbitmq.com/clustering.html#upgrading +All configuration and persistent message data is retained. + +To upgrade a non-clustered RabbitMQ from release 2.1.0, first upgrade +to 2.1.1 (which retains all data), and then to the current version as +described above. + +To upgrade a clustered RabbitMQ prior to 2.1.1 or a stand-alone broker +from releases prior to 2.1.0, if the RabbitMQ installation does not +contain any important data then simply install the new +version. RabbitMQ will move the existing data to a backup location +before creating a fresh, empty database. A warning is recorded in the +logs. If your RabbitMQ installation contains important data then we +recommend you contact rabbitmq-sales@pivotal.io for assistance with the +upgrade. diff --git a/release-notes/README-2.7.0.txt b/release-notes/README-2.7.0.txt new file mode 100644 index 0000000000..62da1f7b7a --- /dev/null +++ b/release-notes/README-2.7.0.txt @@ -0,0 +1,142 @@ +Release: RabbitMQ 2.7.0 + +Release Highlights +================== + +server +------ +bug fixes +- acknowledgements were not properly handled on transaction rollback +- could not declare a mirrored queue with a policy of "nodes" and an explicit + list of node names +- queues created by different client libraries could look inequivalent to the + broker, though they had equivalent properties +- queue process monitors were not removed correctly +- server start up could hang when trying to contact other Erlang nodes in some + network configurations +- on Windows some batch file variables might pass unescaped backslashes to the + broker, causing it to crash + +enhancements +- messages re-queued (as a result of a consumer dying, for example) have their + original order preserved +- in large queues under load, reduce length of time messages already on disk are + retained in memory +- on platforms which support the High Performance Erlang Compiler (HiPE), the + server can optionally (re)compile selected modules on startup for increased + run-time performance; see https://www.rabbitmq.com/configure.html +- the server automatically adapts to changes to virtual memory resources, and to + the memory high-watermark +- the rabbit logs are appended to on restart; log rotation is simplified +- improved synchronisation between rabbitmqctl and the server when stopping +- non-query actions initiated by rabbitmqctl are logged +- creating a connection is faster +- shutdown is more efficient, especially when there are many queues to delete +- concurrent message storage operations for many queues are more efficient +- durable queues are faster on first use, and faster to recover +- messages removed before being written to disk have the writes eliminated, + increasing message throughput under load +- performance improvements to queues with large numbers of consumers with + low prefetch counts +- internal flow control is more consistent +- various other general performance improvements + +clients +------- +bug fixes +- connection and channel closes in the clients had internal timeouts which + could expire prematurely and spoil the client's view of the channel state + +enhancements +- clients accept a new "amqp" URI scheme, which can describe all of the + information required to connect to an AMQP server in one URI; see + https://www.rabbitmq.com/uri-spec.html + +erlang client +------------- +bug fixes +- under some circumstances wait_for_confirms/1 could fail to return + +enhancements +- a connection timeout value can be set for Erlang client connections +- socket options may be specified on connection start + +java client +----------- +enhancements +- consumer callbacks, and channel operations are threadsafe; calls to channel + operations can be safely made from a Consumer method call; Consumer callback + work threads can be user-supplied +- channel or connection errors that refer to another method frame provide the + method's AMQP name (if it has one) in the error message + +.net client +----------- +bug fixes +- some client methods were not documented correctly + +plugins +------- +bug fixes +- HTTP-based plugins did not shut down correctly when stopped independently of + the Erlang VM + +enhancements +- plugins are included in the main rabbitmq-server release, simplifying server + configuration and upgrades; a new tool, rabbitmq-plugins, enables and + disables plugins; see https://www.rabbitmq.com/plugins.html +- rabbitmq_federation is no longer considered experimental +- new experimental plugin: rabbitmq_consistent_hash_exchange, useful for load + balancing very high message rates across multiple queues +- new experimental plugin: rabbitmq_tracing, a management UI for the firehose + +management plugin +----------------- +bug fixes +- queue details page failed to display on recent browsers (e.g. Firefox 6) for + High Availability queues + +enhancements +- more detailed global memory statistics shown +- "all configuration" is renamed to "definitions" to reduce confusion with + rabbitmq.config + +auth-backend-ldap plugin +------------------------ +enhancements +- the queries are extended to include attributes and allow pattern-matching + +mochiweb plugin +--------------- +enhancements +- the limit on upload size is increased to 100MB so that JSON-RPC channel can + publish larger messages + +STOMP adapter +------------- +bug fixes +- the STOMP adapter could crash when exceeding the memory high watermark + +build and packaging +------------------- +bug fixes +- on non-Windows platforms invoking rabbitmq as a daemon could leave standard + input and output streams permanently open + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-2.7.1.txt b/release-notes/README-2.7.1.txt new file mode 100644 index 0000000000..1f56d1570c --- /dev/null +++ b/release-notes/README-2.7.1.txt @@ -0,0 +1,105 @@ +Release: RabbitMQ 2.7.1 + +Release Highlights +================== + +server +------ +bug fixes +- long-running brokers could crash due to global unique identifiers not being + unique enough +- leader election of mirrored queues could fail when using confirms +- there was a slow memory leak in HA queues with persistent and confirmed + messages +- when using HA queues with policy of 'nodes', leader replica didn't recover + properly +- HA queues could fail when nodes were restarting frequently +- broker sometimes hung when closing channels and connection from multiple + threads +- queue equivalence check did not properly detect different arguments under + some circumstances +- the broker sometimes hung when recovering queues on startup +- 'rabbitmqctl list_connections' could return incomplete information +- broker-generated queue names did not conform to AMQP syntax rules +- a (harmless) warning was emitted when running under Erlang R15B + +enhancements +- deletion of exchanges or queues with many bindings is more efficient +- 'rabbitmqctl eval ' evaluates arbitrary Erlang expressions in the + broker node + +java client +----------- +bug fixes +- resources were not recovered if ConnectionFactory failed to connect +- defaults for the ConnectionFactory class were not public +- part of the Java client API was hidden, causing application build errors +- interrupts were mishandled in the Java threading logic + +.net client +----------- +bug fixes +- session autoclose could fail with AlreadyClosedException + +plugins +------- +bug fixes +- consistent-hash-exchange mis-routed messages when handling multiple exchanges + +management plugin +----------------- +bug fixes +- statistics database could remain down after nodes were restarted +- broker could fail to start if clients attempt to connect before the + management plugin is fully started +- management plugin could fail to start if there were strange permissions + in /proc +- overview could sometimes crash when another node starts up or shuts down +- HA mirror synchronisation could sometimes be misrepresented on the + management UI +- encoding of underscore in URL properties was incomplete +- management interface could break if there were html syntax characters in names +- shovels were not displayed if they were in an undefined state + +enhancements +- rate of change of queue lengths added to the management API and UI +- improvements to shovel information formatting + +auth-backend-ldap plugin +------------------------ +bug fixes +- made compatible with Erlang R15B +enhancements +- accept a broader class of group objects on in_group filter + +STOMP adapter +------------- +bug fixes +- duplicate headers were generated in some MESSAGE frames +- temporary reply-to queues were not re-usable +- made compatible with Erlang R15B + +build and packaging +------------------- +bug fixes +- rabbitmq-server Mac OS X portfile was incorrectly built +- maven bundle for Java client was not published to maven central + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact for +assistance with the upgrade. diff --git a/release-notes/README-2.8.0.txt b/release-notes/README-2.8.0.txt new file mode 100644 index 0000000000..ace510e875 --- /dev/null +++ b/release-notes/README-2.8.0.txt @@ -0,0 +1,202 @@ +Release: RabbitMQ 2.8.0 + +Release Highlights +================== + +server +------ +bug fixes +- reduce idle CPU usage when there are lots of mirrored queues +- fix a rare bug which could cause the server to stop accepting connections +- ensure starting a ram node when all disk nodes are down fails, instead + of creating a blank ram node +- fix a race in mirrored queues where one node could run two mirrors +- improve internal accounting of file descriptors; make it harder to hit the + limit unexpectedly +- rabbitmqctl fixed on R15B +- fix race condition leading to monitoring other cluster nodes twice +- leave the Erlang distributed system, not just Mnesia, when resetting +- more consistent handling of RABBITMQ_* environment variables + +enhancements +- dead lettering - queues can specify an exchange to which messages should be + redirected when they are rejected or expire +- internal flow control to limit memory use and make performance more + predictable if the server is overloaded +- fsync after Mnesia transactions to ensure recently-created queues, exchanges + are not lost in the event of an unexpected shutdown +- much more eager fsync when persistent messages are published without + confirms / transactions leading to far fewer messages lost in the event + of an unexpected shutdown +- server no longer fails to start when a durable exchange is declared using + an exchange type plugin which is subsequently disabled. Instead the exchange + exists but routes no messages +- better OpenBSD support (thanks to Piotr Sikora) +- basic.reject and basic.nack now respect transactions +- rabbitmq-echopid.bat introduced: allows obtaining the server PID on Windows +- the start of logging configuration: initially just for per-connection logging +- set SO_LINGER to 0 to prevent file descriptors being used by closed + connections +- improve error reporting when AMQP ports are already used by non-RabbitMQ + brokers +- improve error reporting when Mnesia times out waiting for tables +- consistent naming of connections and channels across rabbitmqctl and the + management plugin +- file descriptor statistics added to "rabbitmqctl status" +- more robustness if rabbitmq-plugins cannot parse the enabled plugins file +- don't start external cpu_sup process; we don't need it + +performance improvements +- consuming has smarter flow control, leading to performance improvements in + many cases +- deleting queues with many bindings to topic exchanges is no longer + O(binding_count^2) +- message ID generation is somewhat faster + + +packaging +--------- +bug fixes +- debian: add build dependency on erlang-nox +- debian / rpm: don't start the server with "su", fixing inability to + shut down seen on Ubuntu +- macports: fix plugins showing version as "0.0.0" +- macports: create configuration directory if it does not already exist +- windows: INSTALL file now contain Windows-style line endings + +enhancements +- generic unix tarball: by default locate all log / db / conf files within + the unpacked tarball, simplifying installation + + +erlang client +------------- +bug fixes +- fix "make documentation" + +enhancements +- wait_for_confirms() can now take a timeout + + +java client +----------- +bug fixes +- fix memory leak when channels were closed on a connection that stays open +- fix display of message headers and content in the tracer +- fix hang in ConnectionFactory when the first frame from the server is never + received +- fix NullPointerException at ConsumerDispatcher.java:91 + +enhancements +- waitForConfirms() can now take a timeout +- allow use of Java arrays in AMQP arrays (e.g. for arguments and headers) +- don't depend on org.apache.commons classes except for tests +- fire channel shutdown listeners on connection shutdown +- show fractional message rates in MulticastMain +- show aggregated producer rates in MulticastMain + + +.net client +----------- +bug fixes +- don't try to close the socket more than once if a heartbeat is missed + +enhancements +- WaitForConfirms() can now take a timeout + + +management plugin +----------------- +bug fixes +- fix overview page in MSIE +- escape HTML entities properly in the web UI +- fix incorrect display of mirrored queues as unsynchronised after database + failover +- give sensible error if user tags field is missing +- fix [Admin] etc links which were broken in some browsers +- fix wrong date in "last updated" in the web UI + +enhancements +- add separate form to update users +- add option to import file of entity definitions at startup +- publish messages from the queue details page of the web UI +- make "exchange type" into a select box in the web UI +- show the connection heartbeat more clearly in the web UI + + +json-rpc plugin +--------------- +bug fixes +- fix memory leak in ETS + + +rabbitmqadmin +------------- +bug fixes +- fix "rabbitmqadmin get" +- display array info-items correctly +- allow specifying node for queue declaration + +enhancements +- configuration file for connections (thanks to Massimo Paladin) + + +federation plugin +----------------- +enhancements +- allow the queue declared upstream to be mirrored + + +STOMP plugin +------------ +bug fixes +- fix invalid MESSAGE Frames for reply-to temporary queues +- fix non-UTF-8 durable topic subscription queue names +- behave sensibly on death of the internal AMQP connection / channel +- prevent an infinite loop when implicit connect enabled with an invalid + username / password +- allow more than one SSL handshake to happen at once + +enhancements +- support client login via SSL certificate, similar to + rabbitmq_auth_mechanism_ssl for AMQP +- performance improvement: don't declare a queue on every publish +- support the server's new flow control mechanism +- add "server" field to the "CONNECTED" frame + + +auth backend LDAP plugin +------------------------ +enhancements +- optionally look up a user's DN after binding - useful for Microsoft + Active Directory +- remove build time dependency on nmap +- allow queries to run as the user we bound as + + +auth mechanism SSL plugin +------------------------- +bug fixes +- don't blow up if a certificate contains more than one Common Name + +enhancements +- support obtaining the user name from the certificate's Distinguished Name + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-2.8.1.txt b/release-notes/README-2.8.1.txt new file mode 100644 index 0000000000..73adfbd9b8 --- /dev/null +++ b/release-notes/README-2.8.1.txt @@ -0,0 +1,41 @@ +Release: RabbitMQ 2.8.1 + +Release Highlights +================== + +server +------ +bug fixes +- fixed cluster upgrades for RAM nodes + + +packaging +--------- +bug fixes +- remove use of runuser for the SUSE RPM +- package rabbitmq-echopid.bat on Windows + + +management plugin +----------------- +bug fixes +- fixed web UI for users with only the 'management' tag + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-2.8.2.txt b/release-notes/README-2.8.2.txt new file mode 100644 index 0000000000..616d04b4ec --- /dev/null +++ b/release-notes/README-2.8.2.txt @@ -0,0 +1,106 @@ +Release: RabbitMQ 2.8.2 + +Release Highlights +================== + +server +------ +bug fixes +- memory leak on basic.reject{requeue = false} +- queue failure when dead-lettering a message which has been paged to disc +- memory leak with dead-letter cycles and HA queues +- possible message loss with dead-lettered messages and HA queues at broker + shutdown +- HA mirror queue crash on basic.reject{requeue = false} +- HA mirror queue crash with dead-letter cycle +- messages might incorrectly not expire if consumed immediately and then + requeued +- message acks might be lost if sent immediately before channel closure +- dead-lettering a large number of messages at once was very slow +- memory leak when queue references a DLX that does not exist +- fix startup in FreeBSD jail without IPv6 support (thanks to Mattias Ahlbäck) +- error logged by mirrored queue supervisor on shutdown + +enhancements +- disc space monitoring and blocking, similar to the existing memory monitoring +- substantially improve performance publishing large messages +- improve performance delivering small messages +- improve performance of routing via the default exchange +- allow x-message-ttl to be set to 0 (useful as an alternative to + immediate-mode publish) +- ensure unacked messages have been requeued by the time channel.close_ok is + received +- remove non-free RFC from source package (Debian bug #665793) + + +packaging +--------- +bug fixes +- Debian: provide a mechanism to change the FD limit +- Debian: don't delete the rabbitmq user when removing package (#663503, + #620799, #646175) +- Debian: use lsb-base functions in init script (#663434) + + +java client +----------- +bug fixes +- RpcClient used the platform default encoding instead of UTF-8 +- waitForConfirms returned true even if basic.nack received + +enhancements +- MulticastMain supports option to multi-ack every N messages + + +erlang client +------------- +bug fixes +- crash on shutdown of AMQP connection + + +management plugin +----------------- +bug fixes +- management plugin could miss queue deletion events in some crash scenarios +- dependency on xmerl was not declared + +enhancements +- show a large warning when running a cluster with mixed RabbitMQ / Erlang + versions + + +federation plugin +----------------- +bug fixes +- leak of direct connections when federation links failed to start up + +enhancements +- prevent messages which have reached max_hops from being transmitted one + additional time, using a custom upstream exchange +- link status reporting, similar to that provided by rabbitmq-shovel, from + the command line and management plugin + + +STOMP plugin +------------ +bug fixes +- "destination" header on MESSAGE did not match that used on SEND + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-2.8.3.txt b/release-notes/README-2.8.3.txt new file mode 100644 index 0000000000..e004151dec --- /dev/null +++ b/release-notes/README-2.8.3.txt @@ -0,0 +1,89 @@ +Release: RabbitMQ 2.8.3 + +Release Highlights +================== + +server +------ +bug fixes +- several fixes to communication protocol underlying HA queues +- memory leak deleting HA queues +- rotating logs loaded the entire log file into memory +- queues with many busy consumers could refuse to accept publishes until empty +- stale transient queue information could be left behind when a node restarted + quickly +- additional cluster nodes that started with insufficient disk space would + never accept connections even after disk space increased +- rabbitmqctl displayed non-ASCII characters incorrectly in some error + messages +- disk space monitoring on non-English versions of Windows did not work +- RABBITMQ_PLUGINS_DIR could not be set on Windows + +enhancements +- set default disk space limit to 1GB since many users were running into the + previous default limit of {mem_relative, 1.0} when running RabbitMQ for + the first time + + +packaging +--------- +bug fixes +- Debian: uninstalling failed if broker was stopped +- Debian: server process was not child of init, leading it to get closed in + certain situations + +enhancements +- Debian: emit upstart events + + +java client +----------- +enhancements +- improved performance with SSL + + +erlang client +------------- +bug fixes +- code_change/3 did not return {ok, State} in many places breaking + applications that use code reloading and the Erlang client +- spurious function_clause error in logs when SSL connection closed abruptly + under R15B0x + + +federation plugin +----------------- +enhancements +- set default prefetch count to 1000, rather than unlimited, to ensure there + is flow control on federation links + + +management plugin +----------------- +bug fixes +- rare race condition that could cause management DB failover to fail + + +STOMP plugin +------------ +bug fixes +- last message of a burst may not be received when flow control is active + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-2.8.4.txt b/release-notes/README-2.8.4.txt new file mode 100644 index 0000000000..ee08042163 --- /dev/null +++ b/release-notes/README-2.8.4.txt @@ -0,0 +1,30 @@ +Release: RabbitMQ 2.8.4 + +Release Highlights +================== + +server +------ +bug fixes +- log file rotation when no suffix was specified could lead to the log file + growing rapidly +- rabbitmq-plugins.bat did not work + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-2.8.5.txt b/release-notes/README-2.8.5.txt new file mode 100644 index 0000000000..7cfad51e55 --- /dev/null +++ b/release-notes/README-2.8.5.txt @@ -0,0 +1,47 @@ +Release: RabbitMQ 2.8.5 + +Release Highlights +================== + +server +------ +bug fixes +- unnecessary CPU utilisation no longer occurs in the presence of large + numbers of idle HA queues +- rapidly declaring and then deleting HA queues no longer crashes the master +- fixed a race condition in handling node down signals, that could result in + HA queues failing to restart when bringing a follower replica (mirror) back online +- channels no longer crash when detecting nodes that have gone offline +- rabbitmqctl no longer garbles error messages when rendering non-ASCII + characters +- the installer now places the .erlang.cookie file in %HOMEDRIVE%%HOMEPATH% + on Windows, so that %USERPROFILE% can be safely relocated + +STOMP plugin +------------ +bug fixes +- fixed a bug in the test suite that was failing to check for the expected + number of receipts before checking if a message had arrived successfully + +jsonrpc-channel plugin +---------------------- +bug fixes +- updated to support the latest versions of rfc4627 and Mochiweb + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-2.8.6.txt b/release-notes/README-2.8.6.txt new file mode 100644 index 0000000000..ea2f234756 --- /dev/null +++ b/release-notes/README-2.8.6.txt @@ -0,0 +1,64 @@ +Release: RabbitMQ 2.8.6 + +Release Highlights +================== + +server +------ +bug fixes +- ensure shutdown of mirrored queue nodes is recorded correctly +- removed unsupported plugins added in 2.8.5 (old-federation, sockjs-erlang, + cowboy, web-stomp and web-stomp-examples) +- removing RAM nodes from a cluster no longer leads to inconsistent state + on disk nodes (which previously failed to notice the RAM nodes' departure) +- reap TTL-expired messages promptly +- correct reporting of the vm_memory_high_watermark +- reduce likelihood of node name collision on Windows due to non-randomness + of %RANDOM% + + +erlang client +------------- +bug fixes +- correctly account for file handles consumed by outgoing network connections + when running as a plugin + + +management plugin +----------------- +bug fixes +- prevent publishing a message with non-binary content + + +shovel plugin +------------- +bug fixes +- guarantee that reconnect attempts continue if a failure occurs during + connection establishment + + +federation plugin +----------------- +bug fixes +- guarantee that links continue to attempt reconnecting if a failure occurs + during connection establishment +- report status correctly in the event of unexpected failure + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-2.8.7.txt b/release-notes/README-2.8.7.txt new file mode 100644 index 0000000000..eb6a9281a5 --- /dev/null +++ b/release-notes/README-2.8.7.txt @@ -0,0 +1,70 @@ +Release: RabbitMQ 2.8.7 + +Release Highlights +================== + +server +------ +bug fixes +- fix race condition that could stop mirrored queue from sending further + confirms, and cause it to leak memory +- fix bug that prevented confirms from mirrored queues when x-message-ttl + was set to zero +- fix mirror synchronisation detection logic in mirrored queues +- fix possible deadlock during broker shutdown +- fix resource leak when declaring many short-lived mirrored queues with + different names +- fix DOS vulnerability possible by malicious SSL clients +- make disk free space reporting more intelligible + +performance improvements +- reduce unnecessary fsync operations when deleting non-durable resources +- mirror nodes of mirrored queues now pro-actively persist acks and messages on + a timer with a sensible interval + + +packaging +--------- +bug fixes +- ensure source packages can be built without network access + + +erlang client +------------- +bug fixes +- ensure management plugin is notified when connections fail as soon as + they are opened + +enhancements +- offer configuration flag for ipv4 / ipv6 preference + + +management plugin +----------------- +bug fixes +- prevent management plugin from crashing nodes when failing over + + +STOMP plugin +------------ +bug fixes +- fix bug that caused alarms (e.g. disk free space checking) to turn off + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.0.0.txt b/release-notes/README-3.0.0.txt new file mode 100644 index 0000000000..f28b5b8408 --- /dev/null +++ b/release-notes/README-3.0.0.txt @@ -0,0 +1,244 @@ +Release: RabbitMQ 3.0.0 + +server +------ +bug fixes +25195 prevent mirror being promoted before it has received all + messages from dying master, which subsequently caused it to crash +25202 fix race at mirror startup causing process leak and other problems +25216 prevent excessive memory use when recovering large durable queues +25226 prevent mirrors leaking memory when using persistence and confirms +25260 ensure messages that expire while the broker is stopped are + dead-lettered correctly +25198, 25185, 25200 ensure "redelivered" flag set correctly on HA + queue failover +25053 ensure statistics event emission does not prevent fsync +25215 ensure rapid declaration of many mirrored queues does not overload + Mnesia +25000 don't write a PID file when -detached is specified as it will + not be right +25263 fix channel number in error message if rabbit_writer crashes +25295, 25297 fix a couple of small memory leaks in rabbit_channel when + one channel sees many queues deleted + +enhancements +24991 correctly enforce AMQP frame_max. Note that some buggy clients + do not frame messages correctly; as of 3.0.0 these clients + will be rejected if they attempt to send a message large than + frame_max (by default 128k). +24908 allow queue mirroring to be defined by broker-wide policy, not + queue declaration, and add "exactly" mode +24196 dynamic runtime configuration mechanism (parameters) +24914 rewrite of rabbitmqctl clustering commands for greater user + friendliness +24915 background GC for idle processes, preventing excessive memory use +19376 support per-message TTL +25110 provide more detailed statistics on broker memory use (reported + in 'rabbitmqctl status') +25227 provide information if a network partition has occurred + (reported in 'rabbitmqctl cluster_status') +24792 improve plugin startup procedure: + - "rabbitmqctl wait" will not return until plugins have started + - Windows service users no longer need to reinstall service + after enabling plugins +24971 enable heartbeats by default +24719 ensure broker starts and rabbitmq-plugins works when plugin + dependencies are missing +25164 give better error message when attempting to use a queue which + is on a down node +25086 improve error reporting for framing errors +25262 sort the output of rabbitmqctl list_* +23935 reverse DNS lookups for connection info items (disabled by + default, see the 'reverse_dns_lookup' configuration item) +25193 expose count of non-blocked consumers as a queue info item +24998 make memory / disk alarms easier to spot in log files +24956 provide better log messages when heartbeat timeouts occur +24919 check flags passed to rabbitmqctl match the subcommand +25244 cope if clients set malformed "x-death" headers +24867 reject attempts to declare queues with x-expires or + x-message-ttl greater than 2^32 milliseconds since this will + not work + +feature removal +23896 remove support for AMQP's "immediate" publish mode + +performance improvements +25145 greatly improve performance of mirrored queues +24974 improve performance of SSL when using HiPE compilation +24888 improve performance of bulk dead-lettering + + +packaging +--------- +bug fixes +21413 follow specifications better for init script on RPM distros + + +management plugin +----------------- +bug fixes +25048 ensure queue synchronisation is always shown correctly +25149 move management port out of the ephemeral range (which could + result in the management plug-in failing to start). The new + default port is 15672, with a redirect in place from 55672. +25220 allow bindings with arguments containing AMQP tables and arrays +23225 correctly display network traffic statistics for connections + which do nothing but receive autoack messages +25151 fix sorting by and selection of queue/exchange arguments + +enhancements +25232 provide branded login screen and logout button +24830 allow argument types to be selected in the web UI +24859 add global counts of various objects +24949 more flexible top-level navigation in the web UI +25218 make binding display on exchange/queue details page clearer +25135 show abbreviated client properties in web UI connection list +25259 simplify management listener configuration +24916 make the statistics database hibernate when idle, thus reducing + memory use +24932 improve responsiveness of the statistics database on a heavily + loaded broker +25148 clearer error message when the management port is in use at startup +24967 web UI help texts link to the website for more information +24983 clearer error message when rabbitmqadmin is run against + an incompatible Python version +25209 make rabbitmqadmin work when passed through 2to3 (thanks to Alan + Antonuk) + + +federation plugin +----------------- +bug fixes +24856 prevent bindings from propagating too far and leaking in the + presence of upstream cycles +25166 eliminate delays in broker shut down on disturbed networks +25022 don't crash on consumer cancellation notification + +enhancements +23908 allow addition and removal of upstreams while the broker is running +24826 allow federation of normal exchanges, remove "x-federation" exchange + type +24695 specify upstreams using amqp:// URIs +23903 allow passing through user-id from trusted upstreams +25029 improve consistency of federation nomenclature +25244 cope if clients set malformed "x-received-from" headers + + +old-federation plugin +--------------------- +24822 new (old) plugin: a backported version of the federation + plugin from 2.8.7. + + +shovel plugin +------------- +bug fixes +25166 eliminate delays in broker shut down on disturbed networks +25022 don't crash on consumer cancellation notification + +enhancements +25049 remove dependency on Erlando + + +STOMP plugin +------------ +bug fixes +25045 don't drop subscriptions on consumer cancellation notification +25067 prevent header without colon from breaking all subsequent headers +24623 allow ACK to be sent after UNSUBSCRIBE + +enhancements +25196 set AMQP reply-to header sensibly when using temporary queues +25235 STOMP version 1.2 support +25036 log various flavours of authentication failure distinctly +25140 ensure all AMQP message properties are mapped to STOMP and vice- + versa + +performance improvements +24872 improve performance reading non-tiny messages from the socket +24968 improve performance reading large messages with content-length + header + + +MQTT plugin +----------- +25025 new plugin: implement Message Queue Telemetry Transport version 3.1 + + +Web-STOMP plugin +------------ +24468 new plugin: STOMP to the browser over websockets with SockJS + fallback + + +JSON-RPC channel plugin +----------------------- +enhancements +25282 ensure the plugin is dfsg-free +25149 move JSON-RPC port out of the ephemeral range (to 15670) +25259 simplify JSON-RPC listener configuration + + +LDAP plugin +----------- +bug fixes +25089 make {other_bind, as_user} work properly in non-AMQP contexts + (management, STOMP, etc.) + +enhancements +25169 allow use of in_group test when the attribute to be checked is + not called "member" +24677 substantially improve logging for debugging LDAP queries + + +java client +------------- +bug fixes +24910 prevent DefaultExceptionHandler.handleChannelKiller from + closing connection when it shouldn't + +enhancements +24527 include an automated performance measuring tool (PerformanceMain) +20709 eliminate Javadoc warnings + + +.net client +------------- +bug fixes +25255 ensure BaseConnection#Dispose does not hang + +enhancements +23747 allow configuration of the underlying socket (thanks to Tomasz Zuber) +25092 set first failed connection as the inner exception to + BrokerUnreachableException, thus improving exception display + + +erlang client +------------- +bug fixes +25108 fix connection supervision: amqp_connection_type_sup should not + be transient + +enhancements +25057 provide functions to unregister handlers +25034 remove some generically named -define()s from amqp_client.hrl, + which could clash with other applications + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.0.1.txt b/release-notes/README-3.0.1.txt new file mode 100644 index 0000000000..167cf45871 --- /dev/null +++ b/release-notes/README-3.0.1.txt @@ -0,0 +1,66 @@ +Release: RabbitMQ 3.0.1 + +server +------ +bug fixes +25305 fix leak when dead-lettering to an exchange which does not route to queues +25309 fix {badmatch,false} when queue is deleted as mirroring policy changes +25340 fix performance degradation when using small numbers of outstanding + confirms with mirrored queues +25301 fix messages with per-message TTL not expiring under some circumstances +25351 increase robustness when calculating memory use by plugins + +enhancements +25335, 25330 allow mixed patch versions of RabbitMQ in a cluster + + +management plugin +----------------- +bug fixes +25348 fix web UI breakage for users with "management" tag +25300 fix JSON encoding error listing non-AMQP connections +25325 fix web UI links when filtering by virtual host +25346 fix parameter and policy names missing from definitions export +25326 [MSIE] fix policies listing page when more than 1 vhost exists +25304 [MSIE] fix "Add policy" and "Add upstream" buttons +25352 [MSIE] fix "Add user" and "Update user" buttons when a tag link has + been clicked +25320 fix misleading error message when administrator has no permissions +25321 fix invisible update of queue policy changes that had no effect + + +web plugin support +------------------ +bug fixes +25318 issue well-formed Location header when redirecting to another port + + +erlang client / shovel plugin / federation plugin +------------------------------------------------- +bug fixes +25331 prevent deadlock when starting connection during application shutdown + + +tracing plugin +-------------- +bug fixes +25341 fix failure of rabbitmqctl status when tracing plugin enabled + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.0.2.txt b/release-notes/README-3.0.2.txt new file mode 100644 index 0000000000..fd9ffcc076 --- /dev/null +++ b/release-notes/README-3.0.2.txt @@ -0,0 +1,88 @@ +Release: RabbitMQ 3.0.2 + +server +------ +bug fixes +25422 fix race causing queues to crash when stopping mirroring +25353 fix issue preventing idle queues from hibernating sometimes +25431 fix compilation on Erlang R16A +25420 fix issue causing crash at startup if another node reports Mnesia + starting or stopping +25360 fix race allowing channel commands to be sent after connection.close-ok +25412 fix race allowing channel commands to be sent after server has closed + a channel +25378 fix broken error reporting for rabbitmqctl + + +STOMP plugin +------------ +bug fixes +25362 only add /reply-queue prefix in reply-to header when replying to a + temporary queue + + +consistent hash exchange plugin +------------------------------- +bug fixes +25403 clean up Mnesia resources correctly on exchange deletion + + +management plugin +----------------- +bug fixes +25401 fix error reporting for some broken policy declarations +25413 prevent read access to /api/connections//channels for + non-monitoring users +25335 fix rabbitmqadmin bash completion when extglob mode is switched off + in the shell + + +management visualiser plugin +---------------------------- +bug fixes +25387 fix broken RabbitMQ logo + + +shovel-management plugin +------------------------ +bug fixes +25410 fix breakage when shovel application is stopped manually + + +web-STOMP plugin +---------------- +bug fixes +25359 prevent rabbitmqctl status from killing web-STOMP connections +25357 update SockJS-Erlang to 0.3.4, fixing SockJS issue #41 (fix a traceback + when websocket is slow or busy) + + +JSON-RPC plugin +--------------- +bug fixes +25347 fix hang of rabbitmqctl status when JSON-RPC plugin enabled + + +.NET client +----------- +bug fixes +25389 send 0-9-1 header rather than 0-9 header when AMQP 0-9-1 is selected + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.0.3.txt b/release-notes/README-3.0.3.txt new file mode 100644 index 0000000000..4d19924602 --- /dev/null +++ b/release-notes/README-3.0.3.txt @@ -0,0 +1,55 @@ +Release: RabbitMQ 3.0.3 + +server +------ +bug fixes +25457 fix connection failure to start reading again in rare circumstances + when coming out of flow control +25419 ensure invocation of "rabbitmqctl stop_app" during server startup + on a fresh node does not leave a corrupted Mnesia schema +25448 ensure messages expire immediately when reaching the head of a queue + after basic.get +25456 ensure parameters and policies for a vhost are removed with that vhost +25465 do not log spurious errors for connections that close very early +25443 ensure "rabbitmqctl forget_cluster_node" removes durable queue records + for unmirrored queues on the forgotten node +25435 declare dependency on xmerl in rabbit application + + +Windows packaging +----------------- +bug fixes +25453 make rabbitmq-plugins.bat take note of %RABBITMQ_SERVICENAME% + + +management plugin +----------------- +bug fixes +25472 clean up connection and channel records from nodes that have crashed +25432 do not show 404 errors when rabbitmq_federation_management + is installed and rabbitmq_federation is not + + +mqtt plugin +----------- +bug fixes +25469 ensure the reader process hibernates when idle + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.0.4.txt b/release-notes/README-3.0.4.txt new file mode 100644 index 0000000000..2e3e8af6f2 --- /dev/null +++ b/release-notes/README-3.0.4.txt @@ -0,0 +1,25 @@ +Release: RabbitMQ 3.0.4 + +federation plugin +----------------- +bug fixes +25483 prevent x-received-from header from leaking upstream credentials + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.1.0.txt b/release-notes/README-3.1.0.txt new file mode 100644 index 0000000000..8559d80e90 --- /dev/null +++ b/release-notes/README-3.1.0.txt @@ -0,0 +1,173 @@ +Release: RabbitMQ 3.1.0 + +server +------ +bug fixes +25524 fix memory leak in mirror queue mirror with many short-lived publishing + channels +25518 fix handling of certain ASN.1 fields in SSL certificates +25486 ensure we handle cross cluster resource alarms after a partition +25490 limit frequency with which the server invokes "df" or "dir" to + measure disc use +25491 ensure we detect partitions in an idle cluster +25367 throttle in a more timely manner when reading large messages and + resource alarm goes off +25535 correctly report failure when user with no password attempts + password-based login +25463 fix logging of authentication mechanism on login failure +25385 check equivalence for dead-lettering related arguments + +enhancements +24407 manual eager synchronisation of mirrors +25418 automatic eager synchronisation of mirrors by policy +25358 cluster "autoheal" mode to automatically choose nodes to restart + when a partition has occurred +25358 cluster "pause minority" mode to prefer partition tolerance over + availability +19375 add x-max-length argument for queue length limits +25247 allow "nodes" policy to change queue master +25107 permit dead-letter cycles +25415 return total number of consumers in queue.declare-ok, not "active" ones +24980 cut down size of stdout banner, ensure everything goes to logs +25474 ensure partitions warning clears without needing to stop the + winning partition +25488 allow exchange types plugins to validate bindings +25512 improve robustness and correctness of memory use detail reporting +25501 allow plugins to implement new ha-modes +25517 more cross-cluster compatibility checks at startup +25513 support debugging for heavyweight gen_server2 state + +performance improvements +25514 performance improvements in message store garbage collection +25302 performance improvements in mirrors when consuming +25311 performance improvements requeuing persistent messages +25373 memory-use improvement while fetching messages +25428 memory-use improvement in queue index +25504 25327 performance improvements in dead lettering +25363 25364 25365 25366 25368 25369 25371 25386 25388 25429 + various minor performance improvements + + +management plugin +----------------- +bug fixes +25290 fix per-queue memory leak recording stats for mirror queue mirrors +25526 ensure single-object API queries support ?columns= in query string + +enhancements +23378 retain historical statistics, plot charts, show statistics per vhost, + improve performance of overview page, ensure message counters are + monotonic +24114 ignore incoming statistics if the statistics database is overwhelmed +23625 performance improvements when listing many queues +23382 filter lists in the web UI +25408 allow specification of arguments when declaring with rabbitmqadmin +23438 allow admin to specify a reason when closing a connection +25322 add "--version" support to rabbitmqadmin + + +federation plugin +----------------- +bug fixes +24223 handle basic.nack if sent by the server + +enhancements +25406 allow specification of multiple URLs in an upstream for failover +25433 allow choice of acknowledgement mode, permitting faster but less + reliable delivery + + +old-federation plugin +--------------------- +feature removal +25484 remove the old-federation plugin which shipped with RabbitMQ 3.0.x + + +shovel plugin +------------- +enhancements +24850 support failover when running in a cluster + + +Web-STOMP plugin +---------------- +enhancements +25333 update stomp.js library to support STOMP 1.1 (thanks to Jeff Mesnil) + + +AMQP 1.0 plugin +--------------- +25381 new plugin: initial support for AMQP 1.0 + + +STOMP plugin +----------- +bug fixes +25464 more graceful handling of connection abort while opening +25466 don't crash when SENDing to /temp-queue + + +MQTT plugin +----------- +bug fixes +25464 more graceful handling of connection abort while opening +25487 do not break "rabbitmqctl status" if MQTT plugin is enabled + + +consistent hash exchange +------------------------ +enhancements +25392 allow hashing on something other than routing key + + +packaging +--------- +enhancements +25271 new standalone release tarball for OS X +25497 add extra architectures to the apt repository +25519 allow debian packages to depend on esl-erlang +25002 merge contents of private umbrella into public one and remove private +25339 move rabbitmq-test to its own repository + + +java client +----------- +bug fixes +25509 ensure channel numbers do not get reused before the server has finished + with them + +enhancements +25356 make Channel.waitForConfirms(long) throw exception if confirm mode is + not selected +24675 add support for existing exchanges / queues to MulticastMain + + +erlang client +------------- +bug fixes +25502 fail reasonably when attempting to connect to a server that does not + speak AMQP 0-9-1 + +enhancements +25377 remove "there is no confirm handler" warnings +25503 don't allow client to negotiate frame sizes > 64Mb since it does not + support them + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.1.1.txt b/release-notes/README-3.1.1.txt new file mode 100644 index 0000000000..88b06eca48 --- /dev/null +++ b/release-notes/README-3.1.1.txt @@ -0,0 +1,64 @@ +Release: RabbitMQ 3.1.1 + +Release Highlights +================== + +server +------ +bug fixes +25545 relax validation of x-match binding to headers exchange for + compatibility with brokers < 3.1.0 +25561 fix bug in ack handling for transactional channels that could + cause queues to crash +25560 fix race condition in cluster autoheal that could lead to nodes + failing to re-join the cluster +25546 fix crash when setting a prefetch count multiple times on the + same channel +25548 fix vhost validation when setting policies and/or parameters +25549 fix x-expires handling after last consumer disconnects +25555 tighten up validation of HA-related policies + + +shovel plugin +------------- +bug fixes +25542 fix handling of default reconnect_delay + + +management plugin +----------------- +bug fixes +25536 set auth header correctly when downloading definitions +25543 set message_stats to the correct value when empty + + +federation-management-plugin +---------------------------- +bug fixes +25556 allow multiple URIs to be specified against an upstream + + +.NET client +------------- +bug fixes +25558 fix a bug that could lead to duplicate channel IDs being allocated, + causing a connection failure + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.1.2.txt b/release-notes/README-3.1.2.txt new file mode 100644 index 0000000000..622383eb38 --- /dev/null +++ b/release-notes/README-3.1.2.txt @@ -0,0 +1,90 @@ +Release: RabbitMQ 3.1.2 + +Release Highlights +================== + +server +------ +bug fixes + +25636 fix startup failure when using SSL with Erlang/OTP R16B01 +25571 fix potential deadlock in application shutdown handling (since 2.1.0) +25567 fix queue crash requeuing in-memory messages (since 2.7.0) +25599 fix queue record leak of exclusive durable queues after forceful + shutdown (since 3.0.1) +25576 fix bug in queue index where a broker crash between segment + deletion and journal truncation could prevent the broker from + subsequently starting (since 2.0.0) +25615 fix duplicate mirror queue mirrors starting on a single node (since 2.6.0) +25588 ensure per-message-TTL is removed when messages are dead-lettered + (since 3.0.0) +25575 fix bug handling empty rabbit_serial leading to startup failure + (since 1.7.0) +25640 fix channel crash with a race between basic.ack and basic.cancel + when prefetch >= 1 (since 3.1.0) +25638 fix leak affecting HA/mirrored queues (since 3.0.0) +25611 improve stack traces when message store crash occurs +25612 fix crashing processes when stopping node as part of a cluster + (since 2.4.0) + + +stomp plugin +------------- +bug fixes +25564 fix handling of reply-to for non-temporary queue destinations + (since 3.1.0) +25566 allow unescaped colons in header values for STOMP 1.0 compatibility + (since 3.0.0) + + +management plugin +----------------- +bug fixes +25592 fix bug allowing unprivileged users to see stats for all vhosts + (since 3.1.0) +25600 fix consumer record leak in the management database (since 2.2.0) +25629 fix memory leak in the presence of long-lived channels and + short-lived queues (since 3.1.0) +25580 fix bug preventing definitions file from loading if it contained + a policy from a non default vhost (since 3.1.1) + + +LDAP plugin +----------- +bug fixes +25573 fix garbled login failure errors (since 2.3.0) + + +Java client +----------- +bug fixes +25633 fix quoting and escaping in json parser, avoid a potentially + non-terminating loop and improve error handling (since 2.8.2) + (thanks to Bradley Peabody) + + +Erlang client +------------- +bug fixes +25521 fix negotiated frame-max handling, which was being ignored (since 2.0.0) +25489 fix rpc client/server to ensure correlation-ids are valid UTF-8 strings + (since 2.0.0) (thanks to Daniel White) + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.1.3.txt b/release-notes/README-3.1.3.txt new file mode 100644 index 0000000000..3d0163d3e0 --- /dev/null +++ b/release-notes/README-3.1.3.txt @@ -0,0 +1,12 @@ +Release: RabbitMQ 3.1.3 + +Release Highlights +================== + +management plugin +------------------ +bug fixes + +25643 fix bug that lead to incorrect reporting of accumulated + stats (since 3.1.2) + diff --git a/release-notes/README-3.1.4.txt b/release-notes/README-3.1.4.txt new file mode 100644 index 0000000000..dc42d20f02 --- /dev/null +++ b/release-notes/README-3.1.4.txt @@ -0,0 +1,91 @@ +Release: RabbitMQ 3.1.4 + +Security Fixes +============== + +server +------ +25686 ensure DLX declaration checks for publish permission (since 2.8.0) + + +management plugin +----------------- +24803 update to a later version of Mochiweb that fixes a directory traversal + vulnerability allowing arbitrary file access on Windows (since 2.1.0) + + +Release Highlights +================== + +server +------ +bug fixes +25638 fix resource leak with mirrored queues when whole clusters stop + (since 3.0.0) +25624 fix queue crash in mirrored queue handling of messages during promotion + (since 2.6.0) +25615 25670 fix race conditions in mirrored queues when different cluster + nodes start and stop near-simultaneously (since 2.6.0) +25617 fix corrupt_cluster_status_files error after abrupt node shutdown + (since 3.0.0) +25645 fix mirrored queue sync failure in the presence of un-acked messages + not at the head of the queue (since 3.1.0) +25640 fix race condition leading to channel crash with low prefetch count + repeated basic.consume and basic.cancel (since 3.1.0) +25625 fix memory leak of mirrored queue messages during promotion + (since 2.6.0) +25649 allow hipe compilation on Erlang R16B01 +25659 allow offline cluster node removal with a node which is not second + from last (since 3.0.0) +25648 make `rabbitmqctl join_cluster' idempotent (since 3.0.0) +25651 improve `rabbitmqctl cluster_status' handling of partition info when + cluster nodes are in the process of stopping (since 3.1.0) +25689 ensure launch of subprocesses to monitor disk space and file handles + works correctly when clink shell is installed on Windows (since 2.1.0) +25594 fix rabbit_error_logger crash during failed startup (since 1.4.0) +25631 fix bug in shutdown sequence that could lead to spurious + INTERNAL_ERRORs being sent to clients (since 3.1.0) + + +erlang client +------------- +bug fixes +25632 fix broken error handling in amqp_network_connection that could lead + to a crash during broker shutdown (since 2.4.0) +25688 fix bug in challenge-response auth handling (since 2.3.0) + +enhancements +25674 add amqp_rpc_{client,server}:start_link() + + +STOMP plugin +------------ +bug fixes +25691 fix connection crash on consumer cancellation notification (since 3.0.0) + + +build and packaging +------------------- +bug fixes +25668 add ssl support to OS X standalone package +25584 ensure that VERSION is set correctly when building src packages + (since 2.7.0) + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.1.5.txt b/release-notes/README-3.1.5.txt new file mode 100644 index 0000000000..7e687f4426 --- /dev/null +++ b/release-notes/README-3.1.5.txt @@ -0,0 +1,39 @@ +Release: RabbitMQ 3.1.5 + +Release Highlights +================== + +server +------ +bug fixes +25713 fix crash in the delegate mechanism leading to various crashes, and + intra-cluster incompatibility between RabbitMQ 3.1.4 and other members + of the 3.1.x series (since 3.1.4) +25700 25710 prevent (harmless) errors being logged when pausing in + pause_minority mode (since 3.1.0) + + +LDAP plugin +----------- +bug fixes +25703 prevent channel crash when attempting to retrieve LDAP attribute that + does not exist (since 2.7.0) + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.2.0.txt b/release-notes/README-3.2.0.txt new file mode 100644 index 0000000000..1f25349b86 --- /dev/null +++ b/release-notes/README-3.2.0.txt @@ -0,0 +1,191 @@ +Release: RabbitMQ 3.2.0 + +server +------ +bug fixes +25602 fix race condition that could cause mirrored queues to corrupt state + during promotion (since 2.6.0) +25745 prevent HA queue from becoming masterless if multiple nodes shutdown in + quick succession (since 2.6.0) +25685 prevent race that leads to a masterless queue when a mirror and + previous leader replica start simultaneously (since 2.6.0) +25815 ensure that persistent messages with expiration property timeout + correctly after broker restarts (since 3.0.0) +25780 stop ram nodes from becoming disc nodes when started in isolation + (since 3.0.0) +25404 prevent potential deadlocks during shutdown +25822 prevent crash at startup when starting a clustered node hosting a + durable non-HA queue which had been bound to a transient exchange which + was deleted when the node was down (since 2.5.0) +25390 tolerate corrupt queue index files with trailing zeroes during boot + (since 2.0.0) +25704 remove possibility of "incompatible Erlang bytecode" failure in cluster + startup (since 3.1.0) +25721 fix logging of config file location (since 3.1.0) +25276 ensure queues declared as exclusive are not durable or mirrored + (since 2.6.0) +25757 prevent error being logged when an exclusive queue owner disconnects + during declaration (since 3.0.0) +25675 prevent crash when sending OTP status query to writer or heartbeater + processes (since 1.0.0) + +enhancements +25553 support for federated queues +25749 allow alternate and dead-letter exchanges, queue max length, expiry and + message TTL to be controlled by policy as well as AMQP arguments +24094 report client authentication errors during connection establishment + explicitly using connection.close +25191 inform clients when memory or disk alarms are set or cleared +25572 allow policies to target queues or exchanges or both +25726 make it harder to trigger the disk space alarm with default settings +25597 offer greater control over threshold at which messages are paged to disk +25716 allow missing exchanges & queues to be deleted and unbound without + generating an AMQP error +25725 implement consumer priorities +23958 backport OTP process supervision infrastructure improvements +25733 relax type constraints of header exchanges +25809 add support for specifying a SSL verify_fun name in the config file + + +building & packaging +-------------------- +enhancements +20384 add sample configuration file + +dependency change +25581 require at least Erlang version R13B03 for broker and plugins + +feature removal +25455 remove RabbitMQ-maintained MacPorts repository + + +management plugin +----------------- +bug fixes +25601 report on queue lengths and data rates in a more timely fashion + (since 3.1.0) +25676 display chart times in the local time zone rather than UTC (since 3.1.0) +25770 prevent over-enthusiastic caching of web UI templates (since 2.1.0) + +enhancements +25063 support arrays in web interface for arguments, policies and headers +25598 display queue paging information +25711 improve handling of defaults in config file by rabbitmqadmin (thanks to + Simon Lundström) +25747 de-emphasise internal federation queues and exchanges +25778 introduce 'policymaker' tag, permitting policy & parameter operations + without being full administrator +25616 more readable number formatting in graph labels +25641 permit turning tracing on/off using the HTTP API +25811 add support for web UI authentication via the initial URI +25792 optimise monitoring of file descriptors on OS X + + +LDAP plugin +----------- +enhancements +25479 support boolean operators in queries +25724 avoid setting a probably non-existent host in the default configuration + + +federation plugin +----------------- +bug fixes +25707 prevent upstream queues from being deleted, thus preventing deletion + upon policy change (since 3.0.0) + +enhancements +25554 allow federation policy to specify a single upstream instead of an + upstream-set +25797 various performance enhancements + + +Web-STOMP plugin +---------------- +enhancements +25699 support for implicit subscriptions + + +AMQP 1.0 plugin +--------------- +bug fixes +25404 prevent potential deadlocks during shutdown (since 3.1.0) + +enhancements +25539 make the default virtual host configurable + + +STOMP plugin +------------ +bug fixes +25692 prevent potential deadlocks during shutdown (since 2.3.0) +25789 prevent incomplete TCP connection attempts from leaking processes + (since 2.3.0) + +enhancements +25539 make the default virtual host configurable + + +MQTT plugin +----------- +bug fixes +25577 ensure resumed subscriptions become active immediately after reconnecting +25744 correct client shutdown sequence in the event of failed startup + + +jsonrpc-channel plugin +---------------------- +bug fixes +25776 fix dependencies that preventing plugin from running (since 3.1.4) + + +java client +----------- +bug fixes +25708 prevent deadlock when calling blocking operations in handleCancel + (since 1.0.0) + +enhancements +25736 added routing key to performance testing tool parameters +25767 rename the performance testing tool (formerly MulticastMain) + + +.net client +----------- +enhancements +25552 make better use of generic types +25595 consumer cancellation is now exposed as an event + + +erlang client +------------- +bug fixes +25682 prevent potential deadlocks during shutdown +25743 prevent failures due to connection string lookup errors in protocols + other than AMQP 0-9-1 / 0-8 (since 2.8.1) +25794 prevent startup error when using SSL on versions of Erlang from R16B01 +25677 prevent crash when reconsuming asynchronously with the same tag + (since 2.6.0) + +enhancements +25520, 25804 optimise network performance (thanks to Jesper Louis Andersen) +25782 support connection_timeout in AMQP URI + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.2.1.txt b/release-notes/README-3.2.1.txt new file mode 100644 index 0000000000..3add3d1bf8 --- /dev/null +++ b/release-notes/README-3.2.1.txt @@ -0,0 +1,55 @@ +Release: RabbitMQ 3.2.1 + +Release Highlights +================== + +server +------ +bug fixes +25849 fix crash with {down_from_gm,down_from_gm} with multiply-mirrored queues + (since 3.2.0) +25846 fix queue crashes when changing multiple HA policies simultaneously + (since 3.0.0) +25618 ensure a mirrored queue mirror which crashes does not cause the leader replica to + crash (since 2.6.0) +25838 prevent crashes due to timeouts when calling into the limiter + (since 3.1.0) +25842 treat 32 bit Unix platforms as limited to 2GB not 4GB address space + (since 1.7.1) +25845 reduce default heartbeat from 600s to 580s for better compatibility + with common load balancer configurations (since 3.0.0) +25826 fix incorrect placement of file sync which could theoretically + corrupt files when written just before a crash (since 3.0.0) + + +building / packaging +-------------------- +bug fixes +25835 ship a useful README in /usr/share/doc for Debian and RPM (since 1.0.0) + + +management plugin +----------------- +bug fixes +25811 fix web UI authentication via the initial URI for browsers which are + not Chrome (since 3.2.0) +25861 fix web UI login when user name or password contains '%' (since 3.2.0) + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.2.2.txt b/release-notes/README-3.2.2.txt new file mode 100644 index 0000000000..eb76c4f243 --- /dev/null +++ b/release-notes/README-3.2.2.txt @@ -0,0 +1,60 @@ +Release: RabbitMQ 3.2.2 + +Release Highlights +================== + +server +------ +bug fixes +25873 prevent possibility of deadlock when mirrors start up (since 2.6.0) +25867 ensure automatic synchronisation does not fail when policy change + causes new mirrors to start and the leader replica to change simultaneously + (since 3.1.0) +25870 prevent the worker pool from running out of processes due to processes + crashing (since 1.8.0) +25899 prevent race leading to cluster upgrade failure when multiple nodes + attempt secondary upgrade simultaneously (since 2.4.1) +25912 correct reporting of flow control when connections become idle + (since 2.8.0) + + +LDAP plugin +----------- +bug fixes +25863 prevent channels crashing during broker shutdown (since 2.3.0) + + +management plugin +----------------- +bug fixes +25872 prevent empty queues from showing length as '?' after going idle + (since 3.1.0) +25889 ensure GET /api/overview uses consistent data types when server is idle + (since 2.1.0) +25920 prevent rabbitmqadmin failure when no home directory is set (since 3.2.0) + + +MQTT plugin +----------- +bug fixes +25887 prevent possible error in the presence of multiple client IDs +25905 fix handling of acks from the broker with the 'multiple' flag set + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.2.3.txt b/release-notes/README-3.2.3.txt new file mode 100644 index 0000000000..6b7b095fc5 --- /dev/null +++ b/release-notes/README-3.2.3.txt @@ -0,0 +1,64 @@ +Release: RabbitMQ 3.2.3 + +Release Highlights +================== + +server +------ +bug fixes +25936 stem leak when queues with active consumers terminate (since 3.2.0) +25928 fix cosmetic error when sending connection.close-ok after client + already closed the connection (since 1.0.0) +25965 limit messages to ~2GB to prevent "Absurdly large distribution output + data buffer" VM crash (since 1.0.0) +24927 avoid broker being overwhelmed while logging benign messages starting with + "Discarding messages" (since 1.0.0) +25952 prevent "Absurdly large distribution output data buffer" VM crash when + sending many/large messages to a mirrored queue (since 2.6.0) +25925 remove extraneous service parameters when installing on windows + (since 1.5.0) +25929 prevent error being logged when connection is closed while it is still + being opened (since 1.0.0) + + +federation plugin +----------------- +bug fixes +25945 ensure federated queues correctly stop federating messages when channels + close or crash without cancellation from consumers (since 3.2.0) +25971 prevent crash of federated mirrored queues on deletion (since 3.2.0) +25956 prevent federation of the queues used internally by federated exchanges + (since 3.2.0) +25949 prevent unnecessary CPU use when ACKs are not in use (since 2.6.0) + + +shovel plugin +----------------- +bug fixes +25934 remove ordering constraint on configuration items (since 2.0.0) +25949 prevent unnecessary CPU use when ACKs are not in use (since 2.0.0) + + +LDAP plugin +----------- +bug fixes +25914 fix use of dn_lookup_attribute configuration on OpenLDAP (since 2.8.0) + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.2.4.txt b/release-notes/README-3.2.4.txt new file mode 100644 index 0000000000..71510cb62f --- /dev/null +++ b/release-notes/README-3.2.4.txt @@ -0,0 +1,87 @@ +Release: RabbitMQ 3.2.4 + +Release Highlights +================== + +server +------ +bug fixes +26014 prevent 541 internal error removing a nonexistent binding from a topic + exchange (since 3.2.0) +25762 fix failure to delete virtual host if a queue in the virtual host is + deleted concurrently (since 1.0.0) +26013 ensure connection.blocked is sent in all circumstances it should be + (since 3.2.0) +26006, 26038 ensure autoheal does not hang if a node is manually stopped + during autoheal (since 3.1.0) +26000 prevent crash of mirrored supervisor in some circumstances after a + network partition is healed (since 2.6.0) +25972 fix syntax error in example configuration file (since 3.2.0) + + +management plugin +----------------- +bug fixes +24476 prevent statistics database from vanishing after a network partition is + healed (since 2.8.3) +25983 prevent "node statistics not available" error when mochiweb is + configured with an explicit list of SSL ciphers (since 2.6.0) + + +federation plugin +----------------- +bug fixes +25998 ensure upstreams which are timing out establishing network connections + can be deleted in a timely fashion (since 3.0.0) + + +shovel plugin +------------- +bug fixes +25996 ensure shovels which are timing out establishing network connections + do not block broker shutdown (since 2.3.0) + + +STOMP plugin +------------ +bug fixes +26028 prevent potential deadlocks during shutdown (since 2.3.0) + + +MQTT plugin +----------- +bug fixes +25982 ensure messages published with QOS=1 are persistent (since 3.1.0) + + +Erlang client +------------- +bug fixes +26041 prevent rare, fake "541 internal error" reported client-side when + shutting down connections (since 2.1.1) + + +.NET client +----------- +bug fixes +26016 ensure SSL connection establishment times out if necessary (since 1.0.0) +26047 ensure IModel.ConfirmSelect() is idempotent (since 2.3.0) + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.3.0.txt b/release-notes/README-3.3.0.txt new file mode 100644 index 0000000000..6787082deb --- /dev/null +++ b/release-notes/README-3.3.0.txt @@ -0,0 +1,244 @@ +Release: RabbitMQ 3.3.0 + +Security Fixes / Changes +======================== + +server +------ +25603 prevent access using the default guest/guest credentials except via + localhost (since 1.0.0) + + +LDAP plugin +----------- +26052 do not allow use of password "" when connecting to servers which + permit unauthenticated bind (since 2.3.0) + + +Release Highlights +================== + +server +------ +bug fixes +26069 ensure that memory use is bounded when logging crash of large + processes (since 1.0.0) +25589 ensure that a queue which needs to reduce its RAM usage but is not + receiving any publishes still pages out messages quickly (since 2.0.0) +25991 fix topic routing in the face of multiple bindings that differ only + in arguments (e.g. those created by the federation plugin) (since 2.4.0) +26027 ensure autoheal does not hang winner node if 'rabbitmqctl stop_app' + issued on other node during healing (since 3.1.0) +26043 ensure autoheal does not crash if multiple autoheal requests occur + in quick succession and the leader make different decisions for each + (since 3.1.0) +26088 fix failure to delete virtual host if a queue in the virtual host is + deleted concurrently (since 1.0.0) (incorrectly reported fixed in 3.2.4) +25374 interpret AMQP field type 'b' as signed byte rather than unsigned, for + compatibility with our errata, and the majority of clients (since 1.0.0) +26058 prevent inaccurate (sometimes negative) report of memory use by + plugins (since 3.1.0) +26063 prevent spurious rabbit_node_monitor error messages when pausing in + pause_minority mode (since 3.2.4) + +enhancements +25888 give busy queues a bias towards delivering more messages than they + accept, ensuring they tend to become empty rather than huge +26070 automatically reconsume when mirrored queues fail over (and + introduce x-cancel-on-ha-failover argument for the old behaviour) +25882 provide 'consumer utilisation' metric to help determine if consumers + are being held back by low prefetch counts +26039 ensure rabbitmqctl's formatting of process IDs is more shell-script + friendly +25654 allow use of separate modules for authentication and authorisation +25722 explicitly set Erlang distribution port in all circumstances +25910 add process identification information to process dictionary to aid in + debugging +25922 log reason why a node considered another node to be down +25860 enforce the rule that object names must be valid UTF-8 strings +25836 prevent deletion of amq.* built-in exchanges, and mark appropriate ones + as internal +25817 allow plugins to rewrite AMQP methods +25979 announce cluster-id when clients connect +26042 allow log_levels config item to silence mirrored queue events +26065 ensure config file location is logged even if config file is absent +22525 allow server-wide configuration of channel_max +25627 show current alarms in 'rabbitmqctl status' + +performance improvements +25957 change semantics of basic.qos global flag in order to allow for + greatly enhanced prefetch performance + (see https://www.rabbitmq.com/consumer-prefetch.html) +25827,25853 substantially improve performance stopping and starting brokers + with many durable queues +26001 improve performance of persistent confirmed messages on spinning disks +24408 improve performance of mandatory publication (very substantially when + publishing across clusters) +25939,25942,25943 improve performance reading and writing AMQP (especially + reading large messages) + +feature removal +25962 remove support for client-sent channel.flow method; basic.qos is + superior in all cases +25985 remove support for 'impersonator' tag + + +building & packaging +-------------------- +bug fixes +25989 put the example config file in the correct directory for generic + Unix and standalone Mac, and put a copy in the AppData directory + on Windows (since 3.2.0). +26093 Debian: remove obsolete DM-Upload-Allowed field (thanks to Thomas + Goirand) +26094 Debian: ensure package can be built multiple times and remove + files from debdiff that should not be there (thanks to Thomas Goirand) + +enhancements +25844 switch standalone Mac release to 64 bit architecture + + +management plugin +----------------- +bug fixes +25868 ensure connections in flow control for a long time still show 'flow' + and do not transition to 'blocked' (since 2.8.0) + +enhancements +24829 provide information about flow control status of internal components, + to help find bottlenecks +25876 provide regex option when filtering lists (with thanks to Joseph Weeks) + +feature removal +25720 remove the redirect from 2.x-era port 55672 to 15672 + + +federation plugin +----------------- +enhancements +23906 implement cycle detection for messages forwarded over federation +25985 remove requirement to configure local-username +26042 allow log_levels config item to silence federation events +25979 replace local-nodename with (non-federation-specific) cluster-id +25902 preserve original routing key when forwarding messages via + queue federation +25904 tidy up nomenclature in federation status / management + + +shovel plugin +------------- +enhancements +24851 introduce "dynamic" shovels, controlled by parameters in a similar way + to federation (see https://www.rabbitmq.com/shovel-dynamic.html) +25890 make shovel status rather more informative +25894 introduce "auto-delete" dynamic shovels +25935 allow dynamic shovels to record routing information similarly to + federation +26045 default prefetch-count to 1000 rather than unlimited + + +LDAP plugin +----------- +enhancements +25785 add 'dn_lookup_bind' to allow lookup of a user's DN before binding +25839 allow specification of SSL options for (e.g.) presenting client + certificates when connecting to an LDAP server +26022 support timeouts when connecting to an LDAP server +25570 replace 'as_user_no_password' error with something which makes more sense + + +STOMP plugin +------------ +bug fixes +26010 remove examples for the headers exchange that haven't worked since 2010 + + +MQTT plugin +----------- +bug fixes +25941 ensure keepalives are implemented completely (since xxx) + +enhancements +26067 initial support for MQTT 3.1.1 draft +25877 support specifying vhost at the time of connection + + +Web-STOMP plugin +---------------- +bug fixes +25896 ensure examples set content-type (since 3.0.0) + +enhancements +25828 upgrade cowboy to get sec-websocket-protocol support +25913 support SSL (with thanks to James Shiell) + + +JSON-RPC channel plugin +----------------------- +feature removal +26029 remove JSON-RPC channel plugin from the official release + + +java client +----------- +enhancements +14587 support automatically reconnecting to server(s) if connection is + interrupted +26008 make it easier to start a Connection with a custom ExceptionHandler +25833 allow specifying a per-ConnectionFactory ExecutorService +25999 handle running in a security-restricted context (e.g. Google App engine) +25663 improve type safety of ShutdownSignalException "reason" property +26068 improve clarity of AlreadyClosedException reason +26015 make Envelope.toString() do something useful + + +.net client +----------- +bug fixes +25911 ensure Subscriptions are informed if a channel closes (since 1.4.0) +25374 interpret AMQP field type 'b' as signed byte rather than unsigned, for + compatibility with our errata, and the majority of other clients + (since 1.0.0) +25046 ensure timeout establishing connection does not throw + System.NotSupportedException (since 1.0.0) +25278 ensure timeout establishing connection does not throw + ProtocolVersionMismatchException (since 2.0.0) +26071 ensure attempted use of a closed channel leads to + AlreadyClosedException (since 1.0.0) +25082 ensure EventingConsumer sets supertype model field (since 1.0.0) + +enhancements +25895 support for SSL cert selection and validation callbacks (thanks to + "pooleja") +26068 improve clarity of AlreadyClosedException reason + + +erlang client +------------- +bug fixes +25374 interpret AMQP field type 'b' as signed byte rather than unsigned, for + compatibility with our errata, and the majority of other clients + (since 1.0.0) +26050 add missing handle_server_cancel/2 to amqp_gen_consumer_spec.hrl + +enhancements +25985 do not require direct connections to specify a username + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.3.1.txt b/release-notes/README-3.3.1.txt new file mode 100644 index 0000000000..276bbf96eb --- /dev/null +++ b/release-notes/README-3.3.1.txt @@ -0,0 +1,107 @@ +Release: RabbitMQ 3.3.1 + +Security Fixes +============== + +MQTT plugin +----------- +26109 prevent potential DOS attack on SSL handshake failure (since 3.0.0) + + +shovel plugin +------------- +26100 prevent dynamic shovels from allowing policymaker users to access vhosts + they should not be able to (since 3.3.0) + + +Release Highlights +================== + +server +------ +bug fixes +26084 fix race condition causing queue mirrors to occasionally not be promoted + on clean leader replica shutdown (since 3.0.0) +26115 prevent badmatch crash on mirror queue init during rapid restarts + (since 3.2.0) +26117 prevent mirror being incorrectly considered dead when added at the same + time as another mirror dies (since 3.2.0) +26118 prevent mirror queue crash if a queue hibernates before it has fully + started (since 3.2.2) +26125 prevent possible deadlock when mirror becomes synchronised + simultaneously with another mirror starting (since 3.1.0) +26103 ensure dead-letter cycle detection works when dead-lettering messages due + to exceeding the queue's max-length (since 3.1.0) +26123 ensure worker pool state does not become corrupt if a worker process + crashes while idle (since 1.8.0) +25855 ensure disk monitor does not crash the broker on platforms where + intermediate OS processes may be killed such as Google Compute Engine + (since 2.8.2) +26096 clarify rabbitmqctl diagnostic messages (since 3.3.0) +26102 prevent cosmetic GM crash on clean shutdown (since 2.8.7) +26104 fix format of queue synchronisation log messages (since 3.3.0) +26114 ensure crash report shrinking does not shrink reports too much + (since 3.3.0) + +enhancements +26098 bring back 'impersonator' tag removed in 3.3.0 +26113 add a capability to allow clients to detect the new qos semantics + introduced in 3.3.0 without requiring an explicit version check + + +management plugin +----------------- +bug fixes +26140 prevent malformed message being created when publishing with priority + or timestamp properties set (since 2.4.0) +26110 ensure statistics database GC works in a timely manner when the number + of objects tracked grows rapidly (since 3.1.0) +26124 prevent "" being added as the last element of an array when adding + an array to queue or exchange arguments via the web UI (since 3.2.0) +26127 ensure that statistics database startup does not block broker startup + for O(queues) time (since 2.8.0) +26134 improve diagnostics when failing to count used FDs on {Free,Open,Net}BSD + (since 2.8.0) + + +shovel-management plugin +------------------------ +bug fixes +26105 allow adding dynamic shovels when there are multiple virtual hosts + and show correct UI to users with policymaker and monitoring tags + (since 3.3.0) + + +STOMP plugin +------------ +bug fixes +26061 reject publishes to destination "", rather than creating a server-named + queue (since 2.0.0) + + +Java client +----------- +bug fixes +26111 prevent connection crash on recovery when a connection consumes from + many queues (since 3.3.0) +26099 clarify AlreadyClosedException.tostring() in the case when the + connection closed for a non-AMQP reason (since 3.3.0) + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.3.2.txt b/release-notes/README-3.3.2.txt new file mode 100644 index 0000000000..7d5a7725f1 --- /dev/null +++ b/release-notes/README-3.3.2.txt @@ -0,0 +1,118 @@ +Release: RabbitMQ 3.3.2 + +Release Highlights +================== + +server +------ +bug fixes +26180 prevent certain operations (including queue creation and deletion) + blocking until a connection closes when the socket limit is reached + (since 2.7.0) +26227 fix incorrect log message about config file location when running as + a Windows service, changing RABBITMQ_CONFIG_FILE and not reinstalling + the service (since 3.3.0) +26172 ensure mirror queue does not hang if the GM process crashes at queue + startup (since 2.6.0) +26178 prevent error logger crash in rare circumstances (since 3.3.0) +26184 prevent small log messages being needlessly truncated (since 3.3.0) +26226 ensure rabbitmqctl status does not crash if invoked while Mnesia is + starting or stopping (since 3.0.0) +26200 fix garbled SSL log messages (since 3.0.3) +26203 prevent spurious log message if mirror queue crashes early (since 3.2.2) + + +management plugin +----------------- +bug fixes +26197 fix garbled error message if importing JSON definitions file with invalid + input (since 2.1.0) +26209 ensure reasons for authentication failure are always logged (since 2.1.0) + +enhancements +25376 add documentation on the JSON schema returned by GET queries + + +shovel plugin +------------- +bug fixes +26219 fix creation of dynamic shovels using direct connection URLs through + rabbitmqctl (since 3.3.1) +26176 prevent deadlock deleting virtual host with active dynamic shovel on + single core machine (since 3.3.0) + + +federation plugin +----------------- +bug fixes +26176 prevent deadlock deleting virtual host with active federation link on + single core machine (since 3.0.0) + + +shovel-management plugin +------------------------ +bug fixes +26165 ensure the status of static shovels is correctly shown (since 3.3.1) + + +LDAP plugin +----------- +bug fixes +26190 fix crash when LDAP uses SSL and nothing else does (since 2.3.0) + + +auth-mechanism-ssl plugin +------------------------- +bug fixes +25550 allow use of both certificate and password based authentication at the + same time (since 2.3.0) + + +MQTT plugin +----------- +bug fixes +26194 prevent hang on broker shutdown when there are active MQTT connections + (since 3.0.0) +26189 fix connection crash on shutdown if the connection starts very early + (since 3.0.0) + + +STOMP plugin +------------ +bug fixes +25550 allow use of both certificate and password based authentication at the + same time (since 2.3.0) + + +Java client +----------- +bug fixes +26187 ensure network recovery delay is used when recovering from all types of + exception (since 3.3.0) +26188 ensure TopologyRecoveryException includes cause's message (since 3.3.0) +26196 fix Javadoc for ConnectionFactory.setSocketConfigurator() + + +Erlang client +------------- +bug fixes +26160 declare xmerl application dependency (since 3.3.0) + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.3.3.txt b/release-notes/README-3.3.3.txt new file mode 100644 index 0000000000..fff7d6a7b0 --- /dev/null +++ b/release-notes/README-3.3.3.txt @@ -0,0 +1,46 @@ +Release: RabbitMQ 3.3.3 + +Release Highlights +================== + +server +------ +bug fixes +26236 prevent log files from being silenced if certain processes crash + (since 3.3.2) +26241 fix disk space monitor crash when using {mem_relative, Ratio} + configuration (since 3.2.0) +24759 run shell scripts with '-e' (since 1.0.0) + + +STOMP plugin +------------ +bug fixes +26238 fix queue leak on subscription to /exchange// when the + exchange does not exist (since 2.0.0) + + +Java client +----------- +bug fixes +26232 ensure channel shutdown listeners are not lost on connection recovery + (since 3.3.0) + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.3.4.txt b/release-notes/README-3.3.4.txt new file mode 100644 index 0000000000..e237ae77d5 --- /dev/null +++ b/release-notes/README-3.3.4.txt @@ -0,0 +1,46 @@ +Release: RabbitMQ 3.3.4 + +Release Highlights +================== + +server +------ +bug fixes +26258 fix startup failure on systems with non-GNU readlink when started from a + symlink (e.g. Mac Homebrew) (since 3.3.3) +26247 fix startup failure when inet_dist_listen_min / inet_dist_listen_max set + (since 3.3.3) +26253 prevent unclear error message when config file completely empty + (since 3.3.0) + + +STOMP plugin +------------ +bug fixes +26246 don't log a crash when client misses heartbeat (since 2.3.0) + + +web-STOMP plugin +---------------- +bug fixes +26250 fix crash when Web-STOMP is the only SSL user in the broker on Erlang + R16B03 or later (since 3.0.0) + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.3.5.txt b/release-notes/README-3.3.5.txt new file mode 100644 index 0000000000..e2480a7e12 --- /dev/null +++ b/release-notes/README-3.3.5.txt @@ -0,0 +1,99 @@ +Release: RabbitMQ 3.3.5 + +Release Highlights +================== + +server +------ +bug fixes +25921 prevent long delays in publishing after a node goes down and network + connections to it time out (since 2.8.3) +26225 26293 greatly reduce the length of time between pause_minority mode + detecting a minority and refusing to accept further publishes + (since 3.1.0) +26313 do not allow clients to override server-configured channel_max + (since 3.3.0) +26159 prevent failure to start if memory monitor cannot determine total + system memory (since 1.7.1) +26290 correctly read /proc/meminfo on Linux even if rows do not contain + colons (issue with certain vendor kernels) (since 1.7.1) + +enhancements +26311 provide a mechanism for diagnosing stuck processes + + +building & packaging +-------------------- +bug fixes +26322 add loopback_users to the sample configuration file (since 3.3.0) + + +management plugin +----------------- +bug fixes +26072 provide unminimised versions of all bundled Javascript libraries. + Fixes Debian bug #736781. (since 2.1.0) + + +management visualiser plugin +---------------------------- +bug fixes +26072 provide unminimised versions of all bundled Javascript libraries. + Fixes Debian bug #736781. (since 2.1.0) + + +federation plugin +----------------- +bug fixes +26272 ensure changes to cluster name are picked up promptly and thus fix + cycle detection on cluster name change (since 3.3.0) +26292 ensure that federation links apply the defined reconnect delay under + all circumstances (since 2.6.0) +26299 fix leak when shrinking upstream-set immediately after federation + starts (since 3.0.0) + + +shovel plugin +------------- +bug fixes +26318 prevent dynamic shovel crash using add-forwarding-headers=true + without setting dest-queue or dest-exchange-key (since 3.3.0) +26292 ensure that shovel workers apply the defined reconnect delay under + all circumstances (since 2.0.0) +26328 prevent dynamic shovels from failing over to the new node whenever + a node comes up in a cluster (since 3.3.0) + + +MQTT plugin +----------- +bug fixes +26270 improve error messages on TLS/TCP connection failure (since 3.0.0) +26281 log cleanly closed MQTT connections as we do for AMQP (since 3.0.0) + + +AMQP 1.0 plugin +--------------- +bug fixes +26288 fix handling of the symbol type in message content (as used in + content_type and content_encoding) (since 3.1.0) +26288 (also) fix mapping of AMQP 1.0 ttl and creation_time fields to + AMQP 0-9-1 timestamp and expiration fields (since 3.1.0) + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.4.0.txt b/release-notes/README-3.4.0.txt new file mode 100644 index 0000000000..df04486cd9 --- /dev/null +++ b/release-notes/README-3.4.0.txt @@ -0,0 +1,269 @@ +Release: RabbitMQ 3.4.0 + +Security Fixes +============== + +management plugin +----------------- +26414 do not trust X-Forwarded-For header when enforcing 'loopback_users' + +various +------- +26419 disable SSLv3 by default to prevent the POODLE attack + + +Release Highlights +================== + +server +------ +bug fixes +26354 prevent force_event_refresh message from killing connections that have + not fully started (since 3.3.0) +26347 ensure bindings are deleted when deleting queue records as part + of rabbitmqctl forget_cluster_node (since 3.0.3) +26341 add assertions to prevent silent failure from DETS errors in + rabbit_recovery_terms (since 3.3.0) +26171 prevent crash in rare conditions in gm:find_member_or_blank/2 during + mirror startup (since 2.6.0) +26368 prevent autoheal from hanging when loser shuts down before the winner + learns it is the winner (since 3.1.0) +25850 prevent excessive binary memory use when accepting or delivering + large messages at high speed (since 1.0.0) +26230 ensure exchanges and queues are federated appropriately when + created when policy exists to make them so but the plugin is + not enabled (since 3.0.0) +26389 prevent consumer utilisation getting stuck at 0% after busy queue + goes idle (since 3.3.0) +26370 prevent "rabbitmqctl cluster_status" from breaking the database + if invoked at the wrong point during first startup (since 3.0.0) +26295 ensure "rabbitmqctl wait" waits for plugins to start +26336 fix logging when cluster auto-config fails (since 3.0.0) +26338 log enotconn as 'connection_closed_abruptly', not an internal + error (since 1.0.0) +26343 fix warning about missing behaviour_info/1 in supervisor2 with + older Erlang (since 3.2.0) +26363 ensure cluster auto-config does not try to cluster with nodes + which have had "rabbitmqctl stop_app" invoked (since 3.0.0) +26378 fix compilation warnings about conflicting behaviours (since 2.6.0) +26386 ensure broker starts even if vhost pointed to by default_vhost + config item has been deleted (since 1.0.0) +26404 prevent queue synchronisation from hanging if there is a very + short partition just as it starts (since 3.1.0) + +enhancements +21446 allow crashing queue processes to recover, using persistent data + if present +25813 provide fast direct route for RPC replies + (see https://www.rabbitmq.com/direct-reply-to.html) +24926 allow plugins to be enabled / disabled without restarting the server +25884 add argument and policy to limit queue length in bytes +26150 prevent clean leader replica shutdown from promoting unsynchronised + mirrors and thus losing messages; add ha-promote-on-shutdown + to configure +26151 make queues located on down cluster nodes visible in "rabbitmqctl + list_queues" +26213 prevent undefined behaviour during partial partitions by + promoting them to full ones +26254 allow "rabbitmqctl_forget_cluster_node" to promote mirror queue mirrors + that are down and thus recover from loss of a node containing masters + after it was the last node to stop +26256 add "rabbitmqctl force_boot" command to allow administrator to + override RabbitMQ's idea of the last node to shut down +26307 add messages_{ready,unacknowledged}_ram / messages_ram / + messages_persistent queue info keys +25666 / 26339 add message_bytes / message_bytes_{ready,unacknowledged, + ram,persistent} queue info keys +25214 improve robustness in the face of stray messages from Mnesia after + partitions +25279 make SSL handshake timeout configurable +25678 make mnesia table loading timeout configurable +26148 add username and vhost to amqp_error log messages +26169 add username / connection information to firehose trace messages +26242 improve clarity of rabbitmqctl error messages when stop_app has been + invoked +26225 provide connection age in rabbitmqctl list_connections +25446 add "rabbitmq-plugins set" subcommand +25824 / 26398 provide a summary of binary memory use +26397 split out memory used by mirrors vs masters / unmirrored in the + memory summary +26401 split out memory used by connection readers / writers / channels / other + in the memory summary +26192 improve usability of "rabbitmqctl remove_cluster_node --offline" by + not requiring the user to start a node with RABBITMQ_NODE_ONLY +18626 add RABBITMQ_USE_LONGNAME (with thanks to Marcos Diez) +26204 allow message TTL and queue expiry times above (2^32)-1 milliseconds +26211 fix use of type specifications deprecated in Erlang 17 +26366 improve error messages when queue / exchange equivalence checks fail +26387 use new strange way to determine OTP minor version number +26394 add cluster heartbeat messages at a faster rate than net_ticktime +26406 add environment for plugins and non-RabbitMQ apps to "rabbitmqctl + environment" +25848 warn if RABBITMQ_SERVER_ERL_ARGS set in a way that will lead to + poor performance +25454 warn if rabbitmq-plugins and rabbitmq-server disagree on the + location of the enabled_plugins file +26221 improve performance of queue.declare{nowait=true} + + +building & packaging +-------------------- +enhancements +26344 ensure missing config file is correctly logged in .deb / RPM + (since 3.3.0) +26154 switch standalone OS X build to use Erlang 17.1 +26040 add missing BuildRequires to RPM spec (since 1.8.0) +26411 fix warning on Debian build clean due to deleted files + + +management plugin +----------------- +enhancements +26107 provide (and default to) mode where we maintain message rates + only per object (queue, exchange etc) not per object + pair (queue->channel etc) to save memory +26174 improve responsiveness of management API under load +25329 maintain history and draw charts for some per-node stats + (memory, disk space etc) +25470 provide UI to show / hide series in charts in the web UI +26382 provide UI to show / hide columns columns in the web UI +26225 provide connection age in connection list +25824 provide a summary of binary memory use +26151 make queues located on down cluster nodes visible in queue list +23724 provide API to list all consumers +26340 redesigned, more concise interface for queue / exchange / + policy arguments +26193 display locations of configuration, database and logs in management +26193 detect and warn on mismatched net_ticktime setting +26235 show enabled plugins in management +25984 switch to HTML5 local storage where available, ensure + multiple web UIs on same host do not share login +26358 support setting message properties with "rabbitmqadmin publish" +26390 ensure all charts have the same time range +26391 make "rabbitmqadmin list" restrict to a default set of columns + +bug fixes +26399 ensure statistics do not depend on erlang:now/0 being in sync with + os:timestamp/0 (since 3.2.0) + + +shovel plugin +------------- +enhancements +26239 allow dynamic shovels to set message properties like static + ones do, and allow static shovels to use add_forward_headers like + dynamic ones do + + +LDAP plugin +----------- +enhancements +26275 support LDAP connections using StartTLS (requires Erlang R16B03 or later) + + +tracing plugin +-------------- +enhancements +26357 add milliseconds to timestamps + + +STOMP plugin +------------ +enhancements +26306 add flow control for message deliveries through STOMP; greatly reduces + memory use when slow consumers without prefetch-count connect to a + large / fast moving queue +26243 ensure all stomp-named queues are named "stomp-*" +26266 support "requeue" header on NACK frames + + +MQTT plugin +----------- +enhancements +26330 add flow control for message deliveries through MQTT; greatly reduces + memory use when slow consumers without prefetch-count connect to a + large / fast moving queue + +bug fixes +26356 fix incorrect reporting of MQTT protocol version when using MQTT 3.1.1 + + +Web-STOMP plugin +---------------- +enhancements +26392 don't depend on the SockJS CDN + + +java client +----------- +enhancements +26402 provide a means to configure the time given to slow consumers + to continue consuming internally queued messages after the + connection closes +26359 add listeners for queue name changes during recovery +26207 add APIs to make methods easier to use in nowait mode +26121 add --randomRoutingKey flag to PerfTest +26091 add --consumerRate flag to PerfTest +26348 make ConnectionFactory's networkRecoveryInterval property into a long + +bug fixes +26364 clean up client-side references to auto-deleted queues in the + common case (since 3.3.0) +26374 limit size of WorkPool queues, thus prevent slow consumer with no + prefetch limit from consuming unbounded memory (since 2.7.0) +26413 prevent duplicate connection recovery listeners from being + registered (since 3.3.0) + +dependency change +26095 drop support for Java 1.5 + +licencing change +24543 make the Java client additionally avaliable under the ASL2 + + +.net client +----------- +enhancements +26130 automatic connection recovery similar to that of the Java client +26208 add APIs to make methods easier to use in nowait mode +26324 introduce an interface for ConnectionFactory +26334 set up stream timeouts as early as possible (thanks to John Oliver) +26199 allow IO and heartbeat to be background threads +25525 allow Subscription class to set explicit consumer tag +26097 add support for nack / reject in Subscription +26122 remove unnecessary lock in Subscription + +feature removal +26131 / 26132 remove support for versions of AMQP prior to 0-9-1 +26133 remove redirect following + + +erlang client +------------- +enhancements +26166 allow default ssl options to be provided in the configuration file + +bug fixes +26418 ensure writer death is detected in direct connections (since 3.2.0) + (with thanks to Christopher Faulet) +26346 ensure amqp_rpc_client uses exclusive, autodelete response + queues (since 1.3.0) + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.4.1.txt b/release-notes/README-3.4.1.txt new file mode 100644 index 0000000000..b742c67295 --- /dev/null +++ b/release-notes/README-3.4.1.txt @@ -0,0 +1,69 @@ +Release: RabbitMQ 3.4.1 + +Security Fixes +============== + +management plugin +----------------- +26437 prevent /api/* from returning text/html error messages which could + act as an XSS vector (since 2.1.0) +26433 fix response-splitting vulnerability in /api/downloads (since 2.1.0) +(thanks to Atholl Stewart for finding the above) + + +Release Highlights +================== + +server +------ +bug fixes +26425 ensure RABBITMQ_USE_LONGNAME / USE_LONGNAME is picked up correctly from + rabbitmq-env.conf (since 3.4.0) + +enhancements +26429 add log messages when plugins are enabled or disabled at runtime + + +management plugin +----------------- +bug fixes +26431 fix web UI breakage when queue listing contains exclusive queues + (since 3.4.0) +26438 fix internal server error when requesting permissions for a user or + vhost which does not exist (since 2.1.0) + + +Java client +----------- +bug fixes +26434 prevent exchange binding recovery from swapping source and + destination (since 3.3.0) +26428 ensure pom.xml lists ASL 2.0 (since 3.4.0) + + +.NET client +----------- +bug fixes +26439 ensure attempt to open a channel on a closed connection fails + immediately (since 1.0.0) +26435 fix typos in documentation and remove references to immediate + publishing (since 3.3.0) + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.4.2.txt b/release-notes/README-3.4.2.txt new file mode 100644 index 0000000000..701207c4aa --- /dev/null +++ b/release-notes/README-3.4.2.txt @@ -0,0 +1,66 @@ +Release: RabbitMQ 3.4.2 + +Release Highlights +================== + +server +------ +bug fixes +25788 prevent HA queue synchronisation from taking quadratic time when + there are many messages on disk (since 3.1.0) +26474 prevent false positive detection of partial partitions (since 3.4.0) +26460 prevent badarg in rabbit_diagnostics:looks_stuck/1 (since 3.3.5) +26417 ensure rabbitmqctl does not get falsely disconnected from the + broker when net_ticktime has been reduced (since 1.0.0) +26449 fix garbled inequivalent argument error messages (since 3.4.0) +26468 fix removal of unmirrored queues as part of "rabbitmqctl + forget_cluster_node --offline" (since 3.4.0) +26470 improve reliability of promotion of mirror mirrors as part of + "rabbitmqctl forget_cluster_node --offline" (since 3.4.0) +26367 ensure dead letter exchange arguments are checked for equivalence + on queue declaration (since 3.1.4) + +building and packaging +---------------------- +bug fixes +26441 fix rabbitmqctl on the OS X standalone release (since 3.4.0) + + +management plugin +----------------- +bug fixes +26472 prevent management agent crashing when log location set to 'tty' + (since 3.4.0) +26451 make sure web UI disk chart says "disk free" not "disk used" (since 3.4.0) +26455 fix race condition rendering page (since 2.1.0) +26464 fix drop at the end of data rate charts (since 3.2.0) + + +shovel plugin +------------- +bug fixes +26452 make sure auto-delete shovels remove their record from shovel status + when deleting (since 3.3.0) +26454 fix autodelete shovel behaviour when started on an empty + queue (since 3.3.0) +26453 prevent shovel-management HTTP API returning 500 if queried just as + dynamic shovel is being deleted (since 3.3.0) + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.4.3.txt b/release-notes/README-3.4.3.txt new file mode 100644 index 0000000000..d5f5b1294c --- /dev/null +++ b/release-notes/README-3.4.3.txt @@ -0,0 +1,107 @@ +Release: RabbitMQ 3.4.3 + +Security Fixes +============== + +management plugin +----------------- +26515 prevent XSS attack in table key names (since 2.4.0) + (thanks to Robert Fitzpatrick) + (CVE-2015-0862) +26516 prevent XSS attack in policy names (since 3.4.0) + (thanks to Robert Fitzpatrick) + (CVE-2015-0862) +26517 prevent XSS attack in client details in the connections list + (CVE-2015-0862) +26518 prevent XSS attack in user names in the vhosts list or the vhost names + in the user list (since 2.4.0) + (CVE-2015-0862) +26520 prevent XSS attack in the cluster name (since 3.3.0) + (CVE-2015-0862) + + +Release Highlights +================== + +server +------ +bug fixes +26490 in autoheal mode, ensure the leader doesn't stop before the winner told + it so (since 3.3.0) +26491 in autoheal mode, prevent a race in Mnesia by waiting for Mnesia + shutdown on all losing nodes (since 3.1.0) +26478 fix startup or rabbitmqctl failures when RABBITMQ_CTL_ERL_ARGS is set + (since 3.4.0) +26498 fix queue crash with assertion failure in rare circumstances + (since 3.4.0) +26081 improve error message when creating a cluster with mismatched Erlang +26446 improve error message when a plugin is incompatible with current Erlang +26265 ensure that plugins modules are picked before other third-party modules +26503 support ssl's verify_fun from Erlang R14B+ (since 3.2.0) +26502 fix 'backing_queue_status' duplication in /api/queues REST API (since + 3.4.0) + +enhancements +26493 add top_memory_use and top_binary_refs diagnostic tools + + +federation management plugin +---------------------------- +bug fixes +26519 fix double HTML escaping in upstream names (since 2.4.0) + + +shovel management plugin +------------------------ +bug fixes +26519 fix double HTML escaping in dynamic shovel names (since 2.4.0) + + +tracing plugin +-------------- +bug fixes +26519 fix double HTML escaping in tracing log file names (since 2.4.0) + + +AMQP 1.0 plugin +--------------- +bug fixes +26486 use env(1) in codegen.py to find python(1) while building (since 3.1.0) + + +MQTT plugin +----------- +bug fixes +26482 ensure full exception details are logged (since 3.3.5) + + +java client +----------- +bug fixes +26492 fix off-by-one error in PerfTest --cmessages count + + +.net client +----------- +bug fixes +26501 make automatic recovery non-blocking to ensure user-defined handlers are + not delayed (since 1.0.0) + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.4.4.txt b/release-notes/README-3.4.4.txt new file mode 100644 index 0000000000..df09e707ca --- /dev/null +++ b/release-notes/README-3.4.4.txt @@ -0,0 +1,104 @@ +Release: RabbitMQ 3.4.4 + +You can find RabbitMQ change log at https://www.rabbitmq.com/changelog.html. + +Release Highlights +================== + +server +------ +bug fixes +26564 ensure that a mirrored queue declaration only returns when all mirrors + are running (since 2.6.0) +26549 Failure to start if AMQP port > 45535 (since 3.3.0) +26570 policy change on idle queue might not be reported in a timely manner + (since 3.0.0) +26558 rabbitmq-plugins should respect RABBITMQ_CTL_ERL_ARGS (since 3.4.0) +26562 rabbitmq-env uses "--fqdn" which is specific to net-tools' (i.e. Linux) + hostname(1) (since 3.4.0) +26144 Windows scripts should respect RABBITMQ_NODE_ONLY (since 1.0.0) + + +building & packaging +-------------------- +bug fixes +26443 Mnesia directory world-readable on deb / RPM (since 1.0.0) +26584 Windows installer should install new version after uninstalling + the existing one (since 1.0.0) + + +management plugin +----------------- +bug fixes +26533 Specifying SSL version list for Mochiweb causes + rabbit_mgmt_external_stats to crash (since 2.6.0) +26541 Overview page doesn't work with IE <= 8 (since 3.4.0) + + +Java client +----------- +bug fixes +26552 Bindings for non-durable queues are not recovered (since 3.3.0) +26580 WorkPool.WorkQueue still deadlock-prone (since 3.4.0) +26523 PerfTest --cmessages off-by-one error (fail to ack last message) + (since 3.4.3) + + +.NET client +----------- +bug fixes +26588 API reference generator should work with .NET 4.0+ (since 1.0.0) +26590 .NET client .msi installer should work with WiX 4.0 (since 1.0.0) + +dependency change +The client now requires .NET 4.0. + + +MQTT plugin +----------- +bug fixes +26567 Last Will and Testament should be sent in case of keep-alive timeout + (since 3.0.0) +26589 MQTT processor should link its channel (since 3.0.0) + + +STOMP plugin +------------ +bug fixes +26553 Unexpected authorisation errors may result in client connections staying open +26282 Improve error messages for STOMP connection failures + (TLS issues, abrupt TCP connection closures) (since 3.3.3) +26559 STOMP reader should handle system messages (since 1.4.0) + + +AMQP 1.0 plugin +--------------- +bug fixes +26587 Failure to create resources when producing / consuming not well + handled (since 3.1.0) + + +LDAP plugin +----------- +bug fixes +26528 [LDAP] template replacement should escape \ and & (since 2.3.0) + + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README-3.5.0.txt b/release-notes/README-3.5.0.txt new file mode 100644 index 0000000000..6368bcab6c --- /dev/null +++ b/release-notes/README-3.5.0.txt @@ -0,0 +1,170 @@ +Release: RabbitMQ 3.5.0 + +Release Highlights +================== + +server +------ +bug fixes +26527 Prevent huge GM / mirror memory consumption under load by adding flow + control to messages via GM (since 2.6.0) +26636 Fix inconsistencies and hangs when a node comes back online before its + disappearance is fulled treated (since 3.1.0) +26622 Ensure channels don't deliver confirms when a pause mode lasts (since + 3.3.5) +26628 When using autoheal, ensure the leader waits for the winner to finish + the autoheal process (since 3.3.0) +26467 Fix promotion of offline mirrors, in particular if the mirror crashed + (since 3.4.0) +26631 Work around a possible hang in Erlang's "global" (since 3.4.2) +26614 Ensure rabbitmqctl.bat exits with code 1 if ERLANG_HOME is incorrect + (since 1.0.0) +26426 Ensure epmd is restarted on Windows if it ends up running as a normal + user and thus getting killed on logout (since 1.0.0) +26595 Fix a crash when querying SSL certificate info while the connection is + closing (since 2.1.1) +26610 Restore the timeout error message while waiting for other cluster nodes + (since 3.4.0) +26477 Only send 'user_authentication_success' event if + rabbit_reader:auth_phase/2 accepts the user (since 3.3.0) + +enhancements +26183 Move priority queues from an external plugin to the broker +26327 Embed messages smaller than a configurable size in the queue index +26457 Add read buffer cache to improve on-disk messages consumption +26543 Improve I/O performance by reading or writing several file segments + in one operation +26465 New "pause_if_all_down" partition handling mode +26463 Ensure new mirrors are started when old ones go down when ha-mode=exactly +26469 Support separate authentication/authorisation backends +26475 Add "rabbitmqctl rename_cluster_node" +25430 Further limit queue's journal size to avoid excessive memory use +26545 Prohibit deletion of amq.* exchanges +26393 Add more info to "user_authentication_*" events +26444 Improve performance parsing AMQP tables / arrays +26602 Add routing decision information to firehose messages +26615 Notify systemd when RabbitMQ is started, if "sd_notify" is available +26603 Improve unacked messages requeueing performance in priority queues +26427 Silence connection errors from load balancer sanity checks +26471 Log when HiPE is enabled + +feature removal +26257 Remove support for the legacy (2.x compatible) form of the + "cluster_nodes" configuration directive + + +management plugin +----------------- +bug fixes +26613 Fix exception on the node details page if the node goes + online or offline while viewing (since 3.4.0) + +enhancements +26522 Provide statistics about accesses to message store and queue index +24781 Provide statistics about file I/O +24921 rabbitmqadmin: Support Python 3 +25652 Add a "move messages" UI +26561 Show per-queue disk message read/write rates +26598 Show cross-cluster networking statistics +26621 Display a warning when the management database is overloaded +24700 Support if-unused and if-empty for queue / exchange deletion + + +LDAP plugin +----------- +bug fixes +26601 Ensure tag_queries respects other_bind setting + + +MQTT plugin +----------- +enhancements +26278 Support authentication via SSL certificate + + +Web-STOMP plugin +---------------- +enhancements +26504 Add configuration parameter for cowboy connection pool size + + +tracing plugin +-------------- +enhancements +26619 Improve how logs are written to disk to increase performance +26620 Allow tracing plugin to truncate message bodies to increase performance + + +java client +----------- +bug fixes +26576 Make sure Channel#abort ignores IOExceptions as the docs say + +enhancements +26571 Undeprecate QueueingConsumer +26617 Dynamically calculate number of consumer work service executor threads + +feature removal +26007 Remove deprecated ConnectionFactory#getNumConsumerThreads, + ConnectionFactory#setNumConsumerThreads, BasicProperties setters (in + favour of BasicProperties.Builder) and Channel#recoveryAsync + + +.net client +----------- +bug fixes +26508 Synchronise SessionManager Count method (since 3.3.5) + +enhancements +24699 Add a unit test to ensure channels are notified when a connection is + closed +26329 Dispatch consumer methods concurrently +26420 Move the .NET guide to www.rabbitmq.com +26459 Use timer for heartbeats to reduce the number of threads and memory + consumption +26483 Add ISubscription and IQueueingBasicConsumer interfaces +26505 Upgrade to Visual Studio 2013 project files +26507 Use a static exchange types array instead of creating a new list each + time (since 3.3.5) +26509 Switch to auto-properties (since 3.3.5) +26510 Use a separate lock object in BlockingCell (since 3.3.5) +26511 Assorted doc string and member name prefix changes (since 3.3.5) +26512 Use EventHandler and similar instead of homebrew event handler + classes (since 3.3.5) +26513 Improve how authentication method names and URI schemas are compared in + ConnectionFactory (since 3.3.5) +26514 Use TryParse instead of Parse in PrimitiveParser (since 3.3.5) +26534 Remove MSI installer +26550 Support TLS connections without client certificates + + +building and packaging +---------------------- +bug fixes +26539 Use "exec" to run rabbitmq-server in rabbitmq-script-wrapper to ensure + signals are correctly propagated (since 2.8.3) +26524 Improve error message when build dependencies are missing on Mac OS X + (since 3.1.0) +26525 Do not install rabbitmq.config.example if DOC_INSTALL_DIR is unset + (since 3.2.0) +26526 Replace GNU patch specific "--no-backup-if-mismatch" by a portable + combination of patch(1) and find(1) (since 3.4.0) + + +Upgrading +========= +To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install +the new version. All configuration and persistent message data is retained. + +To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new +version on all the nodes and follow the instructions at +https://www.rabbitmq.com/clustering.html#upgrading . + +To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be +retained), and then to the current version as described above. + +When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be +moved to a backup location and a fresh, empty database will be created. A +warning is recorded in the logs. If your RabbitMQ installation contains +important data then we recommend you contact support at rabbitmq.com for +assistance with the upgrade. diff --git a/release-notes/README.md b/release-notes/README.md new file mode 100644 index 0000000000..3756ac7386 --- /dev/null +++ b/release-notes/README.md @@ -0,0 +1,16 @@ +# Release Notes + +This directory contains the source of release notes starting with RabbitMQ `3.5.7` +as well as archived notes for earlier releases. + +The notes are published together with releases [on GitHub](https://github.com/rabbitmq/rabbitmq-server/releases) +and most commonly discovered via the [change log page](https://rabbitmq.com/changelog.html). + +This may include WIP notes for unreleased versions or preview releases. + +## Archived Pre-GitHub Notes + +This directory contains release notes for releases from `1.1.x` through `3.5.0`, +which pre-date the migration to GitHub. They are preserved both for historical +purposes and to keep the [change log](https://rabbitmq.com/changelog.html) links functional, +so their names were not modified to match the `X.Y.Z.md` pattern.