Skip to content

Commit d680193

Browse files
Merge pull request #1888 from rabbitmq/rabbitmq-server-1887
Check exclusive owner before durable argument
2 parents f6d9368 + bcb0f50 commit d680193

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

src/rabbit_amqqueue.erl

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -616,14 +616,14 @@ priv_absent(QueueName, _QPid, _IsDurable, timeout) ->
616616
rabbit_framing:amqp_table(), rabbit_types:maybe(pid())) ->
617617
'ok' | rabbit_types:channel_exit() | rabbit_types:connection_exit().
618618

619-
assert_equivalence(Q, Durable1, AD1, Args1, Owner) ->
619+
assert_equivalence(Q, DurableDeclare, AutoDeleteDeclare, Args1, Owner) ->
620620
QName = amqqueue:get_name(Q),
621-
Durable = amqqueue:is_durable(Q),
622-
AD = amqqueue:is_auto_delete(Q),
623-
rabbit_misc:assert_field_equivalence(Durable, Durable1, QName, durable),
624-
rabbit_misc:assert_field_equivalence(AD, AD1, QName, auto_delete),
625-
assert_args_equivalence(Q, Args1),
626-
check_exclusive_access(Q, Owner, strict).
621+
DurableQ = amqqueue:is_durable(Q),
622+
AutoDeleteQ = amqqueue:is_auto_delete(Q),
623+
ok = check_exclusive_access(Q, Owner, strict),
624+
ok = rabbit_misc:assert_field_equivalence(DurableQ, DurableDeclare, QName, durable),
625+
ok = rabbit_misc:assert_field_equivalence(AutoDeleteQ, AutoDeleteDeclare, QName, auto_delete),
626+
ok = assert_args_equivalence(Q, Args1).
627627

628628
-spec check_exclusive_access(amqqueue:amqqueue(), pid()) ->
629629
'ok' | rabbit_types:channel_exit().
@@ -640,7 +640,9 @@ check_exclusive_access(Q, _ReaderPid, _MatchType) ->
640640
QueueName = amqqueue:get_name(Q),
641641
rabbit_misc:protocol_error(
642642
resource_locked,
643-
"cannot obtain exclusive access to locked ~s",
643+
"cannot obtain exclusive access to locked ~s. It could be originally "
644+
"declared on another connection or the exclusive property value does not "
645+
"match that of the original declaration.",
644646
[rabbit_misc:rs(QueueName)]).
645647

646648
-spec with_exclusive_access_or_die(name(), pid(), qfun(A)) ->

0 commit comments

Comments
 (0)