Commit Graph

29213 Commits

Author SHA1 Message Date
Diana Parra Corbacho 3345fcf8b0 Bananas in the right place 2024-06-06 15:38:55 +02:00
Diana Parra Corbacho 08e5489147 Bananas! 2024-06-06 15:36:19 +02:00
Diana Parra Corbacho 533bd8fda0 Remove gm 2024-06-06 15:22:49 +02:00
Diana Parra Corbacho a83e80fc42 Re-introduce `gm_group` table
For mixed-version clusters, as the gm table is created even if
CMQ have already been deprecated
2024-06-04 13:00:31 +02:00
Diana Parra Corbacho 3bbda5bdba Remove classic mirror queues 2024-06-04 13:00:31 +02:00
Michael Klishin 6c86442a06
Merge pull request #11218 from rabbitmq/configure-oidc-endpoints
Configure OIDC end_session_endpoint
2024-06-03 17:46:25 -04:00
Michael Klishin 341f3daae9
Strip some trailing whitespace 2024-06-03 16:44:47 -04:00
Michael Klishin bd111f01f7
Merge pull request #11278 from SimonUnge/qq_repair_amqqueue_on_tick 2024-06-03 08:57:19 -04:00
Marcial Rosales 067964b072 Use better names for test certs file
Suggested by @michaelklishin
2024-06-01 15:14:37 +02:00
Marcial Rosales 095f19d461
App public_key and crypto as extra apps
So that dialyzer can find the missing functions
2024-05-31 13:09:47 -07:00
Marcial Rosales b3256b463a Fix dialyzer issue 2024-05-31 12:34:30 -07:00
Marcial Rosales 9ca24f706b Fix issue
ssl_options must be encapsulated within an ssl property
2024-05-31 12:34:30 -07:00
Luke Bakken 2070758f92 Actually do something with ssl_hostname_verification 2024-05-31 12:34:30 -07:00
Luke Bakken 35f5f813f4 Add server_name_indication/sni and hostname_verfication to cuttlefish schema 2024-05-31 12:34:30 -07:00
Marcial Rosales aa388039ea Add ssl_options to schema 2024-05-31 12:34:30 -07:00
David Ansari bd847b8cac Put credit flow config into persistent term
Put configuration credit_flow_default_credit into persistent term such
that the tuple doesn't have to be copied on the hot path.

Also, change persistent term keys from `{rabbit, AtomKey}` to `AtomKey`
so that hashing becomes cheaper.
2024-05-31 16:20:51 +02:00
Simon Unge 83a0eedb4e Let QQs check if it needs to repair amqqueue nodes 2024-05-29 20:17:31 +00:00
Arnaud Cogoluègnes ea9c6370ef
Merge pull request #11334 from rabbitmq/dependabot/maven/deps/rabbitmq_stream/test/rabbit_stream_SUITE_data/main/org.assertj-assertj-core-3.26.0
Bump org.assertj:assertj-core from 3.25.3 to 3.26.0 in /deps/rabbitmq_stream/test/rabbit_stream_SUITE_data
2024-05-28 08:07:25 +02:00
Michael Klishin 8dbde71ee7
Merge pull request #11335 from rabbitmq/dependabot/maven/deps/rabbitmq_stream_management/test/http_SUITE_data/main/org.assertj-assertj-core-3.26.0
Bump org.assertj:assertj-core from 3.25.3 to 3.26.0 in /deps/rabbitmq_stream_management/test/http_SUITE_data
2024-05-27 15:36:32 -04:00
dependabot[bot] f58f084bef
Bump org.assertj:assertj-core
Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.25.3 to 3.26.0.
- [Release notes](https://github.com/assertj/assertj/releases)
- [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.25.3...assertj-build-3.26.0)

---
updated-dependencies:
- dependency-name: org.assertj:assertj-core
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-27 18:55:47 +00:00
dependabot[bot] a4ee55ee2a
Bump org.assertj:assertj-core
Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.25.3 to 3.26.0.
- [Release notes](https://github.com/assertj/assertj/releases)
- [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.25.3...assertj-build-3.26.0)

---
updated-dependencies:
- dependency-name: org.assertj:assertj-core
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-27 18:32:04 +00:00
dependabot[bot] be9558fa19
Bump org.assertj:assertj-core
Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.25.3 to 3.26.0.
- [Release notes](https://github.com/assertj/assertj/releases)
- [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.25.3...assertj-build-3.26.0)

---
updated-dependencies:
- dependency-name: org.assertj:assertj-core
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-27 18:31:04 +00:00
Marcial Rosales 72ab1944bf Make end_session_endpoint configurable 2024-05-27 11:19:09 +02:00
Jean-Sébastien Pédron a33768471f
Merge pull request #10088 from rabbitmq/convert-rabbit_writer-to-gen_server
rabbit_writer: Convert to a regular gen_server
2024-05-27 10:24:32 +02:00
Simon Unge 19a751890c Remove checks to vhost-limit as that is now handled by rabbit_queue_type:declare
Add new error return tuple when queue limit is exceed
2024-05-27 09:53:54 +02:00
Michael Klishin 698cdc5275 More editing #11329 2024-05-26 18:26:12 -04:00
Michael Klishin 936499c48a Stream protocol doc: unit24 => uint24 #11329 2024-05-26 18:24:39 -04:00
Michael Klishin 28193daf08 Stream protocol doc: wording 2024-05-26 18:21:26 -04:00
wrobell 75bf2a9ef5 Add filtering information to the documentation of RabbitMQ Stream protocol document
1. Link to up-to-date version of code describing Osiris chunk.
2. Update `Deliver` command description with Bloom filter entries.
3. Add information about use of `Publish` command with filter value. The
   hint about use of version 1 or 2 is based on the Java client
   implementation.
2024-05-26 22:25:46 +01:00
Michael Klishin a8d9b9c1db
Merge pull request #11245 from cloudamqp/expose_segment_count_prometheus
Prometheus: add segment file count to queue_metrics and expose
2024-05-24 21:24:57 -04:00
Michael Klishin cae964dba1 ctl delete_shovel: use a more effective way
Dynamic Shovels keep track of their status in
a node-local ETS table which is updated as
Shovels go through the lifecycle: start,
init (connect, declare the topology), stop.

This makes failing Shovels a bit special:
their status records will not be long lived,
which means it will be considered not to exist
by certain code paths.

In addition, for such Shovels we do not know what
node they are hosted on. But that's fine:
we just need to clear their runtime parameter
and a periodic Shovel cleanup will remove all
children for which no schema database entry
(a runtime parameter one) does not exist.

rabbitmq_shovel_management's key integration
suite has been reworked and expanded to include
a case where the Shovel has no chance of
successfully connecting.

This also deletes a mock-based test suite
which does not serve much of a purpose.
2024-05-24 19:48:33 -04:00
womblep 23794e1115
Update dynamic-shovels.ejs
remove fail_if_no_peer_cert as it is no longer accepted in Erlang 26 and will stop the connection from happening
2024-05-25 00:24:29 +10:00
Jean-Sébastien Pédron c607eb044f
system_SUITE: Handle time-sensitive exceptions
[Why]
Depending on the exit status of the writer process when a testcase calls
it, the exception reason might differ. From the actual error if the
writer was called before it handled the error, to `noproc` if it already
exited.

[How]
We match against several probable exception reasons that would signify a
success for the testcase.
2024-05-24 11:47:26 +02:00
Jean-Sébastien Pédron 8093930445
amqp_channel: Ignore all exceptions from `rabbit_writer:flush/1`
[Why]
The writer process could still be exiting at the time flush is called.
For instance, the reason could be `{shutdown, _}`.

Also, with the conversion of the `rabbit_writer` to a gen_server, the
noproc reason would be `{noproc, _}`.

[How]
`flush_writer/1` is called in the channel `terminate/2` function, so we
don't really care about any writer errors at this point. Let's ignore
any exceptions.
2024-05-24 11:47:26 +02:00
Jean-Sébastien Pédron eff64a2d96
amqp_channel: Adapt `channel_exit` handling
... after `rabbit_writer` conversion to gen_server.

[Why]
The `rabbit_writer` being a regular gen_server now, it will stop with
the reason `{shutdown, Reason}`. Otherwise this would be considered a
crash by the supervision tree and it would log even more scary errors
and stacktraces.

[How]
If the reason is `{shutdown, _}`, we just unpack the embedded reason and
use it for the channel stop reason. This ensures the behavior of the
channel process doesn't change.
2024-05-24 11:47:25 +02:00
Jean-Sébastien Pédron 7849f143d8
rabbit_writer: Convert to a regular gen_server
[Why]
This process failed to implement properly the OTP principles. For
instance, the mainloop always kept a reference on the module because it
was not tail-recursive.

This prevents the module from being reloaded at runtime: because the
process always keep that reference on the module, it is killed by the
Code server as part of the code reloading.
2024-05-24 11:47:25 +02:00
Jean-Sébastien Pédron 643fd53d88
rabbitmq-early-test.mk: Use same Dialyzer options as in Bazel 2024-05-24 11:06:11 +02:00
Michael Klishin 38a6012ce7
Merge pull request #11305 from rabbitmq/remove-unused-imports
Remove unused imports (thanks elp!)
2024-05-23 17:00:14 -04:00
dependabot[bot] 29b4f9096b
Bump org.springframework.boot:spring-boot-starter-parent
Bumps [org.springframework.boot:spring-boot-starter-parent](https://github.com/spring-projects/spring-boot) from 3.2.5 to 3.3.0.
- [Release notes](https://github.com/spring-projects/spring-boot/releases)
- [Commits](https://github.com/spring-projects/spring-boot/compare/v3.2.5...v3.3.0)

---
updated-dependencies:
- dependency-name: org.springframework.boot:spring-boot-starter-parent
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-23 19:00:55 +00:00
dependabot[bot] a9377efd99
Bump org.springframework.boot:spring-boot-starter-parent
Bumps [org.springframework.boot:spring-boot-starter-parent](https://github.com/spring-projects/spring-boot) from 3.2.5 to 3.3.0.
- [Release notes](https://github.com/spring-projects/spring-boot/releases)
- [Commits](https://github.com/spring-projects/spring-boot/compare/v3.2.5...v3.3.0)

---
updated-dependencies:
- dependency-name: org.springframework.boot:spring-boot-starter-parent
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-23 18:44:56 +00:00
Michal Kuratczyk cfa3de4b2b
Remove unused imports (thanks elp!) 2024-05-23 16:36:08 +02:00
markus812498 3b1ff80f0a added segment file count to queue_metrics ets and exposed in /metrics endpoint 2024-05-23 09:50:24 +12:00
Michael Klishin 7d64d3dca8
Merge pull request #11212 from SimonUnge/cluster_wide_queue_limit_main
cluster wide queue limit - main
2024-05-22 10:54:58 -04:00
Rin Kuryloski fef064c906 Reduce ineffeciency introduced in b636f41
Use "ERL_LIBS =" instead of "ERL_LIBS :=" so that $(shell ... is not
called so often
2024-05-22 12:31:55 +02:00
dependabot[bot] cf3b7ea5bf
---
updated-dependencies:
- dependency-name: org.jetbrains.kotlin:kotlin-test
  dependency-type: direct:development
  update-type: version-update:semver-major
- dependency-name: org.jetbrains.kotlin:kotlin-maven-allopen
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-21 18:35:40 +00:00
Simon Unge 0d68c79e00 Fix broken code 2024-05-21 17:57:42 +00:00
Simon Unge 60ae6c0943 cluster wide queue limit 2024-05-21 17:41:53 +00:00
Michael Klishin f124bca95d
Merge pull request #11222 from SimonUnge/move_vhost_limit_check
Enforce/honor per-vhost queue limit for all protocols
2024-05-21 13:28:25 -04:00
Loïc Hoguin 93e4e88872
CQ: Fix entry missing from cache leading to crash on read
The issue comes from a mechanic that allows us to avoid writing
to disk when a message has already been consumed. It works fine
in normal circumstances, but fan-out makes things trickier.

When multiple queues write and read the same message, we could
get a crash. Let's say queues A and B both handle message Msg.

* Queue A asks store to write Msg
* Queue B asks store to write Msg
* Queue B asks store to delete Msg (message was immediately consumed)
* Store processes Msg write from queue A
  * Store writes Msg to current file
* Store processes Msg write from queue B
  * Store notices queue B doesn't need Msg anymore; doesn't write
  * Store clears Msg from the cache
* Queue A tries to read Msg
  * Msg is missing from the cache
  * Queue A tries to read from disk
  * Msg is in the current write file and may not be on disk yet
  * Crash

The problem is that the store clears Msg from the cache. We need
all messages written to the current file to remain in the cache
as we can't guarantee the data is on disk when comes the time
to read. That is, until we roll over to the next file.

The issue was that a match was wrong, instead of matching a single
location from the index, the code was matching against a list. The
error was present in the code for almost 13 years since commit
2ef30dc95e.
2024-05-21 15:48:44 +02:00
Michael Klishin 81bcec49a4
Merge pull request #11279 from rabbitmq/mk-start-virtual-host-on-an-arbitrary-set-of-nodes
Introduce rabbit_vhost_sup_sup:start_on_all_nodes/2
2024-05-20 19:56:28 -04:00