diff --git a/include/pika_server.h b/include/pika_server.h index 1f63e96f63..7c1618a450 100644 --- a/include/pika_server.h +++ b/include/pika_server.h @@ -472,7 +472,7 @@ class PikaServer : public pstd::noncopyable { /* * Info Commandstats used */ - std::unordered_map& GetCommandStatMap(); + std::unordered_map* GetCommandStatMap(); friend class Cmd; friend class InfoCmd; diff --git a/src/pika_admin.cc b/src/pika_admin.cc index 8332e8e5a1..3765eaec0e 100644 --- a/src/pika_admin.cc +++ b/src/pika_admin.cc @@ -1244,7 +1244,7 @@ void InfoCmd::InfoCommandStats(std::string& info) { tmp_stream.precision(2); tmp_stream.setf(std::ios::fixed); tmp_stream << "# Commandstats" << "\r\n"; - for (auto& iter : g_pika_server->GetCommandStatMap()) { + for (auto& iter : *g_pika_server->GetCommandStatMap()) { if (iter.second.cmd_count != 0) { tmp_stream << "cmdstat_" << iter.first << ":" << "calls=" << iter.second.cmd_count << ",usec=" diff --git a/src/pika_client_conn.cc b/src/pika_client_conn.cc index 2e36090c09..8dab3c8f25 100644 --- a/src/pika_client_conn.cc +++ b/src/pika_client_conn.cc @@ -119,9 +119,9 @@ std::shared_ptr PikaClientConn::DoCmd(const PikaCmdArgsType& argv, const st // Process Command c_ptr->Execute(); uint64_t duration = pstd::NowMicros() - start_us; - auto &cmdstat_map = g_pika_server->GetCommandStatMap(); - cmdstat_map[opt].cmd_count.fetch_add(1); - cmdstat_map[opt].cmd_time_consuming.fetch_add(duration); + auto cmdstat_map = g_pika_server->GetCommandStatMap(); + (*cmdstat_map)[opt].cmd_count.fetch_add(1); + (*cmdstat_map)[opt].cmd_time_consuming.fetch_add(duration); if (g_pika_conf->slowlog_slower_than() >= 0) { ProcessSlowlog(argv, start_us, c_ptr->GetDoDuration()); diff --git a/src/pika_server.cc b/src/pika_server.cc index 8eac869bbb..3759190c57 100644 --- a/src/pika_server.cc +++ b/src/pika_server.cc @@ -179,7 +179,7 @@ void PikaServer::Start() { } } CommandStatistics statistics; - auto &cmdstat_map = g_pika_server->GetCommandStatMap(); + auto cmdstat_map = *g_pika_server->GetCommandStatMap(); for (auto& iter : *g_pika_cmd_table_manager->GetCmdTable()) { cmdstat_map.emplace(iter.first, statistics); } @@ -1603,8 +1603,8 @@ void PikaServer::Bgslotsreload(const std::shared_ptr& slot) { bgsave_thread_.Schedule(&DoBgslotsreload, static_cast(this)); } -std::unordered_map& PikaServer::GetCommandStatMap() { - return cmdstat_map_; +std::unordered_map* PikaServer::GetCommandStatMap() { + return &cmdstat_map_; } void DoBgslotsreload(void* arg) {