diff --git a/src/nameserver/chunkserver_manager.cc b/src/nameserver/chunkserver_manager.cc index 4233b780..7156a5c6 100644 --- a/src/nameserver/chunkserver_manager.cc +++ b/src/nameserver/chunkserver_manager.cc @@ -627,15 +627,18 @@ void ChunkServerManager::LogStats() { int32_t w_qps = 0, r_qps = 0; int64_t w_speed = 0, r_speed = 0, recover_speed = 0; int32_t overload = 0; - for (ServerMap::iterator it = chunkservers_.begin(); it != chunkservers_.end(); ++it) { - ChunkServerInfo* cs = it->second; - w_qps += cs->w_qps(); - w_speed += cs->w_speed(); - r_qps += cs->r_qps(); - r_speed += cs->r_speed(); - recover_speed += cs->recover_speed(); - if (cs->load() > kChunkServerLoadMax) { - ++overload; + { + MutexLock lock(&mu_); + for (ServerMap::iterator it = chunkservers_.begin(); it != chunkservers_.end(); ++it) { + ChunkServerInfo* cs = it->second; + w_qps += cs->w_qps(); + w_speed += cs->w_speed(); + r_qps += cs->r_qps(); + r_speed += cs->r_speed(); + recover_speed += cs->recover_speed(); + if (cs->load() > kChunkServerLoadMax) { + ++overload; + } } } stats_.w_qps = w_qps;