Skip to content

Commit

Permalink
mgr: fix py calls for dne service perf counters
Browse files Browse the repository at this point in the history
Fixes: http://tracker.ceph.com/issues/21253
Signed-off-by: John Spray <john.spray@redhat.com>
  • Loading branch information
John Spray committed Sep 8, 2017
1 parent 46ba645 commit 3e79a80
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 5 deletions.
7 changes: 6 additions & 1 deletion src/mgr/DaemonState.cc
Expand Up @@ -85,7 +85,12 @@ DaemonStatePtr DaemonStateIndex::get(const DaemonKey &key)
{
Mutex::Locker l(lock);

return all.at(key);
auto iter = all.find(key);
if (iter != all.end()) {
return iter->second;
} else {
return nullptr;
}
}

void DaemonStateIndex::cull(const std::string& svc_name,
Expand Down
8 changes: 4 additions & 4 deletions src/mgr/PyModules.cc
Expand Up @@ -679,9 +679,8 @@ PyObject* PyModules::get_counter_python(
f.open_array_section(path.c_str());

auto metadata = daemon_state.get(DaemonKey(svc_name, svc_id));

Mutex::Locker l2(metadata->lock);
if (metadata) {
Mutex::Locker l2(metadata->lock);
if (metadata->perf_counters.instances.count(path)) {
auto counter_instance = metadata->perf_counters.instances.at(path);
const auto &data = counter_instance.get_data();
Expand Down Expand Up @@ -726,8 +725,9 @@ PyObject* PyModules::get_perf_schema_python(
} else {
auto key = DaemonKey(svc_type, svc_id);
// so that the below can be a loop in all cases
if (daemon_state.exists(key)) {
states[key] = daemon_state.get(key);
auto got = daemon_state.get(key);
if (got != nullptr) {
daemons[key] = got;
}
}

Expand Down

0 comments on commit 3e79a80

Please sign in to comment.