Skip to content

Commit 8cac114

Browse files
Merge pull request #7519 from rabbitmq/mergify/bp/v3.12.x/pr-7518
Initial 3.12 release notes (backport #7518)
2 parents 66d7916 + bb68276 commit 8cac114

File tree

2 files changed

+208
-1
lines changed

2 files changed

+208
-1
lines changed

release-notes/3.11.0.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ RabbitMQ 3.11 is a new feature release.
44

55
## Highlights
66

7-
This release includes several new featues and optimizations, graduates (makes mandatory) a number of feature flags,
7+
This release includes several new features and optimizations, graduates (makes mandatory) a number of feature flags,
88
bumps minimum required version to Erlang 25 for ARM64 CPU feature parity.
99

1010
The areas that have seen the biggest improvements in this release are

release-notes/3.12.0.md

Lines changed: 207 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,207 @@
1+
## RabbitMQ 3.12.0
2+
3+
RabbitMQ 3.12 is a new feature release.
4+
5+
## Highlights
6+
7+
This release includes several new features and optimizations and graduates (makes mandatory) a number of feature flags.
8+
9+
The user-facing areas that have seen the biggest improvements in this release are
10+
11+
* Lower MQTT and Web MQTT memory footprint per connection
12+
* Classic queue message store memory efficiency and footprint predictability
13+
* OAuth 2, OIDC, IDP support
14+
15+
This release also features many internal API improvements in preparation to 4.0
16+
with [Khepri](https://www.youtube.com/watch?v=huT-zmXvfuM).
17+
18+
See Compatibility Notes below to learn about breaking or potentially breaking changes in this release.
19+
20+
## Obtaining Packages
21+
22+
RabbitMQ releases are distributed via [GitHub](https://github.com/rabbitmq/rabbitmq-server/releases), [Cloudsmith](https://cloudsmith.io/~rabbitmq/repos/),
23+
and [PackageCloud](https://packagecloud.io/rabbitmq).
24+
25+
26+
### Erlang/OTP Compatibility Notes
27+
28+
This release [requires Erlang 25.0](https://www.rabbitmq.com/which-erlang.html) or later.
29+
This introduces feature parity for x86- and ARM64-based CPUs: Erlang 25 offers the JIT and
30+
[modern Flame Graph profiling](https://blog.rabbitmq.com/posts/2022/05/flame-graphs/) tooling
31+
for both of those major CPU architectures.
32+
33+
[Provisioning Latest Erlang Releases](https://www.rabbitmq.com/which-erlang.html#erlang-repositories) explains
34+
what package repositories and tools can be used to provision latest patch versions of Erlang 25.x.
35+
36+
37+
## Upgrading to 3.12
38+
39+
### Documentation guides on upgrades
40+
41+
See the [Upgrading guide](https://www.rabbitmq.com/upgrade.html) for documentation on upgrades and [RabbitMQ change log](https://www.rabbitmq.com/changelog.html)
42+
for release notes of other releases.
43+
44+
### Required Feature Flags
45+
46+
RabbitMQ 3.12.0 will require all feature flags from the 3.11.x release series to be enabled before upgrading,
47+
similarly to how [3.11.0 required all feature flags introduced before 3.9.0](https://blog.rabbitmq.com/posts/2022/07/required-feature-flags-in-rabbitmq-3.11/).
48+
49+
If the feature flags are not enabled, RabbitMQ 3.12 and later nodes will refuse to start.
50+
51+
### Mixed version cluster compatibility
52+
53+
RabbitMQ 3.12.0 nodes can run alongside `3.11.x` nodes. `3.12.x`-specific features can only be made available when all nodes in the cluster
54+
upgrade to 3.12.0 or any other patch release in the new series.
55+
56+
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.
57+
Once all nodes are upgraded to 3.12.0, these irregularities will go away.
58+
59+
Mixed version clusters are a mechanism that allows rolling upgrade and are not meant to be run for extended
60+
periods of time (no more than a few hours).
61+
62+
63+
64+
## Compatibility Notes
65+
66+
### More Feature Flags Gratuate to Core Features ("Always Enabled")
67+
68+
RabbitMQ 3.12.0 will require **all** feature flags from the 3.11.x release series to be enabled before upgrading.
69+
70+
If the feature flags are not enabled, RabbitMQ 3.12 and later nodes will refuse to start.
71+
72+
### Minimum Supported Erlang Version
73+
74+
Starting with this release, RabbitMQ requires Erlang 25.0 or later versions. Nodes **will fail to start**
75+
on older Erlang releases.
76+
77+
Erlang 25 as our new baseline means much improved performance on ARM64 architectures, [profiling with flame graphs](https://blog.rabbitmq.com/posts/2022/05/flame-graphs/)
78+
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.
79+
80+
81+
### Client Library Compatibility
82+
83+
Client libraries that were compatible with RabbitMQ `3.11.x` will be compatible with `3.12.0`.
84+
85+
86+
87+
### Getting Help
88+
89+
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).
90+
91+
92+
93+
## Changes Worth Mentioning
94+
95+
Release notes are kept under [rabbitmq-server/release-notes](https://github.com/rabbitmq/rabbitmq-server/tree/v3.11.x/release-notes).
96+
97+
### Core Server
98+
99+
#### Bug Fixes
100+
101+
All bug fixes worth mentioning in this release have also shipped
102+
in the `3.11.x` release series.
103+
104+
#### Enhancements
105+
106+
* Reduced memory footprint, improved memory use predictability and throughput of classic queues.
107+
This particularly benefits classic queues with longer backlogs.
108+
109+
GitHub issue: [#4522](https://github.com/rabbitmq/rabbitmq-server/pull/4522)
110+
111+
* Reduced peak memory footprint of quorum queues.
112+
113+
GitHub issue: [#7175](https://github.com/rabbitmq/rabbitmq-server/pull/7175)
114+
115+
* Improved stream leader distribution efficiency. Mostly relevant to environments with lots of
116+
streams.
117+
118+
GitHub issue: [#6440](https://github.com/rabbitmq/rabbitmq-server/pull/6440)
119+
120+
* All [feature flags](https://www.rabbitmq.com/feature-flags.html) introduced before 3.11.0 are now required to be enabled. Make sure
121+
all feature flags are enabled before upgrading to 3.12.0.
122+
123+
GitHub issue: [#7219](https://github.com/rabbitmq/rabbitmq-server/pull/7219)
124+
125+
* Plugin and core API: all schema data store operations are now available via the `rabbit_db_*` modules.
126+
Plugin maintainers should switch to them for an easier transition to a future 4.0 release.
127+
128+
GitHub issues: [#6430](https://github.com/rabbitmq/rabbitmq-server/pull/6430), [#6821](https://github.com/rabbitmq/rabbitmq-server/pull/6821)
129+
130+
* Plugin and core API: node data directory now should be accessed using `rabbit:data_dir/0`.
131+
132+
GitHub issue: [#6462](https://github.com/rabbitmq/rabbitmq-server/pull/6462)
133+
134+
* Initial Erlang 26 compatibility
135+
136+
GitHub issues: [#7443](https://github.com/rabbitmq/rabbitmq-server/pull/7443), []()
137+
138+
* There is now a way to pre-configure user permissions for newly created virtual hosts.
139+
140+
Contributed by @illotum (AWS).
141+
142+
GitHub issue: [#7208](https://github.com/rabbitmq/rabbitmq-server/issues/7208).
143+
144+
145+
### CLI Tools
146+
147+
#### Features
148+
149+
* `rabbitmq-streams restart_stream` is a new command that can be used to kick off
150+
a new leader election for a stream. This can be used to rebalance stream leaders
151+
across cluster nodes.
152+
153+
GitHub issue: [#6440](https://github.com/rabbitmq/rabbitmq-server/pull/6440)
154+
155+
* Classic queue metrics are now available via `rabbitmq-diagnostics observer`.
156+
157+
GitHub issue: [#3314](https://github.com/rabbitmq/rabbitmq-server/pull/3314)
158+
159+
* `rabbitmqctl set_permissions_globally` is a new command that sets up user permissions in all existing virtual hosts.
160+
161+
GitHub issue: [#1000](https://github.com/rabbitmq/rabbitmq-server/issues/1000)
162+
163+
* `rabbitmq-diagnostics cluster_status` now lists how many CPU cores are available to individual nodes, plus a total.
164+
165+
GitHub issue: [#7135](https://github.com/rabbitmq/rabbitmq-server/pull/7135)
166+
167+
168+
### MQTT Plugin
169+
170+
#### Enhancements
171+
172+
* Significant (up to more than 90% with some workloads) reduction in memory footprint of MQTT connections,
173+
and a double digit % reduction in memory footprint of MQTT-over-WebSockets (Web MQTT) connections.
174+
175+
GitHub issues: [#5895](https://github.com/rabbitmq/rabbitmq-server/pull/5895), [#7091](https://github.com/rabbitmq/rabbitmq-server/pull/7091), [#7234](https://github.com/rabbitmq/rabbitmq-server/pull/7234)
176+
177+
178+
### Management Plugin
179+
180+
#### Enhancements
181+
182+
* Support for Identity Provider-initiated Login (IDP).
183+
184+
GitHub issues: [#6015](https://github.com/rabbitmq/rabbitmq-server/pull/6015), [#6201](https://github.com/rabbitmq/rabbitmq-server/pull/6201),
185+
[#6247](https://github.com/rabbitmq/rabbitmq-server/pull/6247)
186+
187+
188+
### Consul Peer Discovery Plugin
189+
190+
#### Bug Fixes
191+
192+
* Consul peer discovery now correctly determines if the node uses long or short names.
193+
194+
Contributed by @SimonUnge (AWS).
195+
196+
GitHub issue: [#4230](https://github.com/rabbitmq/rabbitmq-server/issues/4230)
197+
198+
199+
### Dependency Changes
200+
201+
* `ra` was upgraded [to `2.4.9`](https://github.com/rabbitmq/ra/releases)
202+
203+
204+
## Source Code Archives
205+
206+
To obtain source code of the entire distribution, please download the archive named `rabbitmq-server-3.12.0.tar.xz`
207+
instead of the source tarball produced by GitHub.

0 commit comments

Comments
 (0)