diff options
author | dcorbacho <dparracorbacho@piotal.io> | 2021-02-19 16:45:57 +0100 |
---|---|---|
committer | dcorbacho <dparracorbacho@piotal.io> | 2021-02-19 16:45:57 +0100 |
commit | 0e63a7d79c9da3d4e62550137c0ad82b51fdc5fd (patch) | |
tree | 12420dc594c73cd8688dd9b4605160b37c8d3961 | |
parent | 699cd1ab29a86c70a930d589041a78f5b3bc338e (diff) | |
download | rabbitmq-server-git-0e63a7d79c9da3d4e62550137c0ad82b51fdc5fd.tar.gz |
Select applicable policies from exclusion list
It's not possible to know all aplicable policies since plugins can extend
these, i.e. federation. Thus, we'll exclude the known unapplicable core policies
and allow through any other policy.
-rw-r--r-- | deps/rabbit/src/rabbit_classic_queue.erl | 11 | ||||
-rw-r--r-- | deps/rabbit/src/rabbit_queue_type.erl | 4 | ||||
-rw-r--r-- | deps/rabbit/src/rabbit_quorum_queue.erl | 11 | ||||
-rw-r--r-- | deps/rabbit/src/rabbit_stream_queue.erl | 11 |
4 files changed, 22 insertions, 15 deletions
diff --git a/deps/rabbit/src/rabbit_classic_queue.erl b/deps/rabbit/src/rabbit_classic_queue.erl index e53c0aecc2..94cc7cc190 100644 --- a/deps/rabbit/src/rabbit_classic_queue.erl +++ b/deps/rabbit/src/rabbit_classic_queue.erl @@ -441,14 +441,9 @@ recover_durable_queues(QueuesAndRecoveryTerms) -> [Q || {_, {new, Q}} <- Results]. capabilities() -> - #{policies => [<<"expires">>, <<"message-ttl">>, <<"dead-letter-exchange">>, - <<"dead-letter-routing-key">>, <<"max-length">>, - <<"max-length-bytes">>, <<"max-in-memory-length">>, <<"max-in-memory-bytes">>, - <<"max-priority">>, <<"overflow">>, <<"queue-mode">>, - <<"single-active-consumer">>, <<"delivery-limit">>, - <<"ha-mode">>, <<"ha-params">>, <<"ha-sync-mode">>, - <<"ha-promote-on-shutdown">>, <<"ha-promote-on-failure">>, - <<"queue-master-locator">>], + #{policies => [ %% Stream policies + <<"max-age">>, <<"max-segment-size">>, + <<"queue-leader-locator">>, <<"initial-cluster-size">>], queue_arguments => [<<"x-expires">>, <<"x-message-ttl">>, <<"x-dead-letter-exchange">>, <<"x-dead-letter-routing-key">>, <<"x-max-length">>, <<"x-max-length-bytes">>, <<"x-max-in-memory-length">>, diff --git a/deps/rabbit/src/rabbit_queue_type.erl b/deps/rabbit/src/rabbit_queue_type.erl index 6ecaf40c7d..b568cd9981 100644 --- a/deps/rabbit/src/rabbit_queue_type.erl +++ b/deps/rabbit/src/rabbit_queue_type.erl @@ -298,9 +298,9 @@ i_down(_K, _Q, _DownReason) -> ''. is_policy_applicable(Q, Policy) -> Mod = amqqueue:get_type(Q), Capabilities = Mod:capabilities(), - Applicable = maps:get(policies, Capabilities, []), + NotApplicable = maps:get(policies, Capabilities, []), lists:all(fun({P, _}) -> - lists:member(P, Applicable) + not lists:member(P, NotApplicable) end, Policy). is_server_named_allowed(Type) -> diff --git a/deps/rabbit/src/rabbit_quorum_queue.erl b/deps/rabbit/src/rabbit_quorum_queue.erl index fa9c4f5d45..d4bfaf16ac 100644 --- a/deps/rabbit/src/rabbit_quorum_queue.erl +++ b/deps/rabbit/src/rabbit_quorum_queue.erl @@ -350,9 +350,14 @@ filter_quorum_critical(Queues, ReplicaStates) -> end, Queues). capabilities() -> - #{policies => [<<"max-length">>, <<"max-length-bytes">>, <<"overflow">>, - <<"expires">>, <<"max-in-memory-length">>, <<"max-in-memory-bytes">>, - <<"delivery-limit">>, <<"dead-letter-exchange">>, <<"dead-letter-routing-key">>], + #{policies => [ %% Classic policies + <<"message-ttl">>, <<"max-priority">>, <<"queue-mode">>, + <<"single-active-consumer">>, <<"ha-mode">>, <<"ha-params">>, + <<"ha-sync-mode">>, <<"ha-promote-on-shutdown">>, <<"ha-promote-on-failure">>, + <<"queue-master-locator">>, + %% Stream policies + <<"max-age">>, <<"max-segment-size">>, + <<"queue-leader-locator">>, <<"initial-cluster-size">>], queue_arguments => [<<"x-expires">>, <<"x-dead-letter-exchange">>, <<"x-dead-letter-routing-key">>, <<"x-max-length">>, <<"x-max-length-bytes">>, <<"x-max-in-memory-length">>, diff --git a/deps/rabbit/src/rabbit_stream_queue.erl b/deps/rabbit/src/rabbit_stream_queue.erl index 206584fe61..96806fe948 100644 --- a/deps/rabbit/src/rabbit_stream_queue.erl +++ b/deps/rabbit/src/rabbit_stream_queue.erl @@ -744,8 +744,15 @@ msg_to_iodata(#basic_message{exchange_name = #resource{name = Exchange}, rabbit_msg_record:to_iodata(R). capabilities() -> - #{policies => [<<"max-length-bytes">>, <<"max-age">>, <<"max-segment-size">>, - <<"queue-leader-locator">>, <<"initial-cluster-size">>], + #{policies => [ %% Classic policies + <<"expires">>, <<"message-ttl">>, <<"dead-letter-exchange">>, + <<"dead-letter-routing-key">>, <<"max-length">>, + <<"max-in-memory-length">>, <<"max-in-memory-bytes">>, + <<"max-priority">>, <<"overflow">>, <<"queue-mode">>, + <<"single-active-consumer">>, <<"delivery-limit">>, + <<"ha-mode">>, <<"ha-params">>, <<"ha-sync-mode">>, + <<"ha-promote-on-shutdown">>, <<"ha-promote-on-failure">>, + <<"queue-master-locator">>], queue_arguments => [<<"x-dead-letter-exchange">>, <<"x-dead-letter-routing-key">>, <<"x-max-length">>, <<"x-max-length-bytes">>, <<"x-single-active-consumer">>, <<"x-queue-type">>, |