Skip to content

Commit 6dd7447

Browse files
Merge pull request #13929 from rabbitmq/queue-checks
Use more idiomatic `maybe` feature
2 parents dfa06d9 + 3189686 commit 6dd7447

File tree

3 files changed

+16
-33
lines changed

3 files changed

+16
-33
lines changed

deps/rabbit/src/rabbit_queue_type_util.erl

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
check_auto_delete/1,
1313
check_exclusive/1,
1414
check_non_durable/1,
15-
run_checks/2,
1615
erpc_call/5]).
1716

1817
-include_lib("rabbit_common/include/rabbit.hrl").
@@ -62,16 +61,6 @@ check_non_durable(Q) when not ?amqqueue_is_durable(Q) ->
6261
{protocol_error, precondition_failed, "invalid property 'non-durable' for ~ts",
6362
[rabbit_misc:rs(Name)]}.
6463

65-
run_checks([], _) ->
66-
ok;
67-
run_checks([C | Checks], Q) ->
68-
case C(Q) of
69-
ok ->
70-
run_checks(Checks, Q);
71-
Err ->
72-
Err
73-
end.
74-
7564
-spec erpc_call(node(), module(), atom(), list(), non_neg_integer() | infinity) ->
7665
term() | {error, term()}.
7766
erpc_call(Node, M, F, A, _Timeout)

deps/rabbit/src/rabbit_quorum_queue.erl

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
%%
77

88
-module(rabbit_quorum_queue).
9+
-feature(maybe_expr, enable).
910

1011
-behaviour(rabbit_queue_type).
1112
-behaviour(rabbit_policy_validator).
@@ -248,15 +249,11 @@ handle_event(QName, {From, Evt}, QState) ->
248249
{new | existing, amqqueue:amqqueue()} |
249250
{protocol_error, Type :: atom(), Reason :: string(), Args :: term()}.
250251
declare(Q, _Node) when ?amqqueue_is_quorum(Q) ->
251-
case rabbit_queue_type_util:run_checks(
252-
[fun rabbit_queue_type_util:check_auto_delete/1,
253-
fun rabbit_queue_type_util:check_exclusive/1,
254-
fun rabbit_queue_type_util:check_non_durable/1],
255-
Q) of
256-
ok ->
257-
start_cluster(Q);
258-
Err ->
259-
Err
252+
maybe
253+
ok ?= rabbit_queue_type_util:check_auto_delete(Q),
254+
ok ?= rabbit_queue_type_util:check_exclusive(Q),
255+
ok ?= rabbit_queue_type_util:check_non_durable(Q),
256+
start_cluster(Q)
260257
end.
261258

262259
start_cluster(Q) ->

deps/rabbit/src/rabbit_stream_queue.erl

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
%%
77

88
-module(rabbit_stream_queue).
9+
-feature(maybe_expr, enable).
10+
911
-include("mc.hrl").
1012

1113
-behaviour(rabbit_queue_type).
@@ -137,19 +139,14 @@ is_compatible(_, _, _) ->
137139
-spec declare(amqqueue:amqqueue(), node()) ->
138140
{'new' | 'existing', amqqueue:amqqueue()} |
139141
{protocol_error, Type :: atom(), Reason :: string(), Args :: term()}.
140-
declare(Q0, _Node) when ?amqqueue_is_stream(Q0) ->
141-
case rabbit_queue_type_util:run_checks(
142-
[fun rabbit_queue_type_util:check_auto_delete/1,
143-
fun rabbit_queue_type_util:check_exclusive/1,
144-
fun rabbit_queue_type_util:check_non_durable/1,
145-
fun check_max_segment_size_bytes/1,
146-
fun check_filter_size/1
147-
],
148-
Q0) of
149-
ok ->
150-
create_stream(Q0);
151-
Err ->
152-
Err
142+
declare(Q, _Node) when ?amqqueue_is_stream(Q) ->
143+
maybe
144+
ok ?= rabbit_queue_type_util:check_auto_delete(Q),
145+
ok ?= rabbit_queue_type_util:check_exclusive(Q),
146+
ok ?= rabbit_queue_type_util:check_non_durable(Q),
147+
ok ?= check_max_segment_size_bytes(Q),
148+
ok ?= check_filter_size(Q),
149+
create_stream(Q)
153150
end.
154151

155152
check_max_segment_size_bytes(Q) ->

0 commit comments

Comments
 (0)