Commit Graph

60089 Commits

Author SHA1 Message Date
Loïc Hoguin d486592aa0
Tweak sigh 2025-10-10 13:55:52 +02:00
Loïc Hoguin b523092213
Tweak 2025-10-10 13:23:32 +02:00
Loïc Hoguin 5aeffc4a5b
Try direct gh anno 2025-10-10 12:56:43 +02:00
Loïc Hoguin 92b000461d
Also style in ct_master_fork 2025-10-09 18:33:13 +02:00
Loïc Hoguin 85246ce3a8
No style 2025-10-09 18:12:09 +02:00
Loïc Hoguin 68c4e65ed4
NON_DETERMINISTIC 2025-10-09 17:00:31 +02:00
Loïc Hoguin d599b24ba7
pipefail 2025-10-09 15:49:24 +02:00
Loïc Hoguin 6f1cd8a85e
Sed filenames in output to have the right subdirectory 2025-10-09 15:14:20 +02:00
Loïc Hoguin 2a19f5d0fb
Introduce an error on purpose DO NOT MERGE 2025-10-07 12:10:05 +02:00
Loïc Hoguin e628f5d1cf
CI: Enable Erlang problem matchers 2025-10-07 11:20:28 +02:00
Michael Davis 1c264fa471
rabbitmq_streams: Check rabbit_queue_types is_enabled/0 during declare (#14699)
Trigger a 4.3.x alpha release build / trigger_alpha_build (push) Waiting to run Details
Test (make) / Build and Xref (1.18, 26) (push) Waiting to run Details
Test (make) / Build and Xref (1.18, 27) (push) Waiting to run Details
Test (make) / Build and Xref (1.18, 28) (push) Waiting to run Details
Test (make) / Test (1.18, 28, khepri) (push) Waiting to run Details
Test (make) / Test (1.18, 28, mnesia) (push) Waiting to run Details
Test (make) / Test mixed clusters (1.18, 28, khepri) (push) Waiting to run Details
Test (make) / Test mixed clusters (1.18, 28, mnesia) (push) Waiting to run Details
Test (make) / Type check (1.18, 28) (push) Waiting to run Details
`rabbit_amqqueue:declare/7` consults the `is_enabled/0` callback of
`rabbit_queue_type` before attempting to create a queue.
`rabbit_stream_manager` emulates `rabbit_amqqueue:declare/7` rather
than calling it directly. To align with the `is_enabled/0` check in
`rabbit_amqqueue:declare/7`, `rabbit_stream_manager` needs to check
the callback during stream creation.
2025-10-07 00:05:23 +02:00
Arnaud Cogoluègnes cae2b4b038
Make worflow runnable with dispatch
Trigger a 4.3.x alpha release build / trigger_alpha_build (push) Waiting to run Details
Test (make) / Build and Xref (1.18, 26) (push) Waiting to run Details
Test (make) / Build and Xref (1.18, 27) (push) Waiting to run Details
Test (make) / Build and Xref (1.18, 28) (push) Waiting to run Details
Test (make) / Test (1.18, 28, khepri) (push) Waiting to run Details
Test (make) / Test (1.18, 28, mnesia) (push) Waiting to run Details
Test (make) / Test mixed clusters (1.18, 28, khepri) (push) Waiting to run Details
Test (make) / Test mixed clusters (1.18, 28, mnesia) (push) Waiting to run Details
Test (make) / Type check (1.18, 28) (push) Waiting to run Details
Test Authentication/Authorization backends via mutiple messaging protocols / selenium (chrome, 1.17.3, 27.3) (push) Has been cancelled Details
Test Authentication/Authorization backends via mutiple messaging protocols / summary-selenium (push) Has been cancelled Details
2025-10-06 14:14:43 +02:00
Arnaud Cogoluègnes 3790fa3707
Set up nightly-built Docker image for main and 4.2 2025-10-06 14:12:42 +02:00
Arnaud Cogoluègnes 1faae0aed8
Use 4.3.0+ prefix for Docker image tag 2025-10-06 13:52:01 +02:00
dependabot[bot] da10f30f79
Bump actions/download-artifact from 4 to 5
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 12:33:30 +02:00
Arnaud Cogoluègnes 3dfc390f2f
Merge pull request #14696 from rabbitmq/dependabot/maven/deps/rabbit/test/amqp_jms_SUITE_data/main/dev-deps-89ef4725f4
[skip ci] Bump the dev-deps group across 5 directories with 4 updates
2025-10-06 09:29:50 +00:00
Arnaud Cogoluègnes 3f719d53b2
Merge pull request #14672 from rabbitmq/use-timeout-for-leader-record-repair
Use tick-related timeout to repair leader record
2025-10-06 09:28:53 +00:00
dependabot[bot] 2614ed2a74
[skip ci] Bump the dev-deps group across 5 directories with 4 updates
Bumps the dev-deps group with 2 updates in the /deps/rabbit/test/amqp_jms_SUITE_data directory: [org.junit.jupiter:junit-jupiter-engine](https://github.com/junit-team/junit-framework) and [com.google.googlejavaformat:google-java-format](https://github.com/google/google-java-format).
Bumps the dev-deps group with 1 update in the /deps/rabbitmq_auth_backend_http/examples/rabbitmq_auth_backend_spring_boot directory: [org.junit.jupiter:junit-jupiter-params](https://github.com/junit-team/junit-framework).
Bumps the dev-deps group with 1 update in the /deps/rabbitmq_mqtt/test/java_SUITE_data directory: [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit-framework).
Bumps the dev-deps group with 3 updates in the /deps/rabbitmq_stream/test/rabbit_stream_SUITE_data directory: [org.junit.jupiter:junit-jupiter-engine](https://github.com/junit-team/junit-framework), [org.junit.jupiter:junit-jupiter-params](https://github.com/junit-team/junit-framework) and [com.google.googlejavaformat:google-java-format](https://github.com/google/google-java-format).
Bumps the dev-deps group with 3 updates in the /deps/rabbitmq_stream_management/test/http_SUITE_data directory: [org.junit.jupiter:junit-jupiter-engine](https://github.com/junit-team/junit-framework), [org.junit.jupiter:junit-jupiter-params](https://github.com/junit-team/junit-framework) and [com.google.googlejavaformat:google-java-format](https://github.com/google/google-java-format).


Updates `org.junit.jupiter:junit-jupiter-engine` from 5.13.4 to 5.14.0
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r5.13.4...r5.14.0)

Updates `com.google.googlejavaformat:google-java-format` from 1.28.0 to 1.29.0
- [Release notes](https://github.com/google/google-java-format/releases)
- [Commits](https://github.com/google/google-java-format/compare/v1.28.0...v1.29.0)

Updates `org.junit.jupiter:junit-jupiter-params` from 5.13.4 to 5.14.0
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r5.13.4...r5.14.0)

Updates `org.junit.jupiter:junit-jupiter` from 5.13.4 to 5.14.0
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r5.13.4...r5.14.0)

Updates `org.junit.jupiter:junit-jupiter-engine` from 5.13.4 to 5.14.0
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r5.13.4...r5.14.0)

Updates `org.junit.jupiter:junit-jupiter-params` from 5.13.4 to 5.14.0
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r5.13.4...r5.14.0)

Updates `com.google.googlejavaformat:google-java-format` from 1.28.0 to 1.29.0
- [Release notes](https://github.com/google/google-java-format/releases)
- [Commits](https://github.com/google/google-java-format/compare/v1.28.0...v1.29.0)

Updates `org.junit.jupiter:junit-jupiter-params` from 5.13.4 to 5.14.0
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r5.13.4...r5.14.0)

Updates `org.junit.jupiter:junit-jupiter-engine` from 5.13.4 to 5.14.0
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r5.13.4...r5.14.0)

Updates `org.junit.jupiter:junit-jupiter-params` from 5.13.4 to 5.14.0
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r5.13.4...r5.14.0)

Updates `com.google.googlejavaformat:google-java-format` from 1.28.0 to 1.29.0
- [Release notes](https://github.com/google/google-java-format/releases)
- [Commits](https://github.com/google/google-java-format/compare/v1.28.0...v1.29.0)

Updates `org.junit.jupiter:junit-jupiter-params` from 5.13.4 to 5.14.0
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r5.13.4...r5.14.0)

---
updated-dependencies:
- dependency-name: org.junit.jupiter:junit-jupiter-engine
  dependency-version: 5.14.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-deps
- dependency-name: com.google.googlejavaformat:google-java-format
  dependency-version: 1.29.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-deps
- dependency-name: org.junit.jupiter:junit-jupiter-params
  dependency-version: 5.14.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-deps
- dependency-name: org.junit.jupiter:junit-jupiter
  dependency-version: 5.14.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-deps
- dependency-name: org.junit.jupiter:junit-jupiter-engine
  dependency-version: 5.14.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-deps
- dependency-name: org.junit.jupiter:junit-jupiter-params
  dependency-version: 5.14.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-deps
- dependency-name: com.google.googlejavaformat:google-java-format
  dependency-version: 1.29.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-deps
- dependency-name: org.junit.jupiter:junit-jupiter-params
  dependency-version: 5.14.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-deps
- dependency-name: org.junit.jupiter:junit-jupiter-engine
  dependency-version: 5.14.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-deps
- dependency-name: org.junit.jupiter:junit-jupiter-params
  dependency-version: 5.14.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-deps
- dependency-name: com.google.googlejavaformat:google-java-format
  dependency-version: 1.29.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-deps
- dependency-name: org.junit.jupiter:junit-jupiter-params
  dependency-version: 5.14.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-deps
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 09:05:11 +00:00
Arnaud Cogoluègnes 51309eac3c
Exclude JUnit 6 from dependabot
Requires Java 17.
2025-10-06 10:54:02 +02:00
Arnaud Cogoluègnes 8387d739e0
Use tick-related timeout to repair leader record
A quorum queue tries to repair its record in a tick handler. This can
happen during a network partition and the metadata store may itself be
unavailable, making the update likely to time out.

The default metadata store timeout is usually higher than the tick
interval, so the tick handler may be stuck during several ticks. The
record takes some time to be updated (timeout + tick interval, 30 + 5
seconds by default), significantly longer than it takes the metadata
store to trigger an election and recover.

Client applications may rely on the quorum queue topology to connect to
an appropriate node, so making the system reflect the actual topology
faster is important to them.

This commit makes the record update operations use a timeout 1-second
lower than the tick interval. The tick handler process should finish
earlier in case of metadata datastore unavailability and it should not
take more than a couple of ticks once the datastore is available to
update the record.
2025-10-06 08:43:28 +00:00
Arnaud Cogoluègnes 29618a243e
Add workflow to trigger a 4.3 alpha build 2025-10-06 10:27:44 +02:00
Arnaud Cogoluègnes 55f9cfd433
Update dependabot configuration
Exclude JUnit 6 (requires Java 17), add v4.2.x branch for GitHub actions
and Maven.
2025-10-06 09:38:43 +02:00
Michael Klishin 6261a7d025
Merge pull request #14674 from rabbitmq/Zerpet-patch-1
Cleanup dependabot.yaml by 3.13.x configurations
2025-10-03 16:59:29 -04:00
Aitor Pérez Cedres 7a972e050b
Cleanup dependabot.yaml by 3.13.x configurations
Removed GitHub Actions and Maven dependency configurations for v3.13.x.
2025-10-03 16:50:16 +01:00
Jean-Sébastien Pédron 8ff21c24a6
Merge pull request #14669 from rabbitmq/run-ct-clustering_recovery-outside-of-parallel-set
Trigger a 4.2.x alpha release build / trigger_alpha_build (push) Has been cancelled Details
Test (make) / Build and Xref (1.18, 26) (push) Has been cancelled Details
Test (make) / Build and Xref (1.18, 27) (push) Has been cancelled Details
Test (make) / Build and Xref (1.18, 28) (push) Has been cancelled Details
Test (make) / Test (1.18, 28, khepri) (push) Has been cancelled Details
Test (make) / Test (1.18, 28, mnesia) (push) Has been cancelled Details
Test (make) / Test mixed clusters (1.18, 28, khepri) (push) Has been cancelled Details
Test (make) / Test mixed clusters (1.18, 28, mnesia) (push) Has been cancelled Details
Test (make) / Type check (1.18, 28) (push) Has been cancelled Details
clustering_recovery_SUITE: Run on its own in CI
2025-10-03 12:04:48 +02:00
Michael Klishin 4373543f0d
Merge pull request #14655 from amazon-mq/lukebakken/nuke-cacerts
Trigger a 4.2.x alpha release build / trigger_alpha_build (push) Waiting to run Details
Test (make) / Build and Xref (1.18, 26) (push) Waiting to run Details
Test (make) / Build and Xref (1.18, 27) (push) Waiting to run Details
Test (make) / Build and Xref (1.18, 28) (push) Waiting to run Details
Test (make) / Test (1.18, 28, khepri) (push) Waiting to run Details
Test (make) / Test (1.18, 28, mnesia) (push) Waiting to run Details
Test (make) / Test mixed clusters (1.18, 28, khepri) (push) Waiting to run Details
Test (make) / Test mixed clusters (1.18, 28, mnesia) (push) Waiting to run Details
Test (make) / Type check (1.18, 28) (push) Waiting to run Details
Test Authentication/Authorization backends via mutiple messaging protocols / selenium (chrome, 1.17.3, 27.3) (push) Has been cancelled Details
Test Management UI with Selenium / selenium (chrome, 1.17.3, 27.3) (push) Has been cancelled Details
Test Authentication/Authorization backends via mutiple messaging protocols / summary-selenium (push) Has been cancelled Details
Remove all usage of `cacerts` from configuration schemas
2025-10-02 13:43:15 -04:00
Jean-Sébastien Pédron 4917048397
clustering_recovery_SUITE: Run on its own in CI
... instead of as part of a parallel CT group.

[Why]
This testsuite takes quite a lot of time. It affects the time to run the
parallel CT set 2 significantly, especially if it has to be restarted.
2025-10-02 19:34:46 +02:00
Jean-Sébastien Pédron 1d1faffdf2
Merge pull request #14665 from rabbitmq/fix-flaky-tests
clustering_recovery_SUITE: Skip tests that require RabbitMQ 4.2.0 in mixed-version testing
2025-10-02 18:53:28 +02:00
Jean-Sébastien Pédron 69e1703715
clustering_recovery_SUITE: Skip tests that require RabbitMQ 4.2.0 in mixed-version testing
[Why]
The `*_queue_after_partition_recovery_1` testcases rely on the fact that
the queue process retries to delete its queue record in its terminate
function.

RabbitMQ 4.1.x and before don't have that. Thus, depending on the timing
of the election of the Khepri leader after a network partition, the test
might fail.
2025-10-02 17:08:50 +02:00
Michael Klishin 2714c7f506
Merge pull request #14662 from rabbitmq/local-shovel-delete-after
Local shovel: ensure no more messages are published with delete-after
2025-10-02 10:06:05 -04:00
Diana Parra Corbacho 62daba4126 Local shovel: ensure no more messages are published with delete-after
once the limit is reached
2025-10-02 13:55:24 +02:00
Michael Klishin 2303570d90
Merge pull request #14658 from rabbitmq/dependabot/github_actions/main/peter-evans/repository-dispatch-4
Trigger a 4.2.x alpha release build / trigger_alpha_build (push) Waiting to run Details
Bump peter-evans/repository-dispatch from 3 to 4
2025-10-01 16:02:36 -04:00
dependabot[bot] 4270620cfb
Bump peter-evans/repository-dispatch from 3 to 4
Bumps [peter-evans/repository-dispatch](https://github.com/peter-evans/repository-dispatch) from 3 to 4.
- [Release notes](https://github.com/peter-evans/repository-dispatch/releases)
- [Commits](https://github.com/peter-evans/repository-dispatch/compare/v3...v4)

---
updated-dependencies:
- dependency-name: peter-evans/repository-dispatch
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-01 18:03:34 +00:00
Michael Klishin 2ccac4e1bf
Merge pull request #14653 from rabbitmq/loic-cowboy-2.14.1
Trigger a 4.2.x alpha release build / trigger_alpha_build (push) Waiting to run Details
Test (make) / Build and Xref (1.18, 26) (push) Has been cancelled Details
Test (make) / Build and Xref (1.18, 27) (push) Has been cancelled Details
Test (make) / Build and Xref (1.18, 28) (push) Has been cancelled Details
Test (make) / Test (1.18, 28, khepri) (push) Has been cancelled Details
Test (make) / Test (1.18, 28, mnesia) (push) Has been cancelled Details
Test (make) / Test mixed clusters (1.18, 28, khepri) (push) Has been cancelled Details
Test (make) / Test mixed clusters (1.18, 28, mnesia) (push) Has been cancelled Details
Test (make) / Type check (1.18, 28) (push) Has been cancelled Details
Update Cowboy to 2.14.1
2025-10-01 11:27:10 -04:00
Luke Bakken ce86fb989e
Remove all usage of `cacerts` from configuration schemas
As mentioned in discussion #14426, the way that `cacerts` is handled by
cuttlefish schemas simply will not work if set.

If `cacerts` were set to a string value containing one X509 certificate,
it would eventually result in a crash because the `cacerts` ssl option
must be of [this type](https://www.erlang.org/doc/apps/ssl/ssl.html#t:client_option_cert/0):

```
{cacerts, CACerts :: [public_key:der_encoded()] | [public_key:combined_cert()]}
```

Neither of those are strings, of course.

This PR removes all use of `cacerts` in cuttlefish schemas. In addition,
it filters out `cacerts` and `certs_keys` from being JSON-encoded by an
HTTP API call to `/api/overview`. It _is_ technically possible to set
`cacerts` via `advanced.config`, so, if set, it would crash this API
call, as would `certs_keys`.
2025-10-01 08:14:14 -07:00
Michael Klishin 40728af80d
Merge pull request #14573 from rabbitmq/fix-exclusive-queues-with-khepri
Keep exclusive/auto-delete queues with Khepri + network partition
2025-10-01 10:37:02 -04:00
Loïc Hoguin 30259b5ae3
Update Cowboy to 2.14.1
The patch release contains a fix for an HTTP/2 Websocket issue.
2025-10-01 15:40:35 +02:00
Michael Klishin a95c3192fc
Merge pull request #14651 from rabbitmq/revert-14414-lukebakken/ldap-validation-api
Trigger a 4.2.x alpha release build / trigger_alpha_build (push) Waiting to run Details
Test (make) / Build and Xref (1.18, 26) (push) Waiting to run Details
Test (make) / Build and Xref (1.18, 27) (push) Waiting to run Details
Test (make) / Build and Xref (1.18, 28) (push) Waiting to run Details
Test (make) / Test (1.18, 28, khepri) (push) Waiting to run Details
Test (make) / Test (1.18, 28, mnesia) (push) Waiting to run Details
Test (make) / Test mixed clusters (1.18, 28, khepri) (push) Waiting to run Details
Test (make) / Test mixed clusters (1.18, 28, mnesia) (push) Waiting to run Details
Test (make) / Type check (1.18, 28) (push) Waiting to run Details
Test Authentication/Authorization backends via mutiple messaging protocols / selenium (chrome, 1.17.3, 27.3) (push) Has been cancelled Details
Test Management UI with Selenium / selenium (chrome, 1.17.3, 27.3) (push) Has been cancelled Details
Test Authentication/Authorization backends via mutiple messaging protocols / summary-selenium (push) Has been cancelled Details
Revert "Implement LDAP credentials validation via HTTP API"
2025-09-30 13:10:29 -04:00
Michael Klishin f1595ad781
Revert "Implement LDAP credentials validation via HTTP API" 2025-09-30 13:09:46 -04:00
Michael Klishin c3b064c704
Merge pull request #14648 from rabbitmq/mk-dpc-shovel-fetch-parameters-module-from-registry
Shovel worker: fetch handler module from rabbit_registry
2025-09-30 12:43:40 -04:00
Michael Klishin 270c43fcac
Merge pull request #14637 from rabbitmq/issue-14623
Shovels: fix shovel status and deletion of failed shovels
2025-09-30 12:25:32 -04:00
Diana Parra Corbacho c9697a6b7a Shovels: make changes to shovel status backward compatible 2025-09-30 17:53:51 +02:00
Michael Klishin 2a920a4a32
Shovel worker: fetch handle module from rabbit_registry 2025-09-30 11:38:53 -04:00
Jean-Sébastien Pédron 6f71b54aec
Merge pull request #14646 from rabbitmq/ignore-SIGINFO-and-SIGWINCH
rabbitmq_prelaunch: Ignore SIGINFO and SIGWINCH
2025-09-30 15:59:43 +02:00
Jean-Sébastien Pédron 3a342bc00d
rabbitmq_prelaunch: Ignore SIGINFO and SIGWINCH
[Why]
We don't have handlers for these signals and this causes a message to be
logged.
2025-09-30 15:13:21 +02:00
Jean-Sébastien Pédron 3c4d073405
Keep exclusive/auto-delete queues with Khepri + network partition
[Why]
With Mnesia, when the network partition strategy is set to
`pause_minority`, nodes on the "minority side" are stopped.

Thus, the exclusive queues that were hosted by nodes on that minority
side are lost:
* Consumers connected on these nodes are disconnected because the nodes
  are stopped.
* Queue records on the majority side are deleted from the metadata
  store.

This was ok with Mnesia and how this network partition handling strategy
is implemented. However, it does not work with Khepri because the nodes
on the "minority side" continue to run and serve clients. Therefore the
cluster ends up in a weird situation:
1. The "majority side" deleted the queue records.
2. When the network partition is solved, the "minority side" gets the
   record deletion, but the queue processes continue to run.

This was similar for auto-delete queues.

[How]
With Khepri, we stop to delete transient queue records in general, just
because there is a node going down. Thanks to this, an exclusive or an
auto-delete queue and its consumer(s) are not affected by a network
partition: they continue to work.

However, if a node is really lost, we need to clean up dead queue
records. This was already done for durable queues with both Mnesia and
Khepri. But with Khepri, transient queue records persist in the store
like durable queue records (unlike with Mnesia).

That's why this commit changes the clean-up function,
`rabbit_amqqueue:forget_all_durable/1` into
`rabbit_amqqueue:forget_all/1` which deletes all queue records of queues
that were hosted on the given node, regardless if they are transient or
durable.

In addition to this, the queue process will spawn a temporary process
who will try to delete the underlying record indefinitely if no other
processes are waiting for a reply from the queue process. That's the
case for queues that are deleted because of an internal event (like the
exclusive/auto-delete conditions). The queue process will exit, which
will notify connections that the queue is gone.

Thanks to this, the temporary process will do its best to delete the
record in case of a network partition, whether the consumers go away
during or after that partition. That said, the node monitor drives some
failsafe code that cleans up record if the queue process was killed
before it could delete its own record.

Fixes #12949, #12597, #14527.
2025-09-30 12:58:02 +02:00
Jean-Sébastien Pédron 2c1b75276e
rabbit_node_monitor: Notify `rabbit` is live when handling a `nodeup` message
[Why]
So far, when there was a network partition with Mnesia, the most popular
partition handling strategies restarted RabbitMQ nodes. Therefore,
`rabbit` would execute the boot steps and one of them would notify other
members of the cluster that "this RabbitMQ node is live".

With Khepri, nodes are not restarted anymore and thus, boot steps are
not executed at the end of a network partition. As a consequence, other
members are not notified that a member is back online.

[How]
When the node monitor receives the `nodeup` message (managed by Erlang,
meaning that "a remote Erlang node just connected to this node through
Erlang distribution"), a `node_up` message is sent to all cluster
members (meaning "RabbitMQ is now running on the originating node").
Yeah, very poor naming...

This lets the RabbitMQ node monitor know when other nodes running
RabbitMQ are back online and react accordingly.

If a node is restarted, it means that another node could receive the
`node_up` message twice. The actions behind it must be idempotent.
2025-09-30 11:32:25 +02:00
Diana Parra Corbacho 33a6a20017 Shovels: tests for deletion of failed shovels 2025-09-30 10:10:35 +02:00
Diana Parra Corbacho 13201b2eb0 Shovels: return hosting node in terminated shovel status
Fixes deletion and restart
2025-09-30 08:25:56 +02:00
Michael Klishin 1158aca30e
Merge pull request #14644 from rabbitmq/mk-amqp-091-client-tls-simplification
Trigger a 4.2.x alpha release build / trigger_alpha_build (push) Waiting to run Details
Test (make) / Build and Xref (1.18, 26) (push) Waiting to run Details
Test (make) / Build and Xref (1.18, 27) (push) Waiting to run Details
Test (make) / Build and Xref (1.18, 28) (push) Waiting to run Details
Test (make) / Test (1.18, 28, khepri) (push) Waiting to run Details
Test (make) / Test (1.18, 28, mnesia) (push) Waiting to run Details
Test (make) / Test mixed clusters (1.18, 28, khepri) (push) Waiting to run Details
Test (make) / Test mixed clusters (1.18, 28, mnesia) (push) Waiting to run Details
Test (make) / Type check (1.18, 28) (push) Waiting to run Details
amqp_ssl: simplify
2025-09-29 21:57:35 -04:00