This error is caused if there are classic mirrored queues present without online synchronised mirrors (queues that would potentially lose data if the target node is shut down).
There are two scenarios where this may occur:
Scenario 1First check and verify all of your RabbitMQ nodes are up and running. You can do this by checking the RabbitMQ Management UI, specifically the
Overview page. Another option is to run
rabbitmqctl cluster_status. If there is a node down, it may contain the only mirror for a queue.
Bring the node back online with
rabbitmqctl start_app to resolve this.
Scenario 2If all nodes are up and running, check if the queue name mentioned in the pre-start logs on the Management UI is an exclusive queue.

If it is an exclusive queue, next check if a mirroring policy has been applied to it. You can do this by clicking on the queue name, and checking the
Effective policy definition section.

In the above example, the queue is expected to be mirrored to other nodes. However, exclusive queue are not mirrored by design [1]. This causes the pre-start script to fail. This behaviour will be changed in a future release of RabbitMQ [2].
To resolve this, you have the following options:
- Once released, upgrade to 1.19.2/1.18.7 version of the tile. These version have an option to allow you to opt out of the pre-stop script.
- Remove the exclusive queue by stopping the application creating it.
- Update the first two lines of the script as below. The script is located at /var/vcap/jobs/rabbitmq-server/bin/pre-stop, and you will need to do this on each RabbitMQ server VM. Please note that this will change will be reverted after a deploy.
[1]
https://www.rabbitmq.com/ha.html#exclusive-queues-are-not-mirrored[2]
https://github.com/rabbitmq/rabbitmq-server/pull/2399