Module: check_mk
Branch: master
Commit: 77f0069a3fa20b3bf4f41a31c7d62ffe643a7e9d
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=77f0069a3fa20b…
Author: Sven Panne <sp(a)mathias-kettner.de>
Date: Mon Nov 16 14:26:44 2015 +0100
Use lock_guard exclusively, no error-prone manual lock/unlock anymore.
---
livestatus/src/LogCache.cc | 9 ---------
livestatus/src/LogCache.h | 5 ++---
livestatus/src/TableLog.cc | 16 ++++++----------
livestatus/src/TableStateHistory.cc | 10 ++++------
4 files changed, 12 insertions(+), 28 deletions(-)
diff --git a/livestatus/src/LogCache.cc b/livestatus/src/LogCache.cc
index fd7b851..c433957 100644
--- a/livestatus/src/LogCache.cc
+++ b/livestatus/src/LogCache.cc
@@ -95,15 +95,6 @@ LogCache::~LogCache()
forgetLogfiles();
}
-void LogCache::lockLogCache()
-{
- _lock.lock();
-}
-
-void LogCache::unlockLogCache()
-{
- _lock.unlock();
-}
bool LogCache::logCachePreChecks()
{
diff --git a/livestatus/src/LogCache.h b/livestatus/src/LogCache.h
index 54f107b..75505f5 100644
--- a/livestatus/src/LogCache.h
+++ b/livestatus/src/LogCache.h
@@ -38,12 +38,13 @@ typedef std::map<time_t, Logfile *> _logfiles_t;
class LogCache
{
- mk::mutex _lock;
unsigned long _max_cached_messages;
unsigned long _num_at_last_check;
_logfiles_t _logfiles;
public:
+ mk::mutex _lock;
+
explicit LogCache(unsigned long max_cached_messages);
~LogCache();
void setMaxCachedMessages(unsigned long m);
@@ -59,8 +60,6 @@ public:
void updateLogfileIndex();
bool logCachePreChecks();
- void lockLogCache();
- void unlockLogCache();
private:
void scanLogfile(char *path, bool watch);
diff --git a/livestatus/src/TableLog.cc b/livestatus/src/TableLog.cc
index 6d19b8a..bcede94 100644
--- a/livestatus/src/TableLog.cc
+++ b/livestatus/src/TableLog.cc
@@ -30,6 +30,7 @@
#include "LogCache.h"
#include "LogEntry.h"
#include "Logfile.h"
+#include "Mutex.h"
#include "OffsetIntColumn.h"
#include "OffsetStringColumn.h"
#include "OffsetTimeColumn.h"
@@ -42,6 +43,8 @@
#include "auth.h"
#include "tables.h"
+using mk::lock_guard;
+using mk::mutex;
using std::string;
@@ -110,7 +113,7 @@ TableLog::~TableLog()
void TableLog::answerQuery(Query *query)
{
- g_store->logCache()->lockLogCache();
+ lock_guard<mutex> lg(g_store->logCache()->_lock);
g_store->logCache()->logCachePreChecks();
int since = 0;
@@ -126,10 +129,7 @@ void TableLog::answerQuery(Query *query)
// We want to load only those log type that are queried.
uint32_t classmask = LOGCLASS_ALL;
query->optimizeBitmask("class", &classmask);
- if (classmask == 0) {
- g_store->logCache()->unlockLogCache();
- return;
- }
+ if (classmask == 0) return;
/* This code start with the oldest log entries. I'm going
to change this and start with the newest. That way,
@@ -145,10 +145,7 @@ void TableLog::answerQuery(Query *query)
// not that of the last.
while (it != g_store->logCache()->logfiles()->begin() &&
it->first > until) // while logfiles are too new...
--it; // go back in history
- if (it->first > until) { // all logfiles are too new
- g_store->logCache()->unlockLogCache();
- return;
- }
+ if (it->first > until) return; // all logfiles are too new
while (true) {
Logfile *log = it->second;
@@ -158,7 +155,6 @@ void TableLog::answerQuery(Query *query)
break; // this was the oldest one
--it;
}
- g_store->logCache()->unlockLogCache();
}
diff --git a/livestatus/src/TableStateHistory.cc b/livestatus/src/TableStateHistory.cc
index a91b714..b273724 100644
--- a/livestatus/src/TableStateHistory.cc
+++ b/livestatus/src/TableStateHistory.cc
@@ -38,6 +38,7 @@
#include "Filter.h"
#include "HostServiceState.h"
#include "LogEntry.h"
+#include "Mutex.h"
#include "OffsetDoubleColumn.h"
#include "OffsetIntColumn.h"
#include "OffsetStringColumn.h"
@@ -57,6 +58,8 @@
#include "Timeperiod.h"
#endif
+using mk::lock_guard;
+using mk::mutex;
using std::deque;
using std::make_pair;
using std::map;
@@ -263,7 +266,7 @@ void TableStateHistory::answerQuery(Query *query)
}
- g_store->logCache()->lockLogCache();
+ lock_guard<mutex> lg(g_store->logCache()->_lock);
g_store->logCache()->logCachePreChecks();
// This flag might be set to true by the return value of processDataset(...)
@@ -289,14 +292,12 @@ void TableStateHistory::answerQuery(Query *query)
_query->findIntLimits("time", &_since, &_until);
if (_since == 0) {
query->setError(RESPONSE_CODE_INVALID_REQUEST, "Start of timeframe
required. e.g. Filter: time > 1234567890");
- g_store->logCache()->unlockLogCache();
return;
}
_query_timeframe = _until - _since - 1;
if (_query_timeframe == 0) {
query->setError(RESPONSE_CODE_INVALID_REQUEST, "Query timeframe is 0
seconds");
- g_store->logCache()->unlockLogCache();
return;
}
@@ -314,7 +315,6 @@ void TableStateHistory::answerQuery(Query *query)
if (_it_logs->first > _until) {
// All logfiles are too new, invalid timeframe
// -> No data available. Return empty result.
- g_store->logCache()->unlockLogCache();
return;
}
@@ -644,8 +644,6 @@ void TableStateHistory::answerQuery(Query *query)
}
state_info.clear();
object_blacklist.clear();
-
- g_store->logCache()->unlockLogCache();
}
bool TableStateHistory::objectFilteredOut(Query *, void *)