Skip to content

Commit 0eba96e

Browse files
michaelklishinmergify-bot
authored andcommitted
Upgrade eetcd to 0.3.5
(cherry picked from commit aa026a7) (cherry picked from commit 10b8b59) # Conflicts: # release-notes/3.10.0.md
1 parent 1aa5be8 commit 0eba96e

File tree

3 files changed

+328
-1
lines changed

3 files changed

+328
-1
lines changed

deps/rabbitmq_peer_discovery_etcd/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ DEPS = rabbit_common rabbitmq_peer_discovery_common rabbit eetcd gun
66
TEST_DEPS = rabbitmq_ct_helpers rabbitmq_ct_client_helpers ct_helper meck
77
dep_ct_helper = git https://github.com/extend/ct_helper.git master
88
dep_gun = hex 1.3.3
9-
dep_eetcd = hex 0.3.3
9+
dep_eetcd = hex 0.3.5
1010

1111
DEP_EARLY_PLUGINS = rabbit_common/mk/rabbitmq-early-plugin.mk
1212
DEP_PLUGINS = rabbit_common/mk/rabbitmq-plugin.mk

release-notes/3.10.0.md

Lines changed: 326 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,326 @@
1+
## Highlights
2+
3+
This release improves efficiency of quorum and classic queues. Per-queue memory footprint was reduced for some
4+
workloads.
5+
6+
It also introduces message TTL support for quorum queues.
7+
8+
## Obtaining Packages
9+
10+
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).
11+
12+
13+
### Erlang/OTP Compatibility Notes
14+
15+
This release [requires Erlang 23.2](https://www.rabbitmq.com/which-erlang.html) or later. Erlang 24 is recommended as it [offers 20%-50% throughput improvements](https://blog.rabbitmq.com/posts/2021/03/erlang-24-support-roadmap/) for many workloads.
16+
17+
[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 23.3.x and 24.x.
18+
19+
20+
21+
## Upgrading to 3.10
22+
23+
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.
24+
25+
RabbitMQ 3.10.0 nodes can run alongside `3.9.x` nodes. `3.10.x`-specific features can only be made available when all nodes in the cluster
26+
upgrade to 3.10.0 or any other patch release in the series.
27+
28+
While operating in mixed version mode, some aspects of the system may not behave as expected. The list of known behavior changes is covered below.
29+
Once all nodes are upgraded to 3.10.0, these irregularities will go away.
30+
31+
Mixed version clusters are a mechanism that allows rolling upgrade and are not meant to be run for extended
32+
periods of time (no more than a few hours).
33+
34+
35+
36+
## Compatibility Notes
37+
38+
### Client Library Compatibility
39+
40+
Client libraries that were compatible with RabbitMQ `3.9.x` will be compatible with `3.10.0`.
41+
42+
43+
### Upgrading to Erlang 24.x
44+
45+
RabbitMQ `3.8.16` and later require Erlang `23.2` and support Erlang `24` (recommended).
46+
Users of RabbitMQ versions that [do not support Erlang 23.2](https://www.rabbitmq.com/which-erlang.html) should first upgrade to the latest `3.8.x` patch release on Erlang 23.2,
47+
then upgrade to `3.10.0`, and ideally Erlang 24.
48+
49+
50+
### Getting Help
51+
52+
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).
53+
54+
55+
56+
## Changes Worth Mentioning
57+
58+
Release notes are kept under [rabbitmq-server/release-notes](https://github.com/rabbitmq/rabbitmq-server/tree/v3.10.x/release-notes).
59+
60+
61+
### Core Server
62+
63+
#### Enhancements
64+
65+
* Reduced memory footprint of quorum queues. Quorum queues now move enqueues messages to disk as quickly as
66+
possible, ignoring the `x-max-in-memory-length` and `x-max-in-memory-bytes` policy keys. This reduces per-queue memory footprint
67+
and makes throughput and latency less variable.
68+
69+
GitHub issue: [#3898](https://github.com/rabbitmq/rabbitmq-server/issues/3898)
70+
71+
* New classic queue index and message store implementations. This makes memory footprint of classic queues less variable
72+
and on average, lower than before. Consumer delivery is more efficient, potentially increasing throughput for workloads
73+
where consumers do keep up with producers.
74+
75+
This implementation is not enabled by default. It can be enabled using a policy:
76+
77+
``` shell
78+
rabbitmqctl set_policy cq_version "^cq\." '{"queue-version": 2}' --priority 1 --apply-to queues
79+
```
80+
81+
or set via `rabbitmq.conf`:
82+
83+
``` ini
84+
classic_queue.default_version = 2
85+
```
86+
GitHub issue: [#3029](https://github.com/rabbitmq/rabbitmq-server/pull/3029)
87+
88+
* Quorum queues now support [message TTL](https://rabbitmq.com/ttl.html).
89+
90+
GitHub issue: [#3121](https://github.com/rabbitmq/rabbitmq-server/pull/3121)
91+
92+
* Reduced per-queue garbage collection.
93+
94+
GitHub issue: [#4110](https://github.com/rabbitmq/rabbitmq-server/pull/4110)
95+
96+
* Stream replication connections now adopt [TLS settings configured for inter-node communication links](https://rabbitmq.com/clustering-ssl.html).
97+
98+
GitHub issue: [#3553](https://github.com/rabbitmq/rabbitmq-server/pull/3553)
99+
100+
* Quorum queues now support two [dead lettering](https://rabbitmq.com/dlx.html) strategies, at-most-once (the 3.9 quorum queue and classic queue behavior)
101+
and at-least-once.
102+
103+
To use at-least-once the user must opt-in.
104+
105+
GitHub issue: [#3100](https://github.com/rabbitmq/rabbitmq-server/issues/3100)
106+
107+
* Messages delivered by a quorum queue and negatively acknowledged with a requeue will be added to the back of the queue
108+
until the queue has redelivery limit set. With a redelivery limit, requeueing will use the original position of the message
109+
if possible.
110+
111+
This improves operational safety: consumers that get stuck or requeue deliveries at a high rate will not indefinitely
112+
grow quorum queue Raft log, potentially driving the node out of disk space.
113+
114+
![Breaking change](https://img.shields.io/badge/-Breaking%20change-red) This is a **potentially breaking change**.
115+
Applications can make sure quorum queues have a redelivery limit
116+
set if the original behavior is important to keep.
117+
118+
GitHub issue: [#3776](https://github.com/rabbitmq/rabbitmq-server/issues/3776)
119+
120+
* [Boot time definition sync](https://rabbitmq.com/definitions.html#import-on-boot) now can be skipped if definition source (e.g. file or directory) contents
121+
have not changed:
122+
123+
``` ini
124+
definitions.skip_if_unchanged = true
125+
126+
definitions.import_backend = local_filesystem
127+
definitions.local.path = /path/to/definitions/defs.json
128+
```
129+
130+
GitHub issue: [#4062](https://github.com/rabbitmq/rabbitmq-server/pull/4062)
131+
132+
* Classic mirrored queues peak eager sync throughput now can be limited.
133+
134+
Contributed by @thuandb (AWS).
135+
136+
GitHub issue: [#3925](https://github.com/rabbitmq/rabbitmq-server/pull/3925)
137+
138+
* Headers exchanges (AMQP 0-9-1) now support a new matching strategy, `"any-with-x"`,
139+
which works the same way as `"any"` but also considers headers that begin with
140+
an `"x-"`.
141+
142+
GitHub issue: [#4143](https://github.com/rabbitmq/rabbitmq-server/pull/4143)
143+
144+
* Queues can no longer be created in a vhost while deletion of that vhost is in progress
145+
146+
Contributed by @tomyouyou.
147+
148+
GitHub issue: [#4260](https://github.com/rabbitmq/rabbitmq-server/pull/4260)
149+
150+
* rabbitmqctl encode/decode can now accept more values via standard input
151+
152+
GitHub issue: [#4258](https://github.com/rabbitmq/rabbitmq-server/pull/4258)
153+
154+
* rabbitmq_tracing now uses local time for timestamps
155+
156+
GitHub issue: [#4277](https://github.com/rabbitmq/rabbitmq-server/pull/4277)
157+
158+
159+
#### Internal API and Other Changes
160+
161+
* Two rarely used classic queue metrics have been removed. Their removal reduces pressure
162+
on internal table writes and boosts classic queue v1 throughput by 10 to 20 percent.
163+
164+
Contributed by @felixhuettner.
165+
166+
GitHub issue: [#4431](https://github.com/rabbitmq/rabbitmq-server/pull/4431)
167+
168+
* Tracing and `idle_since` timestamps now reflect local time in RFC 3339 format. Previously
169+
a custom format was used for these timestamps and they always reflected UTC time.
170+
171+
GitHub issue: [#4276](https://github.com/rabbitmq/rabbitmq-server/pull/4276)
172+
173+
* Inter-node message transfer is optimized for the case where a message is only routed to one queue.
174+
175+
Contributed by @tomyouyou.
176+
177+
GitHub issue: [#3865](https://github.com/rabbitmq/rabbitmq-server/pull/3865)
178+
179+
* Definition import now can be extended to support arbitrary sources. This is done
180+
by providing a module that implements three functions: `is_enabled/0`, `load/1`, `load_with_hashing/3`.
181+
The module can then should be specified as the `definitions.import_backend` value:
182+
183+
``` ini
184+
definitions.import_backend = rabbit_definitions_import_our_custom_backend
185+
```
186+
187+
GitHub issue: [#3311](https://github.com/rabbitmq/rabbitmq-server/pull/3311)
188+
189+
190+
* Elixir 1.13 is now supported at build time.
191+
192+
GitHub issue: [#4108](https://github.com/rabbitmq/rabbitmq-server/pull/4108)
193+
194+
195+
#### Bug Fixes
196+
197+
This release includes all applicable [bug fixes that shipped in `3.9.x` releases](https://www.rabbitmq.com/changelog.html).
198+
199+
* Addressed a performance regression for large fanouts when streams were not enabled.
200+
201+
GitHub issue: [#4073](https://github.com/rabbitmq/rabbitmq-server/pull/4073)
202+
203+
* Stream delivery rate could drop if concurrent stream consumers consumed in a way
204+
that made them reach the end of the stream often.
205+
206+
GitHub issue: [#4371](https://github.com/rabbitmq/rabbitmq-server/pull/4371)
207+
208+
* Channels could confirm a subset of messages published as mandatory in some cases.
209+
210+
GitHub issue: [#3870](https://github.com/rabbitmq/rabbitmq-server/pull/3870)
211+
212+
* Direct Erlang client initialisation had a race condition with earlier boot steps,
213+
which could lead plugins that depend on it to fail to open connections.
214+
215+
GitHub issue: [#3685](https://github.com/rabbitmq/rabbitmq-server/pull/3685)
216+
217+
* Exclusive queues are always placed on local node.
218+
219+
[Exclusive queues](https://rabbitmq.com/queues.html#exclusive-queues) are by definition node-local because they are tied to the lifecycle of
220+
their declaring connection, which is node-local.
221+
222+
GitHub issue: [#3341](https://github.com/rabbitmq/rabbitmq-server/pull/3341)
223+
224+
225+
### Prometheus Plugin
226+
227+
#### Bug Fixes
228+
229+
* Prometheus collector could run into an exception early on node's
230+
schema database sync.
231+
232+
GitHub issue: [#4376](https://github.com/rabbitmq/rabbitmq-server/pull/4376)
233+
234+
235+
### Management Plugin
236+
237+
#### Enhancements
238+
239+
* `idle_since` field now uses RFC 3339 format.
240+
241+
![Breaking change](https://img.shields.io/badge/-Breaking%20change-red) This is a **potentially breaking change**.
242+
Sample value with the previous format: `2022-03-22 11:39:37`. With the new format: `2022-03-22T11:39:37.908+01:00`.
243+
Clients of the REST API should be able to parse values in the new format.
244+
245+
GitHub issue: [#4276](https://github.com/rabbitmq/rabbitmq-server/issues/4276)
246+
247+
#### Bug Fixes
248+
249+
* `rabbitmqadmin` now correctly loads TLS-related keys from its configuration file.
250+
251+
Contributed by @fwolfsjaeger.
252+
253+
GitHub issue: [#4408](https://github.com/rabbitmq/rabbitmq-server/pull/4408)
254+
255+
256+
### MQTT Plugin
257+
258+
#### Enhancements
259+
260+
* Durable (QoS 1) subscriptions now can be backed by [quorum queues](https://www.rabbitmq.com/quorum-queues.html) if configured so.
261+
262+
This setting **can only be applied for new clusters**: existing durable classic
263+
queues will not be converted. Enabling this setting in a cluster with existing
264+
durable subscription data of MQTT clients will make it impossible for them to
265+
subscribe without **explicit queue deletion** by the cluster operator.
266+
267+
To opt in to use quorum queues for durable MQTT subscriptions, use the `mqtt.durable_queue_type`
268+
configuration key in `rabbitmq.conf`:
269+
270+
``` ini
271+
mqtt.durable_queue_type = quorum
272+
```
273+
274+
GitHub issue: [#4401](https://github.com/rabbitmq/rabbitmq-server/pull/4401)
275+
276+
277+
### OAuth 2 AuthN and AuthZ Backend Plugin
278+
279+
#### Enhancements
280+
281+
* Improvements to JKW support and new HTTPS settings.
282+
283+
Contributed by @anhanhnguyen (Erlang Solutions).
284+
285+
GitHub issue: [#3887](https://github.com/rabbitmq/rabbitmq-server/pull/3887)
286+
287+
288+
### Shovel Plugin
289+
290+
#### Enhancements
291+
292+
* Dynamic Shovels can be deleted or restarted from any cluster node
293+
294+
Contributed by @kostakal.
295+
296+
GitHub issue: [#4242](https://github.com/rabbitmq/rabbitmq-server/pull/4242)
297+
298+
#### Bug Fixes
299+
300+
* Shovels with automatic deletion threshold of `0` are now correctly deleted immediately.
301+
302+
Contribited by @luos (Erlang Solutions).
303+
304+
GitHub issue: [#4098](https://github.com/rabbitmq/rabbitmq-server/pull/4098)
305+
306+
307+
### Consul Peer Discovery Plugin
308+
309+
#### Bug Fixes
310+
311+
* Handle a response code change in Consul 1.11.
312+
313+
Contributed by @maestroes.
314+
315+
GitHub issue: [#4149](https://github.com/rabbitmq/rabbitmq-server/issues/4149)
316+
317+
318+
### Dependency Changes
319+
320+
* `ra` upgraded from [`2.0.0` to `2.0.7`](https://github.com/rabbitmq/ra/compare/v2.0.0...v2.0.7)
321+
* `osiris` upgraded from [`1.0.0` to `1.2.4`](https://github.com/rabbitmq/osiris/compare/v1.0.0...v1.2.4)
322+
* `ranch` upgraded from [`2.0.0` to `2.1.0`](https://github.com/ninenines/ranch/compare/2.0.0...2.1.0)
323+
* `prometheus` upgraded from [`4.8.1` to `4.8.2`](https://github.com/deadtrickster/prometheus.erl/compare/06425c21a39c1564164f1cc3fe5bdfa8b23b1f78...v4.8.2)
324+
* `eetcd` upgraded from [`0.3.3` to `0.3.5`](https://github.com/zhongwencool/eetcd/compare/v0.3.3...v0.3.5)
325+
* `observer_cli` upgraded from [`1.6.2` to `1.7.2`](https://github.com/zhongwencool/observer_cli/compare/1.6.2...1.7.2)
326+
* `gen_batch_server` upgraded from [`0.8.6` to `0.8.7`](https://github.com/rabbitmq/gen-batch-server/compare/38191672ee0f22a8d5291c6c09f8c07178d565ca...v0.8.7)

release-notes/3.9.15.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ Contributors are encouraged to update them together with their changes. This hel
7575

7676
* `ra` upgraded [from `2.0.4` to `2.0.7`](https://github.com/rabbitmq/ra/compare/v2.0.4...v2.0.7)
7777
* `prometheus` upgraded from [`4.8.1` to `4.8.2`](https://github.com/deadtrickster/prometheus.erl/compare/06425c21a39c1564164f1cc3fe5bdfa8b23b1f78...v4.8.2)
78+
* `eetcd` upgraded from [`0.3.3` to `0.3.5`](https://github.com/zhongwencool/eetcd/compare/v0.3.3...v0.3.5)
7879

7980

8081
## Source Code Archives

0 commit comments

Comments
 (0)