Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

By @Ayanda-D: stop QQ replicas when a QQ is forced to shrink to a single replica #12467

Closed
wants to merge 33 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
b675ce2
Shutdown peer QQ FSMs on connected nodes on force-shrink execution fo…
Ayanda-D Sep 6, 2024
60ee35e
QQ tests for force-shrink to current member operations
Ayanda-D Oct 1, 2024
c26aa3b
Implement force_vhost_queues_shrink_member_to_current_member/1
Ayanda-D Oct 2, 2024
de0c0db
Add test for QQ force_vhost_queues_shrink_member_to_current_member/1
Ayanda-D Oct 2, 2024
dd5ec3c
Update QQ force-shrink logging
Ayanda-D Oct 3, 2024
94943bb
Use `<details>` tag when collecting text
lukebakken Oct 2, 2024
ff53cd8
build(deps): bump google-github-actions/auth from 2.1.5 to 2.1.6
dependabot[bot] Oct 2, 2024
a0681a4
Represent `rabbit_binding:deletions()` with a map instead of dict
the-mikedavis Sep 30, 2024
21f1bdd
add support for the leader info item in classic queues
Ayanda-D Oct 1, 2024
5ec83ad
test and assert new classic queue leader info item
Ayanda-D Oct 1, 2024
d91bb43
support members info item in classic queues, which will always be the…
Ayanda-D Oct 2, 2024
6eb2e79
Actions: align google-github-actions/auth versions
michaelklishin Oct 2, 2024
afbb472
This assertion does not belong to this leader-locator test
michaelklishin Oct 3, 2024
da883b2
rabbit_feature_flags: Lock registry once and enable many feature flags
dumbbell Oct 3, 2024
c7d7fcc
rabbit_feature_flags: Fix copyright year
dumbbell Oct 3, 2024
4f9dcf8
rabbit_feature_flags: Hide required feature flags from the registry i…
dumbbell Oct 3, 2024
ff210aa
rabbit_feature_flags: Log a inventory matrix instead of dumping the map
dumbbell Oct 3, 2024
588c62c
rabbit_feature_flags: Fix style
dumbbell Oct 3, 2024
282b68c
rabbit_feature_flags: Hide required feature flags in management UI
dumbbell Oct 4, 2024
89652a2
build(deps-dev): bump junit.jupiter.version
dependabot[bot] Oct 4, 2024
fd21435
build(deps-dev): bump junit.jupiter.version
dependabot[bot] Oct 4, 2024
b9f3378
build(deps-dev): bump org.junit.jupiter:junit-jupiter-params
dependabot[bot] Oct 4, 2024
178addb
build(deps-dev): bump org.junit.jupiter:junit-jupiter
dependabot[bot] Oct 4, 2024
f8ef332
Remove mention of global prefetch
johanrhodin Oct 4, 2024
5c4814a
Remove multiple mentions of global prefetch
michaelklishin Oct 5, 2024
9c90566
Don't start invalid but enabled plugins at startup
gomoripeti Sep 29, 2024
06968c1
Make parallel-ct properly detect test failures
lhoguin Oct 2, 2024
c93c699
QQ: fix bug with discards using a consumer_id()
kjnilsson Oct 3, 2024
4c991a1
Set broker version to 4.1.0-alpha.1 in dev Docker image
acogoluegnes Oct 7, 2024
f556f11
Support AMQP filter expressions (#12415)
ansd Oct 7, 2024
ad1726c
rabbit_feature_flags: Accept "+feature1,-feature2" in $RABBITMQ_FEATU…
dumbbell Oct 4, 2024
1dbe038
rabbit_env: Drop $RABBITMQ_LOG_FF_REGISTRY
dumbbell Oct 4, 2024
a3fcda3
Update 4.1.0 release notes
ansd Oct 7, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 57 additions & 8 deletions .github/DISCUSSION_TEMPLATE/questions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,39 +72,74 @@ body:
id: diagnostics_status
attributes:
label: rabbitmq-diagnostics status output
value: See https://www.rabbitmq.com/docs/cli to learn how to use rabbitmq-diagnostics
value: |
See https://www.rabbitmq.com/docs/cli to learn how to use rabbitmq-diagnostics
<details>

```
# PASTE OUTPUT HERE, BETWEEN BACKTICKS
```
</details>
validations:
required: true
- type: textarea
id: rabbitmq_logs
attributes:
label: Logs from node 1 (with sensitive values edited out)
description: Relevant RabbitMQ logs with sensitive values edited out
value: See https://www.rabbitmq.com/docs/logging to learn how to collect logs
value: |
See https://www.rabbitmq.com/docs/logging to learn how to collect logs
<details>

```
# PASTE LOG HERE, BETWEEN BACKTICKS
```
</details>
validations:
required: true
- type: textarea
id: logs_node_2
attributes:
label: Logs from node 2 (if applicable, with sensitive values edited out)
description: Relevant RabbitMQ logs with sensitive values edited out
value: See https://www.rabbitmq.com/docs/logging to learn how to collect logs
value: |
See https://www.rabbitmq.com/docs/logging to learn how to collect logs
<details>

```
# PASTE LOG HERE, BETWEEN BACKTICKS
```
</details>
validations:
required: false
- type: textarea
id: logs_node_3
attributes:
label: Logs from node 3 (if applicable, with sensitive values edited out)
description: Relevant RabbitMQ logs with sensitive values edited out
value: See https://www.rabbitmq.com/docs/logging to learn how to collect logs
value: |
See https://www.rabbitmq.com/docs/logging to learn how to collect logs
<details>

```
# PASTE LOG HERE, BETWEEN BACKTICKS
```
</details>
validations:
required: false
- type: textarea
id: rabbitmq_conf
attributes:
label: rabbitmq.conf
description: rabbitmq.conf contents
value: See https://www.rabbitmq.com/docs/configure#config-location to learn how to find rabbitmq.conf file location
value: |
See https://www.rabbitmq.com/docs/configure#config-location to learn how to find rabbitmq.conf file location
<details>

```
# PASTE rabbitmq.conf HERE, BETWEEN BACKTICKS
```
</details>
validations:
required: true
- type: textarea
Expand All @@ -126,7 +161,14 @@ body:
attributes:
label: advanced.config
description: advanced.config contents (if applicable)
value: See https://www.rabbitmq.com/docs/configure#config-location to learn how to find advanced.config file location
value: |
See https://www.rabbitmq.com/docs/configure#config-location to learn how to find advanced.config file location
<details>

```
# PASTE advanced.config HERE, BETWEEN BACKTICKS
```
</details>
validations:
required: false
- type: textarea
Expand All @@ -135,9 +177,12 @@ body:
label: Application code
description: Relevant messaging-related parts of application code
value: |
<details>

```python
# relevant messaging-related parts of your code go here
# PASTE CODE HERE, BETWEEN BACKTICKS
```
</details>
validations:
required: false
- type: textarea
Expand All @@ -146,8 +191,12 @@ body:
label: Kubernetes deployment file
description: Kubernetes deployment YAML that demonstrates how RabbitMQ is deployed (if applicable)
value: |
<details>

```yaml
# Relevant parts of K8S deployment that demonstrate how RabbitMQ is deployed
# PASTE YAML HERE, BETWEEN BACKTICKS
```
</details>
validations:
required: false
required: false
2 changes: 1 addition & 1 deletion .github/workflows/oci-arm64-make.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
- name: make package-generic-unix
if: steps.authorized.outputs.authorized == 'true'
run: |
make package-generic-unix PROJECT_VERSION=4.0.0
make package-generic-unix PROJECT_VERSION=4.1.0-alpha.1
- name: Upload package-generic-unix
if: steps.authorized.outputs.authorized == 'true'
uses: actions/upload-artifact@v4.3.1
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/oci-make.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
- name: make package-generic-unix
if: steps.authorized.outputs.authorized == 'true'
run: |
make package-generic-unix PROJECT_VERSION=4.0.0
make package-generic-unix PROJECT_VERSION=4.1.0-alpha.1
- name: Upload package-generic-unix
if: steps.authorized.outputs.authorized == 'true'
uses: actions/upload-artifact@v4.3.1
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/rabbitmq_peer_discovery_aws.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ jobs:
ecs-cli --version
- name: AUTHENTICATE TO GOOGLE CLOUD
if: steps.authorized.outputs.authorized == 'true'
uses: google-github-actions/auth@v2.1.5
uses: google-github-actions/auth@v2.1.6
with:
credentials_json: ${{ secrets.REMOTE_CACHE_CREDENTIALS_JSON }}
- name: CONFIGURE BAZEL
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ jobs:
https://builds.hex.pm
https://cdn.jsdelivr.net/hex
- name: AUTHENTICATE TO GOOGLE CLOUD
uses: google-github-actions/auth@v2.1.5
uses: google-github-actions/auth@v2.1.6
with:
credentials_json: ${{ secrets.REMOTE_CACHE_CREDENTIALS_JSON }}
- name: BUILD SECONDARY UMBRELLA ARCHIVE
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/templates/test.template.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ jobs:
run: |
echo "value=bazel-repo-cache-${{ hashFiles('MODULE.bazel') }}" | tee -a $GITHUB_OUTPUT
- name: AUTHENTICATE TO GOOGLE CLOUD
uses: google-github-actions/auth@v2.1.5
uses: google-github-actions/auth@v2.1.6
with:
credentials_json: ${{ secrets.REMOTE_CACHE_CREDENTIALS_JSON }}
- name: REPO CACHE
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-authnz.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ jobs:
https://cdn.jsdelivr.net/hex

- name: Authenticate To Google Cloud
uses: google-github-actions/auth@v2.1.5
uses: google-github-actions/auth@v2.1.6
with:
credentials_json: ${{ secrets.REMOTE_CACHE_CREDENTIALS_JSON }}

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-management-ui-for-pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
https://cdn.jsdelivr.net/hex

- name: Authenticate To Google Cloud
uses: google-github-actions/auth@v2.1.5
uses: google-github-actions/auth@v2.1.6
with:
credentials_json: ${{ secrets.REMOTE_CACHE_CREDENTIALS_JSON }}

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-management-ui.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ jobs:
https://cdn.jsdelivr.net/hex

- name: Authenticate To Google Cloud
uses: google-github-actions/auth@v2.1.5
uses: google-github-actions/auth@v2.1.6
with:
credentials_json: ${{ secrets.REMOTE_CACHE_CREDENTIALS_JSON }}

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-mixed-versions.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ jobs:
https://builds.hex.pm
https://cdn.jsdelivr.net/hex
- name: AUTHENTICATE TO GOOGLE CLOUD
uses: google-github-actions/auth@v2.1.5
uses: google-github-actions/auth@v2.1.6
with:
credentials_json: ${{ secrets.REMOTE_CACHE_CREDENTIALS_JSON }}
- name: BUILD SECONDARY UMBRELLA ARCHIVE
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-plugin-mixed.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ jobs:
https://builds.hex.pm
https://cdn.jsdelivr.net/hex
- name: AUTHENTICATE TO GOOGLE CLOUD
uses: google-github-actions/auth@v2.1.5
uses: google-github-actions/auth@v2.1.6
with:
credentials_json: ${{ secrets.REMOTE_CACHE_CREDENTIALS_JSON }}
- name: CONFIGURE BAZEL
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-plugin.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ jobs:
https://builds.hex.pm
https://cdn.jsdelivr.net/hex
- name: AUTHENTICATE TO GOOGLE CLOUD
uses: google-github-actions/auth@v2.1.5
uses: google-github-actions/auth@v2.1.6
with:
credentials_json: ${{ secrets.REMOTE_CACHE_CREDENTIALS_JSON }}
- name: CONFIGURE BAZEL
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ jobs:
run: |
echo "value=bazel-repo-cache-${{ hashFiles('MODULE.bazel') }}" | tee -a $GITHUB_OUTPUT
- name: AUTHENTICATE TO GOOGLE CLOUD
uses: google-github-actions/auth@v2.1.5
uses: google-github-actions/auth@v2.1.6
with:
credentials_json: ${{ secrets.REMOTE_CACHE_CREDENTIALS_JSON }}
- name: REPO CACHE
Expand Down
8 changes: 3 additions & 5 deletions deps/amqp10_client/src/amqp10_client_session.erl
Original file line number Diff line number Diff line change
Expand Up @@ -737,15 +737,13 @@ translate_terminus_durability(configuration) -> 1;
translate_terminus_durability(unsettled_state) -> 2.

translate_filters(Filters)
when is_map(Filters) andalso
map_size(Filters) == 0 ->
when map_size(Filters) =:= 0 ->
undefined;
translate_filters(Filters)
when is_map(Filters) ->
translate_filters(Filters) ->
{map,
maps:fold(
fun
(<<"apache.org:legacy-amqp-headers-binding:map">> = K, V, Acc) when is_map(V) ->
(<<"apache.org:legacy-amqp-headers-binding:map">> = K, V, Acc) when is_map(V) ->
%% special case conversion
Key = sym(K),
[{Key, {described, Key, translate_legacy_amqp_headers_binding(V)}} | Acc];
Expand Down
5 changes: 4 additions & 1 deletion deps/amqp10_client/src/amqp10_msg.erl
Original file line number Diff line number Diff line change
Expand Up @@ -433,7 +433,10 @@ wrap_ap_value(V) when is_integer(V) ->
case V < 0 of
true -> {int, V};
false -> {uint, V}
end.
end;
wrap_ap_value(V) when is_number(V) ->
%% AMQP double and Erlang float are both 64-bit.
{double, V}.

%% LOCAL
header_value(durable, undefined) -> false;
Expand Down
2 changes: 1 addition & 1 deletion deps/amqp10_common/app.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ def all_srcs(name = "all_srcs"):
)
filegroup(
name = "public_hdrs",
srcs = ["include/amqp10_framing.hrl", "include/amqp10_types.hrl"],
srcs = ["include/amqp10_filtex.hrl", "include/amqp10_framing.hrl", "include/amqp10_types.hrl"],
)
filegroup(
name = "private_hdrs",
Expand Down
15 changes: 15 additions & 0 deletions deps/amqp10_common/include/amqp10_filtex.hrl
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
%% This Source Code Form is subject to the terms of the Mozilla Public
%% License, v. 2.0. If a copy of the MPL was not distributed with this
%% file, You can obtain one at https://mozilla.org/MPL/2.0/.
%%
%% Copyright (c) 2007-2024 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. All rights reserved.


%% AMQP Filter Expressions Version 1.0 Working Draft 09
%% https://groups.oasis-open.org/higherlogic/ws/public/document?document_id=66227

-define(DESCRIPTOR_NAME_PROPERTIES_FILTER, <<"amqp:properties-filter">>).
-define(DESCRIPTOR_CODE_PROPERTIES_FILTER, 16#173).

-define(DESCRIPTOR_NAME_APPLICATION_PROPERTIES_FILTER, <<"amqp:application-properties-filter">>).
-define(DESCRIPTOR_CODE_APPLICATION_PROPERTIES_FILTER, 16#174).
16 changes: 16 additions & 0 deletions deps/rabbit/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -1207,6 +1207,7 @@ rabbitmq_integration_suite(
name = "amqp_client_SUITE",
size = "large",
additional_beam = [
":test_amqp_utils_beam",
":test_event_recorder_beam",
],
shard_count = 3,
Expand All @@ -1215,6 +1216,16 @@ rabbitmq_integration_suite(
],
)

rabbitmq_integration_suite(
name = "amqp_filtex_SUITE",
additional_beam = [
":test_amqp_utils_beam",
],
runtime_deps = [
"//deps/rabbitmq_amqp_client:erlang_app",
],
)

rabbitmq_integration_suite(
name = "amqp_proxy_protocol_SUITE",
size = "medium",
Expand All @@ -1235,6 +1246,7 @@ rabbitmq_integration_suite(
rabbitmq_integration_suite(
name = "amqp_auth_SUITE",
additional_beam = [
":test_amqp_utils_beam",
":test_event_recorder_beam",
],
shard_count = 2,
Expand All @@ -1246,6 +1258,9 @@ rabbitmq_integration_suite(
rabbitmq_integration_suite(
name = "amqp_address_SUITE",
shard_count = 2,
additional_beam = [
":test_amqp_utils_beam",
],
runtime_deps = [
"//deps/rabbitmq_amqp_client:erlang_app",
],
Expand Down Expand Up @@ -1358,6 +1373,7 @@ eunit(
":test_clustering_utils_beam",
":test_event_recorder_beam",
":test_rabbit_ct_hook_beam",
":test_amqp_utils_beam",
],
target = ":test_erlang_app",
test_env = {
Expand Down
16 changes: 13 additions & 3 deletions deps/rabbit/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -239,16 +239,26 @@ define ct_master.erl
peer:call(Pid2, persistent_term, put, [rabbit_ct_tcp_port_base, 25000]),
peer:call(Pid3, persistent_term, put, [rabbit_ct_tcp_port_base, 27000]),
peer:call(Pid4, persistent_term, put, [rabbit_ct_tcp_port_base, 29000]),
ct_master:run("$1"),
ct_master_fork:run("$1"),
Fail1 = peer:call(Pid1, cth_parallel_ct_detect_failure, has_failures, []),
Fail2 = peer:call(Pid2, cth_parallel_ct_detect_failure, has_failures, []),
Fail3 = peer:call(Pid3, cth_parallel_ct_detect_failure, has_failures, []),
Fail4 = peer:call(Pid4, cth_parallel_ct_detect_failure, has_failures, []),
peer:stop(Pid4),
peer:stop(Pid3),
peer:stop(Pid2),
peer:stop(Pid1),
halt()
if
Fail1 -> halt(1);
Fail2 -> halt(2);
Fail3 -> halt(3);
Fail4 -> halt(4);
true -> halt(0)
end
endef

PARALLEL_CT_SET_1_A = amqp_client unit_cluster_formation_locking_mocks unit_cluster_formation_sort_nodes unit_collections unit_config_value_encryption unit_connection_tracking
PARALLEL_CT_SET_1_B = amqp_address amqp_auth amqp_credit_api_v2 amqp_system signal_handling single_active_consumer unit_access_control_authn_authz_context_propagation unit_access_control_credential_validation unit_amqp091_content_framing unit_amqp091_server_properties unit_app_management
PARALLEL_CT_SET_1_B = amqp_address amqp_auth amqp_credit_api_v2 amqp_filtex amqp_system signal_handling single_active_consumer unit_access_control_authn_authz_context_propagation unit_access_control_credential_validation unit_amqp091_content_framing unit_amqp091_server_properties unit_app_management
PARALLEL_CT_SET_1_C = amqp_proxy_protocol amqpl_consumer_ack amqpl_direct_reply_to backing_queue bindings rabbit_db_maintenance rabbit_db_msup rabbit_db_policy rabbit_db_queue rabbit_db_topic_exchange rabbit_direct_reply_to_prop cluster_limit cluster_minority term_to_binary_compat_prop topic_permission transactions unicode unit_access_control
PARALLEL_CT_SET_1_D = amqqueue_backward_compatibility channel_interceptor channel_operation_timeout classic_queue classic_queue_prop config_schema peer_discovery_dns peer_discovery_tmp_hidden_node per_node_limit per_user_connection_channel_limit

Expand Down
Loading
Loading