** Also affects: nova/antelope
Importance: Undecided
Status: New
** Changed in: nova/antelope
Status: New => In Progress
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1984736
Title:
"TypeError: catching classes that do not inherit from BaseException is
not allowed" is raised if volume mount fails in python3
Status in OpenStack Compute (nova):
Fix Released
Status in OpenStack Compute (nova) antelope series:
In Progress
Bug description:
Saw this on a downstream CI run where a volume mount failed:
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager
[req-67e1cef8-e30a-4a47-8010-9e966fd30fce 8882186b6a324a0e9fb6fd268d337cce
8b290d651e9b42fd89c95b5e2a9a25fb - default default] [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] Failed to attach
5a6a5f37-0888-44b2-9456-cf087ae8c356 at /dev/vdb: TypeError: catching classes
that do not inherit from BaseException is not allowed
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] Traceback (most recent call last):
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] File
"/usr/lib/python3.9/site-packages/nova/virt/libvirt/volume/mount.py", line 305,
in mount
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] nova.privsep.fs.mount(fstype, export,
mountpoint, options)
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] File
"/usr/lib/python3.9/site-packages/oslo_privsep/priv_context.py", line 247, in
_wrap
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] return self.channel.remote_call(name,
args, kwargs)
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] File
"/usr/lib/python3.9/site-packages/oslo_privsep/daemon.py", line 224, in
remote_call
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] raise exc_type(*result[2])
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177]
oslo_concurrency.processutils.ProcessExecutionError: Unexpected error while
running command.
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] Command: mount -t nfs
192.168.1.50:/vol_cinder /var/lib/nova/mnt/724dab229d80c6a1a1e49a71c8356eed
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] Exit code: 32
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] Stdout: ''
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] Stderr: 'Failed to connect to bus: No
data available\nmount.nfs: Operation not permitted\n'
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177]
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] During handling of the above exception,
another exception occurred:
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177]
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] Traceback (most recent call last):
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] File
"/usr/lib/python3.9/site-packages/nova/compute/manager.py", line 7023, in
_attach_volume
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] bdm.attach(context, instance,
self.volume_api, self.driver,
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] File
"/usr/lib/python3.9/site-packages/nova/virt/block_device.py", line 46, in
wrapped
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] ret_val = method(obj, context, *args,
**kwargs)
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] File
"/usr/lib/python3.9/site-packages/nova/virt/block_device.py", line 672, in
attach
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] self._do_attach(context, instance,
volume, volume_api,
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] File
"/usr/lib/python3.9/site-packages/nova/virt/block_device.py", line 657, in
_do_attach
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] self._volume_attach(context, volume,
connector, instance,
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] File
"/usr/lib/python3.9/site-packages/nova/virt/block_device.py", line 606, in
_volume_attach
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] volume_api.attachment_delete(context,
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] File
"/usr/lib/python3.9/site-packages/oslo_utils/excutils.py", line 227, in __exit__
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] self.force_reraise()
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] File
"/usr/lib/python3.9/site-packages/oslo_utils/excutils.py", line 200, in
force_reraise
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] raise self.value
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] File
"/usr/lib/python3.9/site-packages/nova/virt/block_device.py", line 595, in
_volume_attach
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] virt_driver.attach_volume(
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] File
"/usr/lib/python3.9/site-packages/nova/virt/libvirt/driver.py", line 2052, in
attach_volume
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] self._connect_volume(context,
connection_info, instance,
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] File
"/usr/lib/python3.9/site-packages/nova/virt/libvirt/driver.py", line 1794, in
_connect_volume
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177]
vol_driver.connect_volume(connection_info, instance)
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] File
"/usr/lib/python3.9/site-packages/nova/virt/libvirt/volume/fs.py", line 113, in
connect_volume
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] mount.mount(self.fstype, export,
vol_name, mountpoint, instance,
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] File
"/usr/lib/python3.9/site-packages/nova/virt/libvirt/volume/mount.py", line 407,
in mount
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] mount_state.mount(fstype, export,
vol_name, mountpoint, instance,
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] File
"/usr/lib/python3.9/site-packages/nova/virt/libvirt/volume/mount.py", line 306,
in mount
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] except
processutils.ProcessExecutionError():
2022-07-29 11:56:57.606 2 ERROR nova.compute.manager [instance:
6a9a59d1-861d-4536-84ed-e54d817f0177] TypeError: catching classes that do not
inherit from BaseException is not allowed
There's a piece of code in nova/virt/libvirt/volume/mount.py that is
catching an instance of a class instead of a class [1]:
try:
nova.privsep.fs.mount(fstype, export, mountpoint, options)
except processutils.ProcessExecutionError():
This results in a TypeError in python3 but not in python2.
Python 2.7.18 (default, Jul 1 2022, 12:27:04)
[GCC 9.4.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> try:
... raise RuntimeError('oops!')
... except RuntimeError():
... print('hi')
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
RuntimeError: oops!
Python 3.8.10 (default, Jun 22 2022, 20:18:18)
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> try:
... raise RuntimeError('oops!')
... except RuntimeError():
... print('hi')
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
RuntimeError: oops!
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
TypeError: catching classes that do not inherit from BaseException is not
allowed
[1]
https://github.com/openstack/nova/blob/1220d53c2fd6231bb569a54f004a0e858536e970/nova/virt/libvirt/volume/mount.py#L309
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1984736/+subscriptions
--
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to : [email protected]
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help : https://help.launchpad.net/ListHelp