Skip to content

Commit db9196a

Browse files
Merge pull request #14420 from rabbitmq/mergify/bp/v4.1.x/pr-14415
Shovel amqp1.0: fix delete after validation (backport #14415)
2 parents b112383 + 07e2196 commit db9196a

File tree

2 files changed

+28
-2
lines changed

2 files changed

+28
-2
lines changed

deps/rabbitmq_shovel/src/rabbit_shovel_parameters.erl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ amqp10_src_validation(_Def, User) ->
133133
{<<"src-uri">>, validate_uri_fun(User), mandatory},
134134
{<<"src-address">>, fun rabbit_parameter_validation:binary/2, mandatory},
135135
{<<"src-prefetch-count">>, fun rabbit_parameter_validation:number/2, optional},
136-
{<<"src-delete-after">>, fun validate_delete_after/2, optional}
136+
{<<"src-delete-after">>, fun validate_amqp10_delete_after/2, optional}
137137
].
138138

139139
amqp091_src_validation(_Def, User) ->
@@ -233,6 +233,12 @@ validate_delete_after(Name, Term) ->
233233
{error, "~ts should be a number greater than or equal to 0, \"never\" or \"queue-length\", actually was "
234234
"~tp", [Name, Term]}.
235235

236+
validate_amqp10_delete_after(_Name, <<"never">>) -> ok;
237+
validate_amqp10_delete_after(_Name, N) when is_integer(N), N >= 0 -> ok;
238+
validate_amqp10_delete_after(Name, Term) ->
239+
{error, "~ts should be a number greater than or equal to 0 or \"never\", actually was "
240+
"~tp", [Name, Term]}.
241+
236242
validate_queue_args(Name, Term0) ->
237243
Term = rabbit_data_coercion:to_proplist(Term0),
238244

deps/rabbitmq_shovel/test/amqp10_dynamic_SUITE.erl

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ groups() ->
2828
autodelete_amqp091_dest_on_publish,
2929
simple_amqp10_dest,
3030
simple_amqp10_src,
31-
amqp091_to_amqp10_with_dead_lettering
31+
amqp091_to_amqp10_with_dead_lettering,
32+
test_amqp10_delete_after_queue_length
3233
]},
3334
{with_map_config, [], [
3435
simple,
@@ -301,6 +302,25 @@ autodelete_amqp091_dest(Config, {AckMode, After, ExpSrc, ExpDest}) ->
301302
expect_count(Session, Src, <<"hello">>, ExpSrc)
302303
end.
303304

305+
test_amqp10_delete_after_queue_length(Config) ->
306+
Src = ?config(srcq, Config),
307+
Dest = ?config(destq, Config),
308+
Uri = shovel_test_utils:make_uri(Config, 0),
309+
Error = rabbit_ct_broker_helpers:rpc(
310+
Config, 0,
311+
rabbit_runtime_parameters, set,
312+
[<<"/">>, <<"shovel">>, <<"test">>, [{<<"src-uri">>, Uri},
313+
{<<"dest-uri">>, [Uri]},
314+
{<<"src-protocol">>, <<"amqp10">>},
315+
{<<"src-address">>, Src},
316+
{<<"src-delete-after">>, <<"queue-length">>},
317+
{<<"dest-protocol">>, <<"amqp10">>},
318+
{<<"dest-address">>, Dest}],
319+
none]),
320+
?assertMatch({error_string, _}, Error),
321+
{_, Msg} = Error,
322+
?assertMatch(match, re:run(Msg, "Validation failed.*", [{capture, none}])).
323+
304324
%%----------------------------------------------------------------------------
305325

306326
with_session(Config, Fun) ->

0 commit comments

Comments
 (0)