Commit Graph

548 Commits

Author SHA1 Message Date
David Ansari ac49cc638c Link from 4.1.0 release notes to blog post 2025-04-07 10:31:35 +02:00
Michael Klishin 2af6181ece
Update 4.0.8 release notes
[skip ci]
2025-04-03 00:24:50 -04:00
Michael Klishin 5a9482dfef
One more tweak to 4.1.0-rc.1 release notes 2025-04-02 13:00:45 -04:00
Michael Klishin 82480e42a7
4.1.0 release notes: upgrades from 3.13.x are supported 2025-04-01 22:48:03 -04:00
Michael Klishin 13542dcc5e
4.1.0 release notes: we're at rc.1 2025-04-01 22:41:23 -04:00
Michael Klishin 9360f671e8
4.1.0 release notes: QQ parallelism improvements is a release highlight 2025-04-01 22:36:57 -04:00
Michael Klishin 45f0f1cb97
4.0.8 release notes fixes 2025-04-01 22:05:18 -04:00
Michael Klishin 402eb3a883
Update 4.1.0 release notes 2025-04-01 22:03:55 -04:00
Michael Klishin 5b99c6b5b9
4.1.0-rc.1 release notes 2025-04-01 22:02:01 -04:00
Michael Klishin 213822eb5d
4.0.8 release notes
[skip ci]
2025-04-01 18:57:30 -04:00
Michael Klishin a0e6c23a82
Update 4.1.0.md 2025-03-26 09:26:06 -04:00
Michael Klishin 22e4853e7d
4.1.0 release notes: update Ra version 2025-03-20 02:13:14 -04:00
Michael Klishin 5d882a18f7
4.1.0 release notes updates for beta.5 2025-03-20 02:05:58 -04:00
Michael Klishin 18533d4dee
Mention #13541 #13542 #13549 13551 in release notes
References #13537.
2025-03-17 16:54:31 -04:00
Michael Klishin ffcf9a27a4
Osiris 1.8.6 2025-03-01 19:26:08 -05:00
Michael Klishin cdc042a2fd
4.0.7 release notes: a typo 2025-02-26 14:15:25 -05:00
Michael Klishin 9857128380
4.0.7 release notes 2025-02-26 13:18:37 -05:00
Michael Klishin 7117817076
A minor 4.0.1 release notes update 2025-02-12 12:47:55 -05:00
Michael Klishin c4debab355
Update 4.0.1 release notes to mention one more major pain point that Khepri addresses 2025-02-12 12:35:40 -05:00
David Ansari c5867a7bd3 Add 4.1.0 release notes 2025-02-12 17:17:28 +01:00
Michael Klishin 631a205210
4.0.6 release notes: a missing link 2025-02-10 23:44:58 -05:00
Michael Klishin 7ba05db808
Bump 4.1.0 beta version in release notes 2025-02-10 23:41:25 -05:00
Michael Klishin 4d1b903427
4.1.0-beta.4 release notes: a typo 2025-02-10 23:40:14 -05:00
Michael Klishin 428399dcec
4.0.6 release notes: a typo 2025-02-10 23:40:00 -05:00
Michael Klishin b341a39e65
Update 4.1.0 release notes 2025-02-10 23:38:35 -05:00
Michael Klishin f920baf572
Wording 2025-02-10 23:25:15 -05:00
Michael Klishin e413907a3f
4.0.6 release notes 2025-02-10 21:36:52 -05:00
David Ansari 658d9c7c62 Upgrade eetcd and gun
## Why?

To introduce AMQP over WebSocket, we will add gun to the Erlang AMQP
1.0 client. We want to add the latest version of gun for this new
feature. Since rabbitmq_peer_discovery_etcd depends on the outdated
eetcd 0.3.6 which in turn depends on the outdated gun 1.3.3, this commit
first upgrades eetcd and gun.

 ## How?
See https://github.com/zhongwencool/eetcd?tab=readme-ov-file#migration-from-eetcd-03x-to-04x

 ## Breaking Changes

This commit causes the following breaking change:
`rabbitmq.conf` settings
* `cluster_formation.etcd.ssl_options.fail_if_no_peer_cert`
* `cluster_formation.etcd.ssl_options.dh`
* `cluster_formation.etcd.ssl_options.dhfile`

are unsupported because they are not valid `ssl:tls_client_option()`.

See https://github.com/erlang/otp/issues/7497#issuecomment-1636012198
2024-12-19 13:20:28 +00:00
Michael Klishin 55459bcd0e
Correct a few 4.0.5 release notes typos 2024-12-18 16:10:13 -05:00
Michael Klishin 96ebce8c00
4.0.5 release notes update 2024-12-15 23:03:10 -05:00
Michael Klishin 11e5de0972
4.0.5 release notes 2024-12-15 22:45:38 -05:00
Michael Klishin fc4a6915bb
Update 4.1.0.md 2024-12-10 21:50:18 -05:00
Michael Klishin 0ebef2a72f
Release notes: 4.1.0-beta.3 is out, bump to 4.1.0-beta.4 2024-12-10 20:19:03 -05:00
Michael Klishin dbd03d7248
List #10519 #12564 in 4.1.0 release notes 2024-12-10 20:04:47 -05:00
Michael Klishin 8bb4719de8
4.1.0 release notes updates 2024-12-10 19:57:44 -05:00
Michael Klishin d6859988c1
4.0.4 release notes: typos 2024-12-06 22:03:21 -05:00
Michael Klishin 7946f6de0c
Two more cosmetic 4.0.4 release notes updates 2024-11-21 20:51:33 -05:00
Michael Klishin 3a5d057f5a
4.0.4 release notes: correct a link 2024-11-21 20:20:35 -05:00
Michael Klishin d6620a596d
Add #10275 #12765 to 4.1.0 release notes 2024-11-20 18:44:00 -05:00
Michael Klishin 37f7b3ff11
Update 4.0.4 release notes 2024-11-20 18:41:32 -05:00
Michael Klishin de90cfc07a
4.0.4 release notes: a typo 2024-11-19 21:40:30 -05:00
Michael Klishin f8344d6481
4.0.4 release notes 2024-11-19 21:30:18 -05:00
Michael Klishin e7e11ae6b9
4.1.0 release notes: use the standard format (same as 4.0.x, 3.13.x, and prior series) 2024-11-19 20:46:32 -05:00
Michael Klishin 8df2deb36e
4.1.0 release notes: 4.1.0-beta.1 is out 2024-11-15 00:54:00 -05:00
David Ansari de804d1fa7 Support publishing AMQP 1.0 to Event Exchange
## What?

Prior to this commit, the `rabbitmq_event_exchange` internally published
always AMQP 0.9.1 messages to the `amq.rabbitmq.event` topic exchange.
This commit allows users to configure the plugin to publish AMQP 1.0
messages instead.

 ## Why?

Prior to this commit, when an AMQP 1.0 client consumed events,
event properties that are lists were omitted. For example property
`client_properties` of event `connection.created` or property
`arguments` of event `queue.created` were omitted because of the following sequence:
1. The event exchange plugins listens for all kind of internal events.
2. The event exchange plugin re-publishes all events as AMQP 0.9.1 message to the event exchange.
3. Later, when an AMQP 1.0 client consumes this message, the broker must translate the message from AMQP 0.9.1 to AMQP 1.0.
4. This translation follows the rules outlined in https://www.rabbitmq.com/docs/conversions#amqpl-amqp
5. Specifically, in this table the row before the last one describes the rule we're hitting here. It says that if the AMQP 0.9.1
header value is not an `x-` prefixed header and its value is an array or table, then this header is not converted.
That's because AMQP 1.0 application-properties must be simple types as mandated in https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-application-properties

 ## How?

The user can configure the plugin as follows to have the plugin
internally publish AMQP 1.0 messages:
```
event_exchange.protocol = amqp_1_0
```

To support complex types such as lists, the plugin sets all event
properties as AMQP 1.0 message-annotations. The plugin prefixes all message
annotation keys with `x-opt-` to comply with the AMQP 1.0 spec.

 ## Alternative Design

An alternative design would have been to format all event properties
e.g. as JSON within the message body. However, this breaks routing on
specific event property values via a headers exchange.

 ## Documentation
https://github.com/rabbitmq/rabbitmq-website/pull/2129
2024-11-14 12:52:09 +01:00
Michael Klishin 6c16b4dd64
4.0.1 release notes: clarify that Blue/Green deployments are an option for 3.13.x clusters with Khepri enabled 2024-11-12 19:26:21 -05:00
David Ansari 9d0c851df2 Show session and link details for AMQP 1.0 connection
## What?

On the connection page in the Management UI, display detailed session and
link information including:
* Link names
* Link target and source addresses
* Link flow control state
* Session flow control state
* Number of unconfirmed and unacknowledged messages

 ## How?

A new HTTP API endpoint is added:
```
/connections/:connection_name/sessions
```

The HTTP handler first queries the Erlang connection process to find out about
all session Pids. The handler then queries each Erlang session process
of this connection.

(The table auto-refreshes by default every 5 seconds. The handler querying a single
connection with 60 idle sessions with each 250 links takes ~100 ms.)

For better user experience in the Management UI, this commit also makes the
session process store and expose link names as well as source/target addresses.
2024-11-07 15:11:42 +01:00
Jean-Sébastien Pédron 2f9edf119d
release-notes/4.1.0.md: Document feature flags improvements 2024-11-06 13:24:13 +01:00
David Ansari 3db4a97cfb Expose AMQP connection metrics
Expose the same metrics for AMQP 1.0 connections as for AMQP 0.9.1 connections.

Display the following AMQP 1.0 metrics on the Management UI:
* Network bytes per second from/to client on connections page
* Number of sessions/channels on connections page
* Network bytes per second from/to client graph on connection page
* Reductions graph on connection page
* Garbage colletion info on connection page

Expose the following AMQP 1.0 per-object Prometheus metrics:
* rabbitmq_connection_incoming_bytes_total
* rabbitmq_connection_outgoing_bytes_total
* rabbitmq_connection_process_reductions_total
* rabbitmq_connection_incoming_packets_total
* rabbitmq_connection_outgoing_packets_total
* rabbitmq_connection_pending_packets
* rabbitmq_connection_channels

The rabbit_amqp_writer proc:
* notifies the rabbit_amqp_reader proc if it sent frames
* hibernates eventually if it doesn't send any frames

The rabbit_amqp_reader proc:
* does not emit stats (update ETS tables) if no frames are received
or sent to save resources when there are many idle connections.
2024-11-02 19:08:24 +01:00
David Ansari 1778bc22aa Support AMQP 1.0 token renewal
Closes #9259.

 ## What?
Allow an AMQP 1.0 client to renew an OAuth 2.0 token before it expires.

 ## Why?
This allows clients to keep the AMQP connection open instead of having
to create a new connection whenever the token expires.

 ## How?
As explained in https://github.com/rabbitmq/rabbitmq-server/issues/9259#issuecomment-2437602040
the client can `PUT` a new token on HTTP API v2 path `/auth/tokens`.
RabbitMQ will then:
1. Store the new token on the given connection.
2. Recheck access to the connection's vhost.
3. Clear all permission caches in the AMQP sessions.
4. Recheck write permissions to exchanges for links publishing to
   RabbitMQ, and recheck read permissions from queues for links
   consuming from RabbitMQ. The latter complies with the user
   expectation in #11364.
2024-10-30 10:42:40 +01:00