summaryrefslogtreecommitdiff
path: root/logger.c
diff options
context:
space:
mode:
authorKevin Lin <developer@kevinlin.info>2021-08-17 23:48:37 -0700
committerdormando <dormando@rydia.net>2021-09-27 12:58:03 -0700
commit4b23988acb2151de8009d0ddc5e9d770f7bf3169 (patch)
treec003c4a7bfc5cd9f23d90f6442ebd5ae70167351 /logger.c
parent32349beb8e34a47201546de08dec003d39f29649 (diff)
downloadmemcached-4b23988acb2151de8009d0ddc5e9d770f7bf3169.tar.gz
Expose number of currently active watchers in stats1.6.11
The stat key `log_watchers` indicates the number of active connected `watch` clients.
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;