Skip to content

Queue decorators are not supported by quorum queues #2756

@michaelklishin

Description

@michaelklishin

Queue federation uses decorators to register callbacks that react to queue policy changes, so that links can be started/stopped. This is currently not supported by quorum queues, at least not in every case.

For example, rabbit_amqqueue:notify_decorators/1 will fail with an exception if invoked for a quorum queue:

{function_clause,
                           [{delegate,invoke_no_result,
                                [{'%2F_test.federation.orange',
                                     'rabbit@rabbitmq-1.rabbitmq-headless.rabbitmq.svc.cluster.local'},
                                 {gen_server2,cast,[notify_decorators]}],
                                [{file,"src/delegate.erl"},{line,137}]},
                            {rabbit_federation_queue_link,init,1,
                                [{file,"src/rabbit_federation_queue_link.erl"},
                                 {line,72}]},
                            {gen_server2,init_it,6,
                                [{file,"src/gen_server2.erl"},{line,565}]},
                            {proc_lib,init_p_do_apply,3,
                                [{file,"proc_lib.erl"},{line,249}]}]}}},

As you can see above, a Ra server ID is passed to delegate:invoke_no_result/2 which expects an Erlang PID instead.

There are a few more places with basically the same problem.

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions