1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 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`.
|