From 07ead55e4258e0d271fa653195654f2aa42b5895 Mon Sep 17 00:00:00 2001 From: yvxiang Date: Sun, 25 Sep 2016 15:56:16 +0800 Subject: [PATCH 1/2] Add lock --- src/nameserver/chunkserver_manager.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/nameserver/chunkserver_manager.cc b/src/nameserver/chunkserver_manager.cc index 4233b780..172bc95c 100644 --- a/src/nameserver/chunkserver_manager.cc +++ b/src/nameserver/chunkserver_manager.cc @@ -627,6 +627,7 @@ 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; + MutexLock lock(&mu_); for (ServerMap::iterator it = chunkservers_.begin(); it != chunkservers_.end(); ++it) { ChunkServerInfo* cs = it->second; w_qps += cs->w_qps(); From 305ef6e7043ac8dfa3aa72501b13e8c65e682ab6 Mon Sep 17 00:00:00 2001 From: yvxiang Date: Sun, 25 Sep 2016 16:04:44 +0800 Subject: [PATCH 2/2] Fix --- src/nameserver/chunkserver_manager.cc | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/nameserver/chunkserver_manager.cc b/src/nameserver/chunkserver_manager.cc index 172bc95c..7156a5c6 100644 --- a/src/nameserver/chunkserver_manager.cc +++ b/src/nameserver/chunkserver_manager.cc @@ -627,16 +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; - 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; + { + 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;