]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
mgr: PyModuleRegistry::unregister_client() can run endlessly 37217/head
authorVenky Shankar <vshankar@redhat.com>
Fri, 4 Sep 2020 04:33:13 +0000 (00:33 -0400)
committerLaura Paduano <lpaduano@suse.com>
Thu, 17 Sep 2020 14:59:04 +0000 (16:59 +0200)
commit86fa504aa123fa4425a6303a0150cccbe79a7bd6
tree32ebc1cd717dc0d38d4a8f2d10db0a8481e9727c
parent6fcc9ae18070f4d54a41e2d908d7a08d392e5194
mgr: PyModuleRegistry::unregister_client() can run endlessly

Lately seeing the RADOS instance in manager (python core) getting
blocklisted. Manager modules (such as mgr/volumes) use a pool of
CephFS connection handles which register their addrs on connection
initialization (via register_client()). Shutting down a connection
unregisters the respective address.

Some history:

This machinery was introduced to workaround the case where ceph-mgr
was getting evicted by ceph mds due to unlcean shutdown (ceph-mgr
python modules do not cleanup gracefully on exit) causing teuthology
tests to fail. The workaround was to blocklist these clients by including
the client addrs in the manager beacon message sent to monitor (for
inclusion in OSDMap) -- but this was not sufficient enough to solve
the eviction issue altogether. In the end whitelisting the cluster log
warning was rather convinient to workaround the tests failures.
However, the whole register/unregister machinery in still in use.

The endless loop made ceph manager unresponsive thereby getting
blocklisted in midst of normal operation.

Fixes: http://tracker.ceph.com/issues/47329
Signed-off-by: Venky Shankar <vshankar@redhat.com>
(cherry picked from commit 12375a4cf5d664eb2a0d54fc3fdc0ae65a35c4ef)
src/mgr/PyModuleRegistry.h