From: sage Date: Sun, 26 Jun 2005 23:45:28 +0000 (+0000) Subject: logger locks X-Git-Tag: v0.1~2040 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=389fe770ba1284c7085bb13b020afd926d0b320c;p=ceph.git logger locks git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@341 29311d96-e01e-0410-9327-a35deaab8ce9 --- diff --git a/ceph/common/Logger.cc b/ceph/common/Logger.cc index eb24fe9f5b369..5e06a8512112c 100644 --- a/ceph/common/Logger.cc +++ b/ceph/common/Logger.cc @@ -41,11 +41,14 @@ long Logger::inc(char *s, long v) } long Logger::inc(string& key, long v) { + lock.Lock(); if (!type->have_key(key)) type->add_inc(key); flush(); vals[key] += v; - return vals[key]; + long r = vals[key]; + lock.Unlock(); + return r; } long Logger::set(char *s, long v) @@ -55,12 +58,15 @@ long Logger::set(char *s, long v) } long Logger::set(string& key, long v) { + lock.Lock(); if (!type->have_key(key)) type->add_set(key); flush(); vals[key] = v; - return vals[key]; + long r = vals[key]; + lock.Unlock(); + return r; } long Logger::get(char *s) @@ -70,11 +76,16 @@ long Logger::get(char *s) } long Logger::get(string& key) { - return vals[key]; + lock.Lock(); + long r = vals[key]; + lock.Unlock(); + return r; } void Logger::flush(bool force) { + lock.Lock(); + timepair_t now = g_clock.gettimepair(); timepair_t fromstart = now - start; @@ -115,6 +126,8 @@ void Logger::flush(bool force) for (vector::iterator it = type->inc_keys.begin(); it != type->inc_keys.end(); it++) set(*it, 0); } + + lock.Unlock(); } diff --git a/ceph/common/Logger.h b/ceph/common/Logger.h index 9ed0a81e0eaaa..d8b4dc4cf8470 100644 --- a/ceph/common/Logger.h +++ b/ceph/common/Logger.h @@ -3,6 +3,8 @@ #include "include/types.h" #include "Clock.h" +#include "Mutex.h" + #include #include using namespace std; @@ -14,7 +16,7 @@ class LogType; class Logger { protected: hash_map vals; - + Mutex lock; LogType *type; timepair_t start;