From 389fe770ba1284c7085bb13b020afd926d0b320c Mon Sep 17 00:00:00 2001 From: sage Date: Sun, 26 Jun 2005 23:45:28 +0000 Subject: [PATCH] logger locks git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@341 29311d96-e01e-0410-9327-a35deaab8ce9 --- ceph/common/Logger.cc | 19 ++++++++++++++++--- ceph/common/Logger.h | 4 +++- 2 files changed, 19 insertions(+), 4 deletions(-) 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; -- 2.39.5