From 5b44a348bfe4978446bbc7acf58eb8f60a47c965 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 28 Mar 2016 10:33:53 -0400 Subject: [PATCH] mon/MonClient: fix shutdown race While we are shutting down, we should drop all subsequent mon messages. Currently it is possible to finish the authentication sequence *while* we are shutting down, such that a subsequent attempt to authenticate succeeds. Fix this by resetting cur_con early in the sequence, as this makes us drop all incoming messages. Fixes: http://tracker.ceph.com/issues/13992 Signed-off-by: Sage Weil --- src/mon/MonClient.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/mon/MonClient.cc b/src/mon/MonClient.cc index dc1ec6c4a7b..2ab6174e362 100644 --- a/src/mon/MonClient.cc +++ b/src/mon/MonClient.cc @@ -426,6 +426,11 @@ void MonClient::shutdown() waiting_for_session.pop_front(); } + if (cur_con) + cur_con->mark_down(); + cur_con.reset(NULL); + cur_mon.clear(); + monc_lock.Unlock(); if (initialized) { @@ -434,11 +439,6 @@ void MonClient::shutdown() monc_lock.Lock(); timer.shutdown(); - if (cur_con) - cur_con->mark_down(); - cur_con.reset(NULL); - cur_mon.clear(); - monc_lock.Unlock(); } -- 2.47.3