jasmin icon indicating copy to clipboard operation
jasmin copied to clipboard

Jasmin does not work with "durable" rabbit queues.

Open polyurethanegoose opened this issue 3 years ago • 0 comments

I've tried to verify whether Jasmin can work with Clustered RabbitMQ and it looks like it cannot. Creating a queue with type "Quorum" applies also a "feature = durable". Jasmin cannot connect to queues created with this arguments.

Log from main Jasmin process (strangely not from amqpp-client so issues with it are not raised to main process):

2021-09-30 XX:XX:XX ERROR    1   Cannot start deliverSmThrower: Method(name=close, id=40) (406, "PRECONDITION_FAILED - inequivalent arg 'durable' for queue 'deliver_sm_thrower' in vhost '/': received 'false' but current is 'true'", 50, 10) content = None
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/txamqp/protocol.py", line 90, in invoke
    resp = (yield self.responses.get()).payload
  File "/usr/local/lib/python3.9/site-packages/twisted/internet/defer.py", line 654, in _runCallbacks
    current.result = callback(current.result, *args, **kw)
  File "/usr/local/lib/python3.9/site-packages/txamqp/queue.py", line 34, in _raise_if_closed
    raise Closed()
txamqp.queue.Closed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/jasmind.py", line 429, in start
    yield self.startdeliverSmThrowerService()
  File "/usr/local/lib/python3.9/site-packages/twisted/internet/defer.py", line 1416, in _inlineCallbacks
    result = result.throwExceptionIntoGenerator(g)
  File "/usr/local/lib/python3.9/site-packages/twisted/python/failure.py", line 512, in throwExceptionIntoGenerator
    return g.throw(self.type, self.value, self.tb)
  File "/usr/local/lib/python3.9/site-packages/jasmin/routing/throwers.py", line 172, in addAmqpBroker
    yield self.amqpBroker.named_queue_declare(queue=self.queueName)
  File "/usr/local/lib/python3.9/site-packages/twisted/internet/defer.py", line 1416, in _inlineCallbacks
    result = result.throwExceptionIntoGenerator(g)
  File "/usr/local/lib/python3.9/site-packages/twisted/python/failure.py", line 512, in throwExceptionIntoGenerator
    return g.throw(self.type, self.value, self.tb)
  File "/usr/local/lib/python3.9/site-packages/txamqp/protocol.py", line 102, in invoke
    self._raise_closed(self.reason)
  File "/usr/local/lib/python3.9/site-packages/txamqp/protocol.py", line 123, in _raise_closed
    raise ChannelClosed(reason)
txamqp.client.ChannelClosed: Method(name=close, id=40) (406, "PRECONDITION_FAILED - inequivalent arg 'durable' for queue 'deliver_sm_thrower' in vhost '/': received 'false' but current is 'true'", 50, 10) content = None

2021-09-30 XX:XX:XX ERROR    1   Cannot start DLRThrower: Method(name=close, id=40) (406, "PRECONDITION_FAILED - inequivalent arg 'durable' for queue 'deliver_sm_thrower' in vhost '/': received 'false' but current is 'true'", 50, 10) content = None
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/txamqp/protocol.py", line 90, in invoke
    resp = (yield self.responses.get()).payload
  File "/usr/local/lib/python3.9/site-packages/twisted/internet/defer.py", line 654, in _runCallbacks
    current.result = callback(current.result, *args, **kw)
  File "/usr/local/lib/python3.9/site-packages/txamqp/queue.py", line 34, in _raise_if_closed
    raise Closed()
txamqp.queue.Closed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/jasmind.py", line 429, in start
    yield self.startdeliverSmThrowerService()
  File "/usr/local/lib/python3.9/site-packages/twisted/internet/defer.py", line 1416, in _inlineCallbacks
    result = result.throwExceptionIntoGenerator(g)
  File "/usr/local/lib/python3.9/site-packages/twisted/python/failure.py", line 512, in throwExceptionIntoGenerator
    return g.throw(self.type, self.value, self.tb)
  File "/usr/local/lib/python3.9/site-packages/jasmin/routing/throwers.py", line 172, in addAmqpBroker
    yield self.amqpBroker.named_queue_declare(queue=self.queueName)
  File "/usr/local/lib/python3.9/site-packages/twisted/internet/defer.py", line 1416, in _inlineCallbacks
    result = result.throwExceptionIntoGenerator(g)
  File "/usr/local/lib/python3.9/site-packages/twisted/python/failure.py", line 512, in throwExceptionIntoGenerator
    return g.throw(self.type, self.value, self.tb)
  File "/usr/local/lib/python3.9/site-packages/txamqp/protocol.py", line 102, in invoke
    self._raise_closed(self.reason)
  File "/usr/local/lib/python3.9/site-packages/txamqp/protocol.py", line 123, in _raise_closed
    raise ChannelClosed(reason)
txamqp.client.ChannelClosed: Method(name=close, id=40) (406, "PRECONDITION_FAILED - inequivalent arg 'durable' for queue 'deliver_sm_thrower' in vhost '/': received 'false' but current is 'true'", 50, 10) content = None

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/jasmind.py", line 439, in start
    yield self.startDLRThrowerService()
txamqp.client.ChannelClosed: Method(name=close, id=40) (406, "PRECONDITION_FAILED - inequivalent arg 'durable' for queue 'deliver_sm_thrower' in vhost '/': received 'false' but current is 'true'", 50, 10) content = None

Steps to reproduce:

  1. Install Jasmin with RabbiMQ
  2. Start full stack once (Jasmin creates queues)
  3. Stop Jasmin.
  4. Log-in into RabbitMQ management panel, remove eg. "dlr_thrower" queue.
  5. Create it again but this time not as "classic" but as s "quorum" type. This applies two features.
  6. Start Jasmin again.

polyurethanegoose avatar Sep 30 '21 13:09 polyurethanegoose