diff options
author | Kevin Lin <developer@kevinlin.info> | 2021-08-17 23:48:37 -0700 |
---|---|---|
committer | dormando <dormando@rydia.net> | 2021-09-27 12:58:03 -0700 |
commit | 4b23988acb2151de8009d0ddc5e9d770f7bf3169 (patch) | |
tree | c003c4a7bfc5cd9f23d90f6442ebd5ae70167351 /logger.c | |
parent | 32349beb8e34a47201546de08dec003d39f29649 (diff) | |
download | memcached-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.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -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; |