infinite child spawn loop when rabbit_durable_queues differs from rabbit server
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Glance |
Fix Released
|
High
|
Brian Waldon | ||
Grizzly |
Fix Released
|
High
|
Brian Waldon |
Bug Description
With a vanilla devstack install, set the following values in /etc/glance/
workers = 1
notifier_strategy = noop
rabbit_password = secrete
rabbit_
Restart glance-api - everything should be fine and notifications should be pushed out to rabbit. Now change the following value:
rabbit_
Restart glance-api - the service will enter an infinite loop where the child process raises an exception that looks like the following and exits, causing the parent to restart it:
2012-11-01 20:43:30 17554 TRACE glance self._connect()
2012-11-01 20:43:30 17554 TRACE glance File "/opt/stack/
2012-11-01 20:43:30 17554 TRACE glance queue.declare()
2012-11-01 20:43:30 17554 TRACE glance File "/usr/local/
2012-11-01 20:43:30 17554 TRACE glance return (self.name and self.exchange.
2012-11-01 20:43:30 17554 TRACE glance File "/usr/local/
2012-11-01 20:43:30 17554 TRACE glance nowait=nowait)
2012-11-01 20:43:30 17554 TRACE glance File "/usr/local/
2012-11-01 20:43:30 17554 TRACE glance return __sync_current(fun, *args, **kwargs)
2012-11-01 20:43:30 17554 TRACE glance File "/usr/local/
2012-11-01 20:43:30 17554 TRACE glance return spawn(fun, *args, **kwargs).wait()
2012-11-01 20:43:30 17554 TRACE glance File "/usr/local/
2012-11-01 20:43:30 17554 TRACE glance return self._exit_
2012-11-01 20:43:30 17554 TRACE glance File "/usr/local/
2012-11-01 20:43:30 17554 TRACE glance return hubs.get_
2012-11-01 20:43:30 17554 TRACE glance File "/usr/local/
2012-11-01 20:43:30 17554 TRACE glance return self.greenlet.
2012-11-01 20:43:30 17554 TRACE glance File "/usr/local/
2012-11-01 20:43:30 17554 TRACE glance result = function(*args, **kwargs)
2012-11-01 20:43:30 17554 TRACE glance File "/usr/local/
2012-11-01 20:43:30 17554 TRACE glance (40, 11), # Channel.
2012-11-01 20:43:30 17554 TRACE glance File "/usr/local/
2012-11-01 20:43:30 17554 TRACE glance return amqp_method(self, args)
2012-11-01 20:43:30 17554 TRACE glance File "/usr/local/
2012-11-01 20:43:30 17554 TRACE glance (class_id, method_id))
2012-11-01 20:43:30 17554 TRACE glance AMQPChannelExce
I would expect the service to stop either before each child is created or after each child fails to start properly.
Changed in glance: | |
assignee: | nobody → Brian Waldon (bcwaldon) |
Changed in glance: | |
status: | Fix Committed → Fix Released |
Can this issue be worked around simply by setting the rabbit_max_retries config variable to some sane non-zero value (e.g. 10)?
Unfortunately it defaults to zero, which the RabbitStrategy interprets as an infinite number of retries.