]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
mgr/rbd_support: recover from rados client blocklisting
authorRamana Raja <rraja@redhat.com>
Wed, 15 Feb 2023 15:12:54 +0000 (10:12 -0500)
committerRamana Raja <rraja@redhat.com>
Tue, 8 Aug 2023 20:26:10 +0000 (16:26 -0400)
commit5bc2d002e70959f177543ba72946d60e6d2ce4ab
tree8597f4b883d507f0c0c378357b13a3217e0e0f70
parent6d88bb3b24f3965a01f8f6ba81239094d79b6d0e
mgr/rbd_support: recover from rados client blocklisting

In certain scenarios the OSDs were slow to process RBD requests.
This lead to the rbd_support module's RBD client not being able to
gracefully handover a RBD exclusive lock to another RBD client.
After the condition persisted for some time, the other RBD client
forcefully acquired the lock by blocklisting the rbd_support module's
RBD client, and consequently blocklisted the module's RADOS client. The
rbd_support module stopped working. To recover the module, the entire
mgr service had to be restarted which reloaded other mgr modules.

Instead of recovering the rbd_support module from client blocklisting
by being disruptive to other mgr modules, recover the module
automatically without restarting the mgr serivce. On client getting
blocklisted, shutdown the module's handlers and blocklisted client,
create a new rados client for the module, and start the new handlers.

Fixes: https://tracker.ceph.com/issues/56724
Signed-off-by: Ramana Raja <rraja@redhat.com>
(cherry picked from commit cc0468738e5ddb98f7ac10b50e54446197b9c9a0)

Conflicts:
src/pybind/mgr/rbd_support/mirror_snapshot_schedule.py
src/pybind/mgr/rbd_support/module.py
src/pybind/mgr/rbd_support/perf.py
src/pybind/mgr/rbd_support/task.py
src/pybind/mgr/rbd_support/trash_purge_schedule.py
 - Above conflicts were due to commit e4a16e2
   ("mgr/rbd_support: add type annotation") not in pacific
 - Above conflicts were due to commit dcb51b0
   ("mgr/rbd_support: define commands using CLICommand") not in pacific
src/pybind/mgr/mgr_module.py
src/pybind/mgr/rbd_support/mirror_snapshot_schedule.py
src/pybind/mgr/rbd_support/module.py
src/pybind/mgr/rbd_support/perf.py
src/pybind/mgr/rbd_support/schedule.py
src/pybind/mgr/rbd_support/task.py
src/pybind/mgr/rbd_support/trash_purge_schedule.py