summaryrefslogtreecommitdiff
path: root/release-notes/3.9.21.md
blob: 72fc367f7e0213b3b14105e25071ef19486c3189 (plain)
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
RabbitMQ `3.9.21` is a maintenance release in the `3.9.x` release series.

Please refer to the **Upgrading to 3.9** section from [v3.9.0 release notes](https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.9.0) if upgrading from a version prior to 3.9.0.

This release requires at least Erlang 23.2, and supports Erlang 24. [RabbitMQ and Erlang/OTP Compatibility Matrix](https://www.rabbitmq.com/which-erlang.html) has more details on Erlang version requirements for RabbitMQ.


## Changes Worth Mentioning

Release notes can be found on GitHub at [rabbitmq-server/release-notes](https://github.com/rabbitmq/rabbitmq-server/tree/v3.10.x/release-notes).


### Core Server

#### Enhancements

 * Optimization: internal message GUID is no longer generated for quorum queues and streams, as they
   are specific to classic queues.

   GitHub issue: [#5005](https://github.com/rabbitmq/rabbitmq-server/pull/5005)

 * Two more AMQP 1.0 connection lifecycle events are now logged.

   GitHub issue: [#4984](https://github.com/rabbitmq/rabbitmq-server/pull/4984)

 * TLS configuration for inter-node stream replication connections now can
   use function references and definitions.

   GitHub issue: [#4991](https://github.com/rabbitmq/rabbitmq-server/pull/4991)

 * Stream protocol connection logging is now less verbose.

   GitHub issue: [#5039](https://github.com/rabbitmq/rabbitmq-server/pull/5039)

 * Max stream segment size is now limited to 3 GiB to avoid a potential stream position overflow.

   GitHub issue: [#5035](https://github.com/rabbitmq/rabbitmq-server/pull/5035)

 * Logging messages that use microseconds now use "us" for the SI symbol to be compatible with more
   tools.

   GitHub issue: [#5127](https://github.com/rabbitmq/rabbitmq-server/pull/5127)

#### Bug Fixes

 * Channels on connections to mixed clusters that had 3.8 nodes in them could run into
   an exception.

   GitHub issue: [#5141](https://github.com/rabbitmq/rabbitmq-server/issues/5141)

 * Inter-node cluster link statistics did not have any data when TLS was enabled for them.

   GitHub issue: [#4981](https://github.com/rabbitmq/rabbitmq-server/issues/4981)

 * Quorum queues now correctly propagate errors when a `basic.get` (polling consumption) operation hits
   a timeout.

   Contributed by Ayanda @Ayanda-D Dube.

   GitHub issue: [#5109](https://github.com/rabbitmq/rabbitmq-server/pull/5109)

 * Stream consumer that used AMQP 0-9-1 instead of a stream protocol client, and disconnected,
   leaked a file handle.

   GitHub issue: [#5088](https://github.com/rabbitmq/rabbitmq-server/pull/5088)

 * Max frame size and client heartbeat parameters for [RabbitMQ stream]() clients were not correctly
   set when taken from `rabbitmq.conf`.

   GitHub issue: [#5136](https://github.com/rabbitmq/rabbitmq-server/pull/5136)

 * Removed a duplicate exchange decorator set operation.

   Contributed by Péter @gomoripeti Gömöri.

   GitHub issue: [#4964](https://github.com/rabbitmq/rabbitmq-server/pull/4964)


### Consistent Hashing Exchange Plugin

#### Bug Fixes

 * Node restarts could result in a hashing ring inconsistency.

   This required a **potentially breaking change**: this exchange type
   now only allows for **one binding between an exchange and a queue** (or another exchange).
   All subsequent binding operations between them will be ignored, so "first write wins".

   This is a natural topology for this plugin, and enforcing it helps avoid a set of
   potential issues with concurrent node restarts and client operations that affect
   consistent hash ring state.

   GitHub issue: [#3386](https://github.com/rabbitmq/rabbitmq-server/issues/3386)


### Consul Peer Discovery Plugin

#### Enhancements

 * Consul peer discovery now supports client-side TLS options, much like its Kubernetes and etcd peers.

   ``` ini
   cluster_formation.consul.scheme = https
   # this assumes that Consul uses port 8501 for HTTPS clients
   cluster_formation.consul.port = 8501

   cluster_formation.consul.ssl_options.cacertfile = /path/to/consul/generated/ca_certificate.pem
   cluster_formation.consul.ssl_options.certfile = /path/to/client/certificate.pem
   cluster_formation.consul.ssl_options.keyfile = /path/to/client/client_key.pem
   ```

   GitHub issue: [#5116](https://github.com/rabbitmq/rabbitmq-server/issues/5116)


## Source Code Archives

To obtain source code of the entire distribution, please download the archive named `rabbitmq-server-3.9.21.tar.xz`
instead of the source tarball produced by GitHub.