Unintended keyword arg to utils.execute prevents cinder-volume service from starting
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Cinder |
Fix Released
|
High
|
John Griffith | ||
Grizzly |
Fix Released
|
High
|
Avishay Traeger |
Bug Description
On Folsom, I was having trouble working with Cinder. Volume creation would show "error" state, existing volumes could not be attached to instances, and attempting to delete existing volumes would show them hung in a "deleting" state. I tracked the problem back to the cinder-volume service, which was failing on startup, yielding the following stack trace:
CRITICAL cinder [-] Got unknown keyword args to utils.execute: {'old_name': None}
TRACE cinder Traceback (most recent call last):
TRACE cinder File "/usr/bin/
TRACE cinder service.wait()
TRACE cinder File "/usr/lib/
TRACE cinder _launcher.wait()
TRACE cinder File "/usr/lib/
TRACE cinder service.wait()
TRACE cinder File "/usr/lib/
TRACE cinder return self._exit_
TRACE cinder File "/usr/lib/
TRACE cinder return hubs.get_
TRACE cinder File "/usr/lib/
TRACE cinder return self.greenlet.
TRACE cinder File "/usr/lib/
TRACE cinder result = function(*args, **kwargs)
TRACE cinder File "/usr/lib/
TRACE cinder server.start()
TRACE cinder File "/usr/lib/
TRACE cinder self.manager.
TRACE cinder File "/usr/lib/
TRACE cinder self.driver.
TRACE cinder File "/usr/lib/
TRACE cinder old_name=old_name )
TRACE cinder File "/usr/lib/
TRACE cinder self._new_
TRACE cinder File "/usr/lib/
TRACE cinder **kwargs)
TRACE cinder File "/usr/lib/
TRACE cinder self._execute(
TRACE cinder File "/usr/lib/
TRACE cinder 'to utils.execute: %r') % kwargs)
TRACE cinder Error: Got unknown keyword args to utils.execute: {'old_name': None}
It seems that the fix for https:/
In cinder/
So, this "old_name" : None mapping improperly propagates down the call stack until it reaches utils.py, where it triggers an error as an unknown keyword and causes the service to fail.
Since the method where the bug originates seems to indicate the value is not even needed, and since it is never accessed or handled down the call stack, I was able to remove it from the method with no apparent negative consequences, like so:
# NOTE(jdg): For TgtAdm case iscsi_name is the ONLY param we need
# should clean this all up at some point in the future
self.tgtadm.
With this parameter removed, I was able to successfully start my cinder-volume service to start normally and immediately begin to resolve its backlog of volume creation and deletion tasks.
Changed in cinder: | |
status: | Fix Committed → Fix Released |
tags: | added: grizzly-backport-potential |
Changed in cinder: | |
milestone: | havana-1 → 2013.2 |
tags: | removed: grizzly-backport-potential in-stable-grizzly |
Hi Alexander,
Yes, I came across this via a post on the mail-list yesterday but hadn't had time to file a bug yet. Thanks for logging this.