diff options
author | Sage Weil <sage@inktank.com> | 2012-05-30 20:37:19 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2012-05-30 22:22:34 -0700 |
commit | ea1c0698cd195ebcf26b9ece280c3b9bf552e3e3 (patch) | |
tree | ce99a389e5491a37266fcef192ea6b0a23568289 /src/mon | |
parent | fa2f1deaaa86854c84e0d651cdded2e5985af1b9 (diff) | |
download | ceph-ea1c0698cd195ebcf26b9ece280c3b9bf552e3e3.tar.gz |
mon: fix admin socket lock dependency
Signed-off-by: Sage Weil <sage@inktank.com>
Diffstat (limited to 'src/mon')
-rw-r--r-- | src/mon/Monitor.cc | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index a6dba594926..846a310b2c4 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -340,6 +340,9 @@ int Monitor::init() admin_hook = new AdminHook(this); AdminSocket* admin_socket = cct->get_admin_socket(); + + // unlock while registering to avoid mon_lock -> admin socket lock dependency. + lock.Unlock(); r = admin_socket->register_command("mon_status", admin_hook, "show current monitor status"); assert(r == 0); @@ -349,6 +352,7 @@ int Monitor::init() r = admin_socket->register_command("add_bootstrap_peer_hint", admin_hook, "add peer address as potential bootstrap peer for cluster bringup"); assert(r == 0); + lock.Lock(); // i'm ready! messenger->add_dispatcher_tail(this); @@ -498,20 +502,15 @@ void Monitor::_add_bootstrap_peer_hint(string cmd, string args, ostream& ss) { dout(10) << "_add_bootstrap_peer_hint '" << cmd << "' '" << args << "'" << dendl; - if (is_leader() || is_peon()) { - ss << "mon already active; ignoring bootstrap hint"; - return; - } - - if (args.length() == 0) { - ss << "syntax is 'add_bootstrap_peer_hint ip[:port]'"; - return; - } - entity_addr_t addr; const char *end = 0; if (!addr.parse(args.c_str(), &end)) { - ss << "failed to parse addr '" << args << "'"; + ss << "failed to parse addr '" << args << "'; syntax is 'add_bootstrap_peer_hint ip[:port]'"; + return; + } + + if (is_leader() || is_peon()) { + ss << "mon already active; ignoring bootstrap hint"; return; } |