diff --git a/include/pika_cmd_table_manager.h b/include/pika_cmd_table_manager.h index 85c827a662..7966f0814f 100644 --- a/include/pika_cmd_table_manager.h +++ b/include/pika_cmd_table_manager.h @@ -73,7 +73,6 @@ class PikaCmdTableManager { */ std::unordered_map cmdstat_map_; std::unordered_map slow_command_count_; - std::mutex command_mutex_; std::shared_mutex histograms_mutex_; std::shared_mutex slow_command_mutex_; std::shared_ptr prometheus_registry_; diff --git a/src/pika_cmd_table_manager.cc b/src/pika_cmd_table_manager.cc index 7559bc7c6d..4be24fa059 100644 --- a/src/pika_cmd_table_manager.cc +++ b/src/pika_cmd_table_manager.cc @@ -15,9 +15,15 @@ extern std::unique_ptr g_pika_conf; void PikaCmdTableManager::ResetCommandCount() { - std::lock_guard lock(command_mutex_); - slow_command_count_.clear(); - InitHistograms(); + { + std::unique_lock write_lock(slow_command_mutex_); + slow_command_count_.clear(); + } + + { + std::unique_lock write_lock(histograms_mutex_); + InitHistograms(); + } } void PikaCmdTableManager::InitHistograms() { @@ -97,6 +103,7 @@ prometheus::Histogram& PikaCmdTableManager::GetHistogram(const std::string& opt) } prometheus::Family* PikaCmdTableManager::GetHistograms() { + std::shared_lock read_lock(histograms_mutex_); return histogram_family_; }