metricq-python icon indicating copy to clipboard operation
metricq-python copied to clipboard

Exclusive RPC queue might exist on reconnect

Open bmario opened this issue 4 years ago • 0 comments

If a client loses the connection to the RabbitMQ server, but reconnects fast enough so that the RPC queue still exists, an exception will be thrown:

Traceback (most recent call last):
  File "/Users/mario/repos/metricq/metricq-sink-websocket/venv/lib/python3.8/site-packages/aio_pika/robust_connection.py", line 127, in connect
    await channel.reopen()
  File "/Users/mario/repos/metricq/metricq-sink-websocket/venv/lib/python3.8/site-packages/aio_pika/robust_channel.py", line 57, in reopen
    await self.restore()
  File "/Users/mario/repos/metricq/metricq-sink-websocket/venv/lib/python3.8/site-packages/aio_pika/robust_channel.py", line 70, in restore
    await queue.restore(self)
  File "/Users/mario/repos/metricq/metricq-sink-websocket/venv/lib/python3.8/site-packages/aio_pika/robust_queue.py", line 59, in restore
    await self.declare()
  File "/Users/mario/repos/metricq/metricq-sink-websocket/venv/lib/python3.8/site-packages/aio_pika/queue.py", line 92, in declare
    self.declaration_result = await asyncio.wait_for(
  File "/usr/local/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib/python3.8/asyncio/tasks.py", line 455, in wait_for
    return await fut
  File "/Users/mario/repos/metricq/metricq-sink-websocket/venv/lib/python3.8/site-packages/aiormq/channel.py", line 636, in queue_declare
    return await self.rpc(
  File "/Users/mario/repos/metricq/metricq-sink-websocket/venv/lib/python3.8/site-packages/aiormq/base.py", line 168, in wrap
    return await self.create_task(func(self, *args, **kwargs))
  File "/Users/mario/repos/metricq/metricq-sink-websocket/venv/lib/python3.8/site-packages/aiormq/base.py", line 27, in __inner
    raise self.exception from e
  File "/usr/local/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib/python3.8/asyncio/tasks.py", line 684, in _wrap_awaitable
    return (yield from awaitable.__await__())
  File "/Users/mario/repos/metricq/metricq-sink-websocket/venv/lib/python3.8/site-packages/aiormq/base.py", line 27, in __inner
    raise self.exception from e
aiormq.exceptions.ChannelLockedResource: RESOURCE_LOCKED - cannot obtain exclusive access to locked queue 'sink-websocket-test-rpc' in vhost '/'. It could be originally declared on another connection or the exclusive property value does not match that of the original declaration.

bmario avatar Aug 11 '20 15:08 bmario