summaryrefslogtreecommitdiff
path: root/logger.c
diff options
context:
space:
mode:
Diffstat (limited to 'logger.c')
-rw-r--r--logger.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/logger.c b/logger.c
index a5a87ab..667f3c7 100644
--- a/logger.c
+++ b/logger.c
@@ -668,12 +668,13 @@ static int logger_thread_poll_watchers(int force_poll, int watcher) {
return flushed;
}
-static void logger_thread_sum_stats(struct logger_stats *ls) {
+static void logger_thread_flush_stats(struct logger_stats *ls) {
STATS_LOCK();
stats.log_worker_dropped += ls->worker_dropped;
stats.log_worker_written += ls->worker_written;
stats.log_watcher_skipped += ls->watcher_skipped;
stats.log_watcher_sent += ls->watcher_sent;
+ stats_state.log_watchers = ls->watcher_count;
STATS_UNLOCK();
}
@@ -709,6 +710,10 @@ static void *logger_thread(void *arg) {
}
logger_thread_poll_watchers(1, WATCHER_ALL);
+
+ /* capture the current count within mutual exclusion of the lock */
+ ls.watcher_count = watcher_count;
+
pthread_mutex_unlock(&logger_stack_lock);
/* TODO: abstract into a function and share with lru_crawler */
@@ -722,7 +727,7 @@ static void *logger_thread(void *arg) {
if (to_sleep < MIN_LOGGER_SLEEP)
to_sleep = MIN_LOGGER_SLEEP;
}
- logger_thread_sum_stats(&ls);
+ logger_thread_flush_stats(&ls);
}
return NULL;