Bug #43163
openmgr/dashboard: race condition when deleting Pools
0%
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''