X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=ceph%2Fsrc%2Fmgr%2FMgr.cc;h=092b71fdb9fac8a872beac43d87167d996fed989;hb=c07f9fc5a4f48397831383549fb0482b93480643;hp=68126e9430ed8b37de08cc91c80daec372b3b1e0;hpb=9439ae556f035e65c9c107ae13ddd09457dbbecd;p=ceph.git diff --git a/ceph/src/mgr/Mgr.cc b/ceph/src/mgr/Mgr.cc index 68126e943..092b71fdb 100644 --- a/ceph/src/mgr/Mgr.cc +++ b/ceph/src/mgr/Mgr.cc @@ -22,6 +22,7 @@ #include "global/signal_handler.h" #include "mgr/MgrContext.h" +#include "mgr/mgr_commands.h" #include "MgrPyModule.h" #include "DaemonServer.h" @@ -117,7 +118,7 @@ public: DaemonStatePtr state; if (daemon_state.exists(key)) { state = daemon_state.get(key); - // TODO lock state + Mutex::Locker l(state->lock); daemon_meta.erase("name"); daemon_meta.erase("hostname"); state->metadata.clear(); @@ -332,7 +333,7 @@ void Mgr::load_config() dout(10) << "listing keys" << dendl; JSONCommand cmd; - cmd.run(monc, "{\"prefix\": \"config-key list\"}"); + cmd.run(monc, "{\"prefix\": \"config-key ls\"}"); lock.Unlock(); cmd.wait(); lock.Lock(); @@ -414,6 +415,7 @@ void Mgr::handle_osd_map() if (daemon_state.exists(k)) { auto metadata = daemon_state.get(k); + Mutex::Locker l(metadata->lock); auto addr_iter = metadata->metadata.find("front_addr"); if (addr_iter != metadata->metadata.end()) { const std::string &metadata_addr = addr_iter->second; @@ -551,6 +553,7 @@ void Mgr::handle_fs_map(MFSMap* m) bool update = false; if (daemon_state.exists(k)) { auto metadata = daemon_state.get(k); + Mutex::Locker l(metadata->lock); if (metadata->metadata.empty() || metadata->metadata.count("addr") == 0) { update = true; @@ -632,3 +635,14 @@ void Mgr::tick() dout(10) << dendl; server.send_report(); } + +std::vector Mgr::get_command_set() const +{ + Mutex::Locker l(lock); + + std::vector commands = mgr_commands; + std::vector py_commands = py_modules.get_commands(); + commands.insert(commands.end(), py_commands.begin(), py_commands.end()); + return commands; +} +