summaryrefslogtreecommitdiff
path: root/deps/rabbit
diff options
context:
space:
mode:
authorSimon Unge <simunge@amazon.com>2023-04-27 15:16:39 -0700
committerSimon Unge <simunge@amazon.com>2023-04-27 15:16:39 -0700
commit367b1f0a6d74d6bc079dcc8dd28d686c58ce9cac (patch)
tree3a193ddf9745f9e3eb611542e4c852702cdaf560 /deps/rabbit
parent167246f5d9e03e7c828c74bed41d7ee23c23f5bb (diff)
downloadrabbitmq-server-git-367b1f0a6d74d6bc079dcc8dd28d686c58ce9cac.tar.gz
Add ha-sync-mode as an operator policy
Diffstat (limited to 'deps/rabbit')
-rw-r--r--deps/rabbit/priv/schema/rabbit.schema4
-rw-r--r--deps/rabbit/src/rabbit_mirror_queue_misc.erl6
-rw-r--r--deps/rabbit/test/config_schema_SUITE_data/rabbit.snippets3
-rw-r--r--deps/rabbit/test/policy_SUITE.erl7
4 files changed, 19 insertions, 1 deletions
diff --git a/deps/rabbit/priv/schema/rabbit.schema b/deps/rabbit/priv/schema/rabbit.schema
index d71308cf18..7f5de3b217 100644
--- a/deps/rabbit/priv/schema/rabbit.schema
+++ b/deps/rabbit/priv/schema/rabbit.schema
@@ -776,6 +776,10 @@ end}.
{datatype, [integer, {list, string}]}
]}.
+{mapping, "default_policies.operator.$id.classic_queues.ha_sync_mode", "rabbit.default_policies.operator", [
+ {datatype, string}
+]}.
+
{translation, "rabbit.default_policies.operator", fun(Conf) ->
Props = rabbit_cuttlefish:aggregate_props(
Conf,
diff --git a/deps/rabbit/src/rabbit_mirror_queue_misc.erl b/deps/rabbit/src/rabbit_mirror_queue_misc.erl
index 8a2c59b662..5e5ec9cec3 100644
--- a/deps/rabbit/src/rabbit_mirror_queue_misc.erl
+++ b/deps/rabbit/src/rabbit_mirror_queue_misc.erl
@@ -55,9 +55,13 @@
{mfa, {rabbit_registry, register,
[operator_policy_validator, <<"ha-params">>, ?MODULE]}},
{mfa, {rabbit_registry, register,
+ [operator_policy_validator, <<"ha-sync-mode">>, ?MODULE]}},
+ {mfa, {rabbit_registry, register,
[policy_merge_strategy, <<"ha-mode">>, ?MODULE]}},
{mfa, {rabbit_registry, register,
[policy_merge_strategy, <<"ha-params">>, ?MODULE]}},
+ {mfa, {rabbit_registry, register,
+ [policy_merge_strategy, <<"ha-sync-mode">>, ?MODULE]}},
{requires, rabbit_registry},
{enables, recovery}]}).
@@ -870,6 +874,8 @@ merge_policy_value(<<"ha-mode">>, <<"exactly">> = Val, _OpVal) ->
Val;
merge_policy_value(<<"ha-mode">>, _Val, <<"exactly">> = OpVal) ->
OpVal;
+merge_policy_value(<<"ha-sync-mode">>, _Val, OpVal) ->
+ OpVal;
%% Both values are integers, both are ha-mode 'exactly'
merge_policy_value(<<"ha-params">>, Val, OpVal) when is_integer(Val)
andalso
diff --git a/deps/rabbit/test/config_schema_SUITE_data/rabbit.snippets b/deps/rabbit/test/config_schema_SUITE_data/rabbit.snippets
index 2d80ba3d46..05aeb35f70 100644
--- a/deps/rabbit/test/config_schema_SUITE_data/rabbit.snippets
+++ b/deps/rabbit/test/config_schema_SUITE_data/rabbit.snippets
@@ -142,11 +142,14 @@ ssl_options.fail_if_no_peer_cert = true",
default_policies.operator.a.vhost_pattern = banana
default_policies.operator.a.classic_queues.ha_mode = exactly
default_policies.operator.a.classic_queues.ha_params = 2
+ default_policies.operator.a.classic_queues.ha_sync_mode = automatic
+
",
[{rabbit, [{default_policies, [{operator, [
{<<"a">>, [{<<"expires">>, 3600000},
{<<"ha_mode">>, "exactly"},
{<<"ha_params">>, 2},
+ {<<"ha_sync_mode">>, "automatic"},
{<<"queue_pattern">>, "apple"},
{<<"vhost_pattern">>, "banana"}]}]}]}]}],
[]},
diff --git a/deps/rabbit/test/policy_SUITE.erl b/deps/rabbit/test/policy_SUITE.erl
index c638aaedd9..822b925c58 100644
--- a/deps/rabbit/test/policy_SUITE.erl
+++ b/deps/rabbit/test/policy_SUITE.erl
@@ -168,12 +168,13 @@ target_count_policy(Config) ->
{<<"ha-params">>, BNodes}],
NodesPolicyOne = [{<<"ha-mode">>, <<"nodes">>},
{<<"ha-params">>, [hd(BNodes)]}],
+ SyncModePolicyAuto = [{<<"ha-mode">>, <<"all">>}, {<<"ha-sync-mode">>, <<"automatic">>}],
+ SyncModePolicyMan = [{<<"ha-mode">>, <<"all">>}, {<<"ha-sync-mode">>, <<"manual">>}],
%% ALL has precedence
Opts = #{config => Config,
server => Server,
qname => QName},
-
verify_policies(AllPolicy, ExactlyPolicyTwo, [{<<"ha-mode">>, <<"all">>}], Opts),
verify_policies(ExactlyPolicyTwo, AllPolicy, [{<<"ha-mode">>, <<"all">>}], Opts),
@@ -182,6 +183,10 @@ target_count_policy(Config) ->
verify_policies(NodesPolicyAll, AllPolicy, [{<<"ha-mode">>, <<"all">>}], Opts),
+ %% %% Sync mode OperPolicy has precedence
+ verify_policies(SyncModePolicyMan, SyncModePolicyAuto, [{<<"ha-sync-mode">>, <<"automatic">>}], Opts),
+ verify_policies(SyncModePolicyAuto, SyncModePolicyMan, [{<<"ha-sync-mode">>, <<"manual">>}], Opts),
+
%% exactly has precedence over nodes
verify_policies(ExactlyPolicyTwo, NodesPolicyAll,[{<<"ha-mode">>, <<"exactly">>}, {<<"ha-params">>, 2}], Opts),