Project

General

Profile

Bug #43163

mgr/dashboard: race condition when deleting Pools

Added by Ernesto Puerta 7 months ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
dashboard/pools
Target version:
% Done:

0%

Source:
Q/A
Tags:
Backport:
nautilus
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature:

Description

As in other parts of the code (most in services.rbd), RBDConfiguration should gracefully handle exceptions (in this case, when trying to show Pool details of Pool that has been deleted: PoolDetails `getConfiguration()` and `/configuration` endpoint).

Traceback (most recent call last):
File "/usr/share/ceph/mgr/dashboard/services/exception.py", line 110, in handle_rados_error
yield
File "/usr/share/ceph/mgr/dashboard/services/exception.py", line 88, in dashboard_exception_handler
return handler(*args, **kwargs)
File "/lib/python3.6/site-packages/cherrypy/_cpdispatch.py", line 60, in call
return self.callable(*self.args, **self.kwargs)
File "/usr/share/ceph/mgr/dashboard/controllers/__init__.py", line 649, in inner
ret = func(*args, **kwargs)
File "/usr/share/ceph/mgr/dashboard/controllers/__init__.py", line 842, in wrapper
return func(*vpath, **params)
File "/usr/share/ceph/mgr/dashboard/controllers/pool.py", line 146, in configuration
return RbdConfiguration(pool_name).list()
File "/usr/share/ceph/mgr/dashboard/services/rbd.py", line 89, in list
ioctx = mgr.rados.open_ioctx(self._pool_name)
File "rados.pyx", line 516, in rados.requires.wrapper.validate_func
File "rados.pyx", line 1203, in rados.Rados.open_ioctx
rados.ObjectNotFound: [errno 2] error opening pool 'b'epuertat_6''

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/share/ceph/mgr/dashboard/services/exception.py", line 88, in dashboard_exception_handler
return handler(*args, **kwargs)
File "/lib64/python3.6/contextlib.py", line 99, in exit
self.gen.throw(type, value, traceback)
File "/usr/share/ceph/mgr/dashboard/services/exception.py", line 112, in handle_rados_error
raise DashboardException(e, component=component)
dashboard.exceptions.DashboardException: [errno 2] error opening pool 'b'epuertat_6''

Also available in: Atom PDF