Commit Graph

59372 Commits

Author SHA1 Message Date
Michal Kuratczyk 9d0f01b45b
Add DQT to vhost metadata on recovery
Vhosts that currently don't have their own default queue type, now
inherit it from the node configuration and store it in their metadata
going forward.
2025-05-01 17:28:32 +02:00
Michal Kuratczyk 0e743b5fe7
Adjust tests to the new behaviour 2025-05-01 17:28:32 +02:00
Michal Kuratczyk 3c95bf32e7
vhost inherits DQT from node
Rather than injecting node-level DQT when exporting definitions,
inject it into vhost's metadata when a vhost is created.
2025-05-01 17:28:32 +02:00
Michal Kuratczyk 5eb65f5f72
Remove vhost.default_queue_type from HTTP defs export 2025-05-01 17:28:32 +02:00
Michal Kuratczyk 73da2a3fbb
Fix DQT in definition export (redundant property)
The correct place for the `default_queue_type` property
is inside the `metadata` block. However, right now we'd
always export the value outside of `metadata` AND only
export it inside `metadata`, if it was not `undefined`.

This value outside of `metadata` was just misleading:
if a user exported the definitins from a fresh node,
changed `classic` to `quorum` and imported such modified
values, the DQT would still be `classic`, because RMQ looks
for the value inside `metadata`. Just to make it more confusing,
if the DQT was changed successfully one way or another, the
value outside of `metadata` would reflect that
(it always shows the correct value, but is ignored on import).
2025-05-01 17:28:32 +02:00
Marcial Rosales 1ab81f7901 Select tags column on vhosts table 2025-04-30 18:22:20 +02:00
Marcial Rosales 01ca72edc0 Test adding vhost 2025-04-30 18:08:58 +02:00
Michael Klishin 467601a62d
Merge pull request #13822 from rabbitmq/lukebakken/delete-unused-js
Remove unused Javascript functions
2025-04-29 03:09:10 +04:00
Luke Bakken 61b0f152fd
Remove unused Javascript functions
A security scanner flagged the use of `RegExp` with unsanitized input.
Turns out, these functions are no longer used and can be deleted.
2025-04-28 12:18:06 -07:00
Michael Klishin 41e7306208
Merge pull request #13820 from rabbitmq/fix-shovel-test-flakes
Shovel test flakes and logging fixes
2025-04-28 19:42:06 +04:00
Michal Kuratczyk 0f36610e9d
Don't log a crash on connection termination 2025-04-28 15:39:13 +02:00
Michal Kuratczyk 0ce6ad0f0f
Add a `flush` handler to amqp_channel
rabbit_channel may use amqp_channel as the writer.
When terminating, rabbit_channel sends a `flush` message
to its writer. If amqp_channel is in use, that led to
a `function_clause` crash.
2025-04-28 15:39:02 +02:00
Michal Kuratczyk 0ec41c6c41
Shovel: de-flake dynamic_SUITE
checking that not a single process has a message in the mailbox
is prone to flakes.
2025-04-28 14:05:27 +02:00
Michael Klishin 005bb2c790
4.0.1 release notes: remove a pre-GA leftover 2025-04-27 16:53:10 -04:00
Michael Klishin 812d51be56
4.1.0 release notes: correct a confusing typo 2025-04-27 16:50:20 -04:00
Michael Klishin 164d495dfc
Merge pull request #13818 from rabbitmq/rabbitmq-server-13767
By @aaron-seo: Adds a new auth backend that only accepts loopback connections
2025-04-27 12:58:02 +04:00
Aaron Seo 85e14c74fa
Filter out sockOrAddr from http auth backend's request query
(cherry picked from commit 844f25d77a)
2025-04-27 04:04:20 -04:00
Michael Klishin c9b2b7fb22
Naming #13809 2025-04-26 18:40:50 -04:00
Razvan Grigore 09c546a1c8
Add Socket SSL column to management UI 2025-04-26 18:40:50 -04:00
Michael Klishin 55dc63a801
Merge pull request #13817 from rabbitmq/dependabot/maven/deps/rabbitmq_auth_backend_http/examples/rabbitmq_auth_backend_spring_boot/main/prod-deps-ad66588521
[skip ci] Bump the prod-deps group across 2 directories with 1 update
2025-04-26 23:55:20 +04:00
Michael Klishin f8f5a5f91a
Merge pull request #13816 from rabbitmq/dependabot/maven/deps/rabbitmq_stream_management/test/http_SUITE_data/main/dev-deps-87f496a585
[skip ci] Bump com.google.code.gson:gson from 2.13.0 to 2.13.1 in /deps/rabbitmq_stream_management/test/http_SUITE_data in the dev-deps group across 1 directory
2025-04-26 23:55:12 +04:00
dependabot[bot] 47e65df77d
[skip ci] Bump the prod-deps group across 2 directories with 1 update
Bumps the prod-deps group with 1 update in the /deps/rabbitmq_auth_backend_http/examples/rabbitmq_auth_backend_spring_boot directory: [org.springframework.boot:spring-boot-starter-parent](https://github.com/spring-projects/spring-boot).
Bumps the prod-deps group with 1 update in the /deps/rabbitmq_auth_backend_http/examples/rabbitmq_auth_backend_spring_boot_kotlin directory: [org.springframework.boot:spring-boot-starter-parent](https://github.com/spring-projects/spring-boot).


Updates `org.springframework.boot:spring-boot-starter-parent` from 3.4.4 to 3.4.5
- [Release notes](https://github.com/spring-projects/spring-boot/releases)
- [Commits](https://github.com/spring-projects/spring-boot/compare/v3.4.4...v3.4.5)

Updates `org.springframework.boot:spring-boot-starter-parent` from 3.4.4 to 3.4.5
- [Release notes](https://github.com/spring-projects/spring-boot/releases)
- [Commits](https://github.com/spring-projects/spring-boot/compare/v3.4.4...v3.4.5)

---
updated-dependencies:
- dependency-name: org.springframework.boot:spring-boot-starter-parent
  dependency-version: 3.4.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: prod-deps
- dependency-name: org.springframework.boot:spring-boot-starter-parent
  dependency-version: 3.4.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: prod-deps
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-26 18:59:25 +00:00
dependabot[bot] 1a6f603254
[skip ci] Bump com.google.code.gson:gson
Bumps the dev-deps group with 1 update in the /deps/rabbitmq_stream_management/test/http_SUITE_data directory: [com.google.code.gson:gson](https://github.com/google/gson).


Updates `com.google.code.gson:gson` from 2.13.0 to 2.13.1
- [Release notes](https://github.com/google/gson/releases)
- [Changelog](https://github.com/google/gson/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google/gson/compare/gson-parent-2.13.0...gson-parent-2.13.1)

---
updated-dependencies:
- dependency-name: com.google.code.gson:gson
  dependency-version: 2.13.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-deps
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-26 18:58:40 +00:00
Michael Klishin 8bf8c2e688
Merge pull request #13787 from rabbitmq/add-id-tag-to-some-management-ui-pages
Add queues and streams page and test suite
2025-04-25 23:26:53 +04:00
Michael Klishin 8dd27ee7ff
Merge pull request #13804 from rabbitmq/dependabot/github_actions/main/google-github-actions/auth-2.1.10
Bump google-github-actions/auth from 2.1.9 to 2.1.10
2025-04-25 23:18:38 +04:00
dependabot[bot] 715823c5bb
Bump google-github-actions/auth from 2.1.9 to 2.1.10
Bumps [google-github-actions/auth](https://github.com/google-github-actions/auth) from 2.1.9 to 2.1.10.
- [Release notes](https://github.com/google-github-actions/auth/releases)
- [Changelog](https://github.com/google-github-actions/auth/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google-github-actions/auth/compare/v2.1.9...v2.1.10)

---
updated-dependencies:
- dependency-name: google-github-actions/auth
  dependency-version: 2.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-25 18:39:38 +00:00
Michael Klishin 1806a45461
Merge pull request #13798 from rabbitmq/amqp091-to-amqp10-shovel-bug
Fix amqp091->amqp10 shovel with complex headers
2025-04-25 21:19:29 +04:00
Marcial Rosales 0cb63bb544 Add queues and streams page and test suite 2025-04-25 17:04:40 +02:00
Michael Klishin 5bd8b3d09f
Merge pull request #13752 from rabbitmq/use-env-var-list-plugins
Selenium suites: use RABBITMQ_ENABLED_PLUGINS over RABBITMQ_ENABLED_PLUGINS_FILE
2025-04-25 18:56:41 +04:00
Marcial Rosales 0b1a4d283b Remove commented out exchange 2025-04-25 16:34:09 +02:00
Michal Kuratczyk c5271ea602
Some AMQP 0.9.1 headers, in particular x-death headers, cannot be set as
application properties. Before this change, trying to shovel
dead-lettered messages from an AMQP 0.9.1 source to AMQP 1.0 destination
would fail with:
```
reason: {badarg,
            [{unicode,characters_to_binary,
                 [[{table,
                       [{<<"count">>,long,1},
                        {<<"reason">>,longstr,<<"maxlen">>},
                        {<<"queue">>,longstr,<<"tmp">>},
                        {<<"time">>,timestamp,1745575728},
                        {<<"exchange">>,longstr,<<>>},
                        {<<"routing-keys">>,array,
                         [{longstr,<<"tmp">>}]}]}]],
                 [{file,"unicode.erl"},
                  {line,1219},
                  {error_info,#{module => erl_stdlib_errors}}]},
             {amqp10_client_types,utf8,1,
                 [{file,"amqp10_client_types.erl"},{line,99}]},
             {amqp10_msg,'-set_application_properties/2-fun-0-',3,
                 [{file,"amqp10_msg.erl"},{line,385}]},
             {maps,fold_1,4,[{file,"maps.erl"},{line,860}]},
             {amqp10_msg,set_application_properties,2,
                 [{file,"amqp10_msg.erl"},{line,384}]},
             {maps,fold_1,4,[{file,"maps.erl"},{line,860}]},
             {rabbit_amqp10_shovel,forward,4,
                 [{file,"rabbit_amqp10_shovel.erl"},{line,337}]},
             {rabbit_shovel_worker,handle_info,2,
                 [{file,"rabbit_shovel_worker.erl"},{line,104}]}]}
```
2025-04-25 15:46:45 +02:00
Marcial Rosales 9e69496c85 Remove event exchange 2025-04-25 14:23:07 +02:00
Marcial Rosales b6d2ff85b2 Parse multi-line enabled_plugins
Use only needed required plugins for basic auth suite
2025-04-25 14:23:07 +02:00
Marcial Rosales ceb7b244f2 Convert multiline enabled_plugins to single value 2025-04-25 14:23:07 +02:00
Marcial Rosales 6262c849a2 Use RABBITMQ_ENABLED_PLUGINS instead of RABBITMQ_ENABLED_PLUGINS_FILE
gmake was ignoring the former env var.
2025-04-25 14:23:07 +02:00
Aaron Seo 3bcdc0f359
Fallback to original implementation of plain auth_mechanism if socket is not provided 2025-04-24 13:41:57 -07:00
Michael Klishin a22fa85784
Merge pull request #13792 from rabbitmq/dependabot/github_actions/main/google-github-actions/auth-2.1.9
Bump google-github-actions/auth from 2.1.8 to 2.1.9
2025-04-24 23:11:08 +04:00
dependabot[bot] 0ea1b4b5e6
Bump google-github-actions/auth from 2.1.8 to 2.1.9
Bumps [google-github-actions/auth](https://github.com/google-github-actions/auth) from 2.1.8 to 2.1.9.
- [Release notes](https://github.com/google-github-actions/auth/releases)
- [Changelog](https://github.com/google-github-actions/auth/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google-github-actions/auth/compare/v2.1.8...v2.1.9)

---
updated-dependencies:
- dependency-name: google-github-actions/auth
  dependency-version: 2.1.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-24 18:59:17 +00:00
Jean-Sébastien Pédron d84d3a1491
Merge pull request #13781 from rabbitmq/cleanup-rabbit_khepri
Khepri: Clean up the setup/clustering code of the integration code
2025-04-24 18:27:32 +02:00
Jean-Sébastien Pédron 5300076e33
Khepri: Clean up the proxy functions of the integration code
[Why]
The `rabbit_khepri` module grew during the work to add Khepri support to
RabbitMQ and while Khepri was itself written. The current code is
therefore unorganized.

[How]
This commit tries to change proxy functions to be close to their Khepri
equivalent.

The module continues to set non-default options for write functions. We
also add the variants that take an option map to be consistent and not
have to deal with that in the future.

Several legacy functions were removed, either because they were no
longer called or because they were replace by a regular Khepri call.
2025-04-24 16:06:20 +02:00
Jean-Sébastien Pédron bd3aee35b4
Khepri: Clean up the setup/clustering code of the integration code
[Why]
The `rabbit_khepri` module grew during the work to add Khepri support to
RabbitMQ and while Khepri was itself written. The current code is
therefore unorganized.

[How]
This commit tries to sort the code that manages the setup of Khepri and
the functions tha deal with the Khepri cluster. It also groups functions
which provide support for CLI commands.

It also adds documentation to several functions.

Finally, when a node joins a cluster, we stop displaying the content of
the Khepri tree.
2025-04-24 11:57:51 +02:00
Jean-Sébastien Pédron d2b5f51bfd
release-notes/4.2.0: Mention Khepri enabled by default 2025-04-23 15:10:20 +02:00
David Ansari 229edb1827 Fix links in 4.2.0 release notes 2025-04-23 14:10:40 +02:00
David Ansari 77e73deede Intercept outgoing just before conversion
Intercept outgoing message just before conversion to target protocol as
this will give most flexibility to 3rd party plugins.
2025-04-23 14:01:42 +02:00
David Ansari f447e84e93 Add 4.2.0 release notes
[skip ci]
2025-04-23 14:01:42 +02:00
David Ansari a24ba55d45 Store message interceptor context in MQTT proc state
It's a tradeoff between building the map for each incoming and outgoing
message (now that there are also outgoing interceptors) vs increased
memory usage for the MQTT proc state.

Connecting with MQTT 5.0 and client ID "xxxxxxxx", the number of words
are 201 before this commit vs 235 after this commit as determined by:
```
S = sys:get_state(MQTTConnectionPid),
erts_debug:size(S).
```
Therefore, this commit requires 34 word * 8 bytes = 272 bytes more per MQTT
connection, that is 272 MB more for 1,000,000 MQTT connections.
2025-04-23 14:01:42 +02:00
David Ansari 21bd300d61 Support outgoing message interceptors 2025-04-23 14:01:42 +02:00
David Ansari 6ade94f50b Improve message interceptors
1. Force the config for timestamp and routing node message interceptors
   to be configured with the overwrite boolean() to avoid defining
   multiple default values throughout the code.
2. Add type specs
3. Extend existing test case for new MQTT client ID interceptor
4. routing node and timestamp should only set the annotation for
   incoming_message_interceptors group
5. Fix `rabbitmq.conf`.
   Prior to this commit there were several issue:
   a.) Setting the right configuration was too user unfriendly, e.g. the user has to set
   ```
   message_interceptor.incoming.rabbit_mqtt_message_interceptor_client_id.annotation_key = x-opt-mqtt-client-id
   ```
   just to enable the MQTT message interceptor.
   b.) The code that parses was too difficult to understand
   c.) MQTT plugin was setting the env for app rabbit, which is an anti-pattern
   d.) disabling a plugin (e.g. MQTT), left its message interceptors still in place
   This is now all fixed, the user sets the rabbitmq.conf as follows:
   ```
   message_interceptors.incoming.set_header_timestamp.overwrite = true
   message_interceptors.incoming.set_header_routing_node.overwrite = false
   mqtt.message_interceptors.incoming.set_client_id_annotation.enabled = true
   ```
   Note that the first two lines use the same format as for RabbitMQ 4.0
   for backwards compatiblity. The last line (MQTT) follows a similar
   pattern.
2025-04-23 14:01:42 +02:00
Lois Soto Lopez 9936b8de69 Add incoming message interceptors
This commit enables users to provide custom message interceptor modules,
i.e. modules to process incoming and outgoing messages. The
`rabbit_message_interceptor` behaviour defines a `intercept/4` callback,
for those modules to implement.

Co-authored-by: Péter Gömöri <gomoripeti@users.noreply.github.com>
2025-04-23 14:01:42 +02:00
Jean-Sébastien Pédron f28963c0f9
Merge pull request #12682 from rabbitmq/mark-khepri_db-as-stable
Khepri: Mark `khepri_db` feature flag as stable
2025-04-23 12:40:29 +02:00