librados: only call watch_flush if necessary

Fix bug #10424
Signed-off-by: Haomai Wang <haomaiwang@gmail.com>

(cherry picked from commit 926a1b7468)
This commit is contained in:
Haomai Wang 2014-12-23 18:38:24 +08:00 committed by Sage Weil
parent 6b030aa8ba
commit a540ac3385

View File

@ -282,9 +282,6 @@ int librados::RadosClient::connect()
void librados::RadosClient::shutdown()
{
// make sure watch callbacks are flushed
watch_flush();
lock.Lock();
if (state == DISCONNECTED) {
lock.Unlock();
@ -301,8 +298,11 @@ void librados::RadosClient::shutdown()
instance_id = 0;
timer.shutdown(); // will drop+retake lock
lock.Unlock();
if (need_objecter)
if (need_objecter) {
// make sure watch callbacks are flushed
watch_flush();
objecter->shutdown();
}
monclient.shutdown();
if (messenger) {
messenger->shutdown();