Environment:
Ubuntu 12.10
latest devstack and latest cinder.
volume_driver=cinder.volume.drivers.lvm.LVMISCSIDriver
iscsi_helper = tgtadm
Steps to reproduce:
1. Create a volume with cinder create 1.
2. When the volume is available, clone a volume from this one with cinder create --source-volid $vol_id --display_name=clone 1.
After this, I need to wait for a while...
In the end I get the following error log:
=====================================output of cinder-volume========================================
2013-07-04 13:47:09.408 ERROR cinder.volume.manager [req-a9ec0d24-3552-4b73-bf4c-59e4c176aeb6 c310c0a65c844b7cbf3af8c2b43a1ed1 0d136b6ab5cd4593bdefeb5cd589e6e4] volume volume-9e244264-6137-41b8-9793-379962543e1e: create failed
2013-07-04 13:47:09.410 ERROR cinder.openstack.common.rpc.amqp [req-a9ec0d24-3552-4b73-bf4c-59e4c176aeb6 c310c0a65c844b7cbf3af8c2b43a1ed1 0d136b6ab5cd4593bdefeb5cd589e6e4] Exception during message handling
2013-07-04 13:47:09.410 TRACE cinder.openstack.common.rpc.amqp Traceback (most recent call last):
2013-07-04 13:47:09.410 TRACE cinder.openstack.common.rpc.amqp File "/opt/stack/cinder/cinder/openstack/common/rpc/amqp.py", line 433, in _process_data
2013-07-04 13:47:09.410 TRACE cinder.openstack.common.rpc.amqp **args)
2013-07-04 13:47:09.410 TRACE cinder.openstack.common.rpc.amqp File "/opt/stack/cinder/cinder/openstack/common/rpc/dispatcher.py", line 148, in dispatch
2013-07-04 13:47:09.410 TRACE cinder.openstack.common.rpc.amqp return getattr(proxyobj, method)(ctxt, **kwargs)
2013-07-04 13:47:09.410 TRACE cinder.openstack.common.rpc.amqp File "/opt/stack/cinder/cinder/volume/manager.py", line 307, in create_volume
2013-07-04 13:47:09.410 TRACE cinder.openstack.common.rpc.amqp "create.end")
2013-07-04 13:47:09.410 TRACE cinder.openstack.common.rpc.amqp File "/usr/lib/python2.7/contextlib.py", line 24, in __exit__
2013-07-04 13:47:09.410 TRACE cinder.openstack.common.rpc.amqp self.gen.next()
2013-07-04 13:47:09.410 TRACE cinder.openstack.common.rpc.amqp File "/opt/stack/cinder/cinder/volume/manager.py", line 283, in create_volume
2013-07-04 13:47:09.410 TRACE cinder.openstack.common.rpc.amqp allow_reschedule)
2013-07-04 13:47:09.410 TRACE cinder.openstack.common.rpc.amqp File "/opt/stack/cinder/cinder/volume/manager.py", line 366, in _reschedule_or_reraise
2013-07-04 13:47:09.410 TRACE cinder.openstack.common.rpc.amqp raise exc_info[0], exc_info[1], exc_info[2]
2013-07-04 13:47:09.410 TRACE cinder.openstack.common.rpc.amqp TypeError: exceptions must be old-style classes or derived from BaseException, not NoneType
2013-07-04 13:47:09.410 TRACE cinder.openstack.common.rpc.amqp
==============================================================================================
Couple of things that need cleaned up in the manager code there, we should probably except as ex and pass the ex in to the retry for starters along with sys.exc_info, and we should have a default for sys.exc_info set to None in the retry method signature.
And, finally based on what we're seeing here check sys.exc_info for None before trying extract the tuples in the retry method.