summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* amqp10_client system test suite reliabilitymergify/bp/v3.11.x/pr-5492Karl Nilsson2022-08-111-0/+2
| | | | | | | | Occasionally some system tests may fail as they start publishing before the credit event has been received. Added a wait for condition to avoid this. (cherry picked from commit 784d33549e318056e1bce3b2c319c002b56e4d83)
* Merge pull request #5470 from rabbitmq/mergify/bp/v3.11.x/pr-5469Michael Klishin2022-08-101-20/+21
|\ | | | | Fix failing rabbit_fifo_int test (backport #5469)
| * Fix failing testDavid Ansari2022-08-091-20/+21
| | | | | | | | | | | | | | | | due to the changes in https://github.com/rabbitmq/ra/pull/298 'delivery' ra event is now received before 'applied' ra event. (cherry picked from commit 6211b900d8151c964c68e2671c9c7837596d6087)
* | Bump dependencies in stream Java testArnaud Cogoluègnes2022-08-104-18/+20
| | | | | | | | (cherry picked from commit fa528115b16612626f14651d21de2b61099cb2d5)
* | Merge pull request #5480 from rabbitmq/mergify/bp/v3.11.x/pr-5479Arnaud Cogoluègnes2022-08-102-4/+4
|\ \ | | | | | | Streams: adapt tests to the latest Java stream client listener interface (backport #5479)
| * | Streams: adapt tests to the latest Java stream client listener interfaceMichael Klishin2022-08-102-4/+4
|/ / | | | | | | (cherry picked from commit 68969faf948ff15c88b8ef43c91385f94261a16c)
* | Merge pull request #5472 from rabbitmq/mergify/bp/v3.11.x/pr-5467Michael Klishin2022-08-103-5/+5
|\ \ | |/ |/| Bump eetcd to 0.3.6 (backport #5467)
| * Bump eetcd to 0.3.6Michael Klishin2022-08-093-5/+5
|/ | | | | | | See https://github.com/zhongwencool/eetcd/releases/tag/v0.3.6 for details (cherry picked from commit dd5864909bbe37c94b5f33ccac90e21104a6d536)
* Merge pull request #5466 from rabbitmq/mergify/bp/v3.11.x/pr-5427Arnaud Cogoluègnes2022-08-099-115/+284
|\ | | | | Add StreamStats command to stream protocol (backport #5427)
| * Use atom_to_binary/1 instead of rabbit_data_coercionArnaud Cogoluègnes2022-08-091-2/+1
| | | | | | | | (cherry picked from commit 26b4e6fa41f25d6f225266e164d7f4b7e3385d86)
| * Rename StreamInfo to StreamStatsArnaud Cogoluègnes2022-08-097-66/+59
| | | | | | | | | | | | | | | | Other changes: returns a map of int64, use the new osiris:get_stats/1 API. References #5412 (cherry picked from commit 93c33f2423ab10690961912f5e7e72f69e749a34)
| * Keep stream_* return codesArnaud Cogoluègnes2022-08-092-3/+7
| | | | | | | | | | | | | | | | To keep compatibility with the Erlang client's users. References #5412 (cherry picked from commit f223845d4368f75040adce3e355f24f5d244403a)
| * Make process liveness check remote if necessaryArnaud Cogoluègnes2022-08-091-2/+7
| | | | | | | | | | | | References #5412 (cherry picked from commit e587e9a8ef328a1d9d74150ae6c7f86c08d15e65)
| * Add StreamInfo command to stream protocolArnaud Cogoluègnes2022-08-099-110/+278
|/ | | | | | | | | It returns general information on a stream, the first and committed offsets for now. Fixes #5412 (cherry picked from commit 8687e73c7e7e3f89e267749d39077bdd4ed8eef5)
* Enable a post-#4563 testDavid Ansari2022-08-081-6/+7
| | | | | | | | | | | | | | | When a non-mirrored durable classic queue is hosted on a node that goes down, prior to #4563 not only was the behaviour that the queue gets deleted from the rabbit_queue table, but also that its corresponding bindings get deleted. The purpose of this test was to make sure that bindings get also properly deleted from the new rabbit_index_route table. Given that the behaviour now changed #4563 we can either delete this test or - as done in this commit - adapt this test. (cherry picked from commit 23e7fc860b659f9c5eb3f5c99c1c85df632982ba)
* Disable a test that needs revision post-#4563Michael Klishin2022-08-061-2/+4
| | | | | | | How the behavior of this test should change is yet to be discussed with @dcorbacho @ansd @lhoguin (cherry picked from commit 842bae61638c41b0131aaa2bdd7502792ebf9d17)
* Merge pull request #5456 from rabbitmq/mergify/bp/v3.11.x/pr-5319Michael Klishin2022-08-065-5/+110
|\ | | | | HTTP API: allow connections to be listed and closed by username (backport #5319)
| * Add delete connection by username featureNuwan Sameera2022-08-055-5/+110
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Format code Fix whitespace, fix warning Update API docs Remove blank lines Add get all connections by username Fix method name issue Enable GET method to get connections by username Update API documentation Modify list all connections of username method Remove list_by_username method and modify get all connections of user API Code formatting, break up lines for readability Refactor code to use pattern matching more effectively Typo (cherry picked from commit 6eb2630f554433aeb88bdfe62917db2787fb4846)
* Merge pull request #5453 from rabbitmq/mergify/bp/v3.11.x/pr-4563Michael Klishin2022-08-051-8/+25
|\
| * Don't delete durable CQs from rabbit_queue table on node downLoïc Hoguin2022-08-051-8/+25
|/ | | | | | | This should help avoid issues where queues are no longer listed in rabbit_queue after a node has restarted, under load. (cherry picked from commit 7de31d86977ebbba3d0b6527e30b222ea3c5d7d0)
* Merge pull request #5451 from rabbitmq/mergify/bp/v3.11.x/pr-5450Michael Klishin2022-08-058-11/+11
|\
| * Bump actions/cache from 3.0.5 to 3.0.6dependabot[bot]2022-08-058-11/+11
|/ | | | | | | | | | | | | | | | | Bumps [actions/cache](https://github.com/actions/cache) from 3.0.5 to 3.0.6. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v3.0.5...v3.0.6) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> (cherry picked from commit 99ca1d6e7d8ad35cbe7c515dd3e7e55891bb2fa3)
* Merge pull request #5448 from rabbitmq/mergify/bp/v3.11.x/pr-5447Michael Klishin2022-08-052-4/+5
|\ | | | | Require Erlang 24.3 (backport #5447)
| * Bump minimum required Erlang version to 24.3Michael Klishin2022-08-051-2/+2
| | | | | | | | | | | | | | we expect that 3.11 GA will require 25.0 but this would do for now (cherry picked from commit 43a79e7ab4b297c2510a006f7e0715b75ca9e17a)
| * Terraform: Erlang packages for 24 and 25 have long been availableMichael Klishin2022-08-051-2/+3
| | | | | | | | (cherry picked from commit 681db60cec9900ed1df3a0def376896f5aabeebd)
* | Terraform: add AMIs for Fedora 34 and 35Michael Klishin2022-08-051-0/+4
|/ | | | | Pair: @the-mikedavis (cherry picked from commit d0276eb32e8e8e41ee3ae2fabd843a5b7cb07de6)
* Merge pull request #5446 from rabbitmq/mergify/bp/v3.11.x/pr-5445Michael Klishin2022-08-054-13/+8
|\ | | | | Drop Erlang 23 from Actions test matrix (in 3.12.x/master, 3.11.x) (backport #5445)
| * Drop Erlang 23 from Actions test matrixMichael Klishin2022-08-054-13/+8
|/ | | | | | | we still use it for the 3.8.x mixed version umbrella, for now (cherry picked from commit de32678ed5ff2b68d4d3d3f4cd4e597e57e8dcca)
* Merge pull request #5440 from rabbitmq/mergify/bp/v3.11.x/pr-5433Michael Klishin2022-08-043-6/+45
|\
| * CQv1: Fix failure to recover messages in rare casesLoïc Hoguin2022-08-043-6/+45
| | | | | | | | | | | | | | | | | | | | | | | | When a full recovery was done it was possible to lose messages for v1 queues when the queues only had a journal file and no segment files. In practice it should be a rare event because it requires the queue (or maybe the node) to crash first and then the vhost or the node to be restarted gracefully. (cherry picked from commit 744e66e42ae9fd1d8cecf3700773968d925b98bd)
* | Log at debug level when "global hang workaround" is appliedDavid Ansari2022-08-041-6/+6
| | | | | | | | | | | | | | | | because it outputs the whole process state of global_name_server. Also, fix erroneous comments. (cherry picked from commit 2a1f27d02cec868be20717c30e9b328751d49113)
* | Prevent global:sync/0 from being stuckDavid Ansari2022-08-041-1/+1
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prior to this commit, global:sync/0 gets sometimes stuck when either performing a rolling update on Kubernetes or when creating a new RabbitMQ cluster on Kubernetes. When performing a rolling update, the node being booted will be stuck in: ``` 2022-07-26 10:49:58.891896+00:00 [debug] <0.226.0> == Plugins (prelaunch phase) == 2022-07-26 10:49:58.891908+00:00 [debug] <0.226.0> Setting plugins up 2022-07-26 10:49:58.920915+00:00 [debug] <0.226.0> Loading the following plugins: [cowlib,cowboy,rabbitmq_web_dispatch, 2022-07-26 10:49:58.920915+00:00 [debug] <0.226.0> rabbitmq_management_agent,amqp_client, 2022-07-26 10:49:58.920915+00:00 [debug] <0.226.0> rabbitmq_management,quantile_estimator, 2022-07-26 10:49:58.920915+00:00 [debug] <0.226.0> prometheus,rabbitmq_peer_discovery_common, 2022-07-26 10:49:58.920915+00:00 [debug] <0.226.0> accept,rabbitmq_peer_discovery_k8s, 2022-07-26 10:49:58.920915+00:00 [debug] <0.226.0> rabbitmq_prometheus] 2022-07-26 10:49:58.926373+00:00 [debug] <0.226.0> Feature flags: REFRESHING after applications load... 2022-07-26 10:49:58.926416+00:00 [debug] <0.372.0> Feature flags: registering controller globally before proceeding with task: refresh_after_app_load 2022-07-26 10:49:58.926450+00:00 [debug] <0.372.0> Feature flags: [global sync] @ rabbit@r1-server-3.r1-nodes.default ``` During cluster creation, an example log of global:sync/0 being stuck can be found in bullet point 2 of https://github.com/rabbitmq/rabbitmq-server/pull/5331#pullrequestreview-1050715029 When global:sync/0 is stuck, it never receives a message in line https://github.com/erlang/otp/blob/bd05b07f973f11d73c4fc77d59b69f212f121c2d/lib/kernel/src/global.erl#L2942 This issue can be observed in both `kind` and GKE. `kind` uses CoreDNS, GKE uses kubedns. CoreDNS does not resolve the hostname of RabbitMQ and its peers correctly for up to 30 seconds after node startup. This is because the default cache value of CoreDNS is 30 seconds and CoreDNS has a bug described in https://github.com/kubernetes/kubernetes/issues/92559 global:sync/0 is known to be buggy "in the presence of network failures" unless the kernel parameter `prevent_overlapping_partitions` is set to `true`. When either: 1. setting CoreDNS cache value to 1 second (see https://github.com/rabbitmq/rabbitmq-server/issues/5322#issuecomment-1195826135 on how to set this value), or 2. setting the kernel parameter `prevent_overlapping_partitions` to `true` rolling updates do NOT get stuck anymore. This means we are hitting here a combination of: 1. Kubernetes DNS bug not updating DNS caches promptly for headless services with `publishNotReadyAddresses: true`, and 2. Erlang bug which causes global:sync/0 to hang forever in the presence of network failures. The Erlang bug is fixed by setting `prevent_overlapping_partitions` to `true` (default in Erlang/OTP 25). In RabbitMQ however, we explicitly set `prevent_overlapping_partitions` to `false` because we fear other issues could arise if we set this parameter to `true`. Luckily, to resolve this issue of global:sync/0 being stuck, we can just call function rabbit_node_monitor:global_sync/0 which provides a workaround. This function was introduced 8 years ago in https://github.com/rabbitmq/rabbitmq-server/commit/9fcb31f348590a74fd526333cf881cfbe27241e6 With this commit applied, rolling updates are not stuck anymore and we see in the debug log the workaround sometimes being applied. (cherry picked from commit 4bf78d822d7496e03061119f4cb07c0b306e4c03)
* rabbit_auth_backend_internal: Reduce diff with `master` by adjusting indentationJean-Sébastien Pédron2022-08-041-1/+1
|
* Merge pull request #5439 from rabbitmq/mergify/bp/v3.11.x/pr-5390Jean-Sébastien Pédron2022-08-043-67/+32
|\ | | | | Remove pre-implicit_default_bindings compatibility code (backport #5390)
| * Merge pull request #5390 from ↵Michael Klishin2022-08-043-67/+32
|/ | | | | | | | rabbitmq/remove-pre-implicit_default_bindings-ff-compatibility-code Remove pre-implicit_default_bindings compatibility code (cherry picked from commit 7980ee82554b4af8cc287218b0701870fa8d9330)
* Merge pull request #5436 from rabbitmq/mergify/bp/v3.11.x/pr-5235Jean-Sébastien Pédron2022-08-0433-1481/+250
|\ | | | | Remove pre-quorum-queue compatibility code (backport #5235)
| * Remove test code which depended on the `quorum_queue` feature flagsJean-Sébastien Pédron2022-08-0423-413/+142
| | | | | | | | | | | | | | | | | | These checks are now irrelevant as the feature flag is required. (cherry picked from commit 6e9ee4d0da512b5a2709cc33933edfad7f36d410) # Conflicts: # deps/rabbitmq_stream/test/rabbit_stream_SUITE.erl
| * rabbitmqctl.8: Use `stream_queue` in the `enable_feature_flag` exampleJean-Sébastien Pédron2022-08-041-1/+1
| | | | | | | | | | | | The `quorum_queue` feature flag is now required and is always enabled. (cherry picked from commit 4dd07e290543d27765ab08a464c08744f822703a)
| * Remove pre-quorum-queue compatibility codeJean-Sébastien Pédron2022-08-049-1067/+107
|/ | | | | | | | | | | | | | | | | | | | Quorum queues were introduced in RabbitMQ 3.8.0. This was first time we added a breaking change protected behind a feature flag. This allowed a RabbitMQ cluster to be upgraded one node at a time, without having to stop the entire cluster. The breaking change was a new field in the `#amqqueue{}` record. This broke the API and the ABI because records are a compile-time thing in Erlang. The compatibility code is in the wild for long enough that we want to support the new `#amqqueue{}` record only from now on. The `quorum_queue` feature flag was marked as required in a previous commit (see #5202). This allows us to remove code in this patch. References #5215. (cherry picked from commit 909f861e5586b75146e86618a41829cdd47f9bc2)
* Merge pull request #5435 from rabbitmq/mergify/bp/v3.11.x/pr-5236Jean-Sébastien Pédron2022-08-049-274/+71
|\ | | | | Remove pre-virtual_host_metadata feature flag compatibility code (backport #5236)
| * Merge pull request #5236 from ↵Jean-Sébastien Pédron2022-08-049-274/+71
|/ | | | | | | | rabbitmq/remove-virtual_host_metadata-ff-compatibility-code Remove pre-virtual_host_metadata feature flag compatibility code (cherry picked from commit fcae574679248a3eef027b5df4a793030908c930)
* Merge pull request #5430 from rabbitmq/mergify/bp/v3.11.x/pr-5237Jean-Sébastien Pédron2022-08-048-94/+24
|\ | | | | Remove pre-maintenance_mode_status compatibility code (backport #5237)
| * Remove test code which depended on the `maintenance_mode_status` feature flagsJean-Sébastien Pédron2022-08-047-54/+11
| | | | | | | | | | | | These checks are now irrelevant as the feature flag is required. (cherry picked from commit 5b98d7d2a27dcb12114924e32e3dd811a726fb8b)
| * Remove pre-maintenance_mode_status compatibility codeJean-Sébastien Pédron2022-08-041-40/+13
|/ | | | | | | | | | | | | | | Maintenance mode, introduced in RabbitMQ 3.8.x, was a breaking change protected behind a feature flag. This allowed a RabbitMQ cluster to be upgraded one node at a time, without having to stop the entire cluster. The compatibility code is in the wild for long enough. The `maintenance_mode_status` feature flag was marked as required in a previous commit (see #5202). This allows us to remove code in this patch. References #5215. (cherry picked from commit 43a525f4d026d66857b968e537100c8f7552e0d5)
* Merge pull request #5428 from rabbitmq/mergify/bp/v3.11.x/pr-5239Jean-Sébastien Pédron2022-08-0410-388/+94
|\ | | | | Remove pre-user_limits compatibility code (backport #5239)
| * Remove test code which depended on the `user_limits` feature flagsJean-Sébastien Pédron2022-08-047-118/+36
| | | | | | | | | | | | These checks are now irrelevant as the feature flag is required. (cherry picked from commit 32049cd256717560060d43494f76e31a41e56c22)
| * Remove pre-user_limits compatibility codeJean-Sébastien Pédron2022-08-043-270/+58
|/ | | | | | | | | | | | | | | | | | | | | | User limits required a breaking change protected behind a feature flag. This allowed a RabbitMQ cluster to be upgraded one node at a time, without having to stop the entire cluster. The breaking change was a new field in the `#internal_user{}` record. This broke the API and the ABI because records are a compile-time thing in Erlang. The compatibility code is in the wild for long enough that we want to support the new `#internal_user{}` record only from now on. The `user_limits` feature flag was marked as required in a previous commit (see #5202). This allows us to remove code in this patch. References #5215. (cherry picked from commit eeaf8d39e55d348ac6027c2d239b1a1401c15e97) # Conflicts: # deps/rabbit/src/rabbit_auth_backend_internal.erl
* Follow-up to the revert in commit dcff9a219532b14119de93658a93c553b90cd3f2Jean-Sébastien Pédron2022-08-041-6/+10
| | | | Again, another change missed by the initial revert.
* Revert "Merge pull request #5394 from rabbitmq/mergify/bp/v3.11.x/pr-5390"Jean-Sébastien Pédron2022-08-043-32/+67
| | | | | | | | | Two reasons (like commit dcff9a219532b14119de93658a93c553b90cd3f2): 1. It was too early to backport. 2. This one should be backported last to avoid conflicts. This reverts commit 97e9bb1a52cb048383637131d342bb68cc7007ef, reversing changes made to 4b9e76b8a991ea99d24445424a2b17fd7a94fb2b.
* Follow-up to the revert in commit dcff9a219532b14119de93658a93c553b90cd3f2Jean-Sébastien Pédron2022-08-031-0/+1
| | | | | | | It should have been part of it. Those changes were missed because of the out-of-order backports and following conflict resolutions.