From 845a60df4c01ed2cbe9bf70db697eeb629402391 Mon Sep 17 00:00:00 2001 From: Francois Dumontet Date: Mon, 14 Oct 2024 15:46:34 +0200 Subject: [PATCH] lib: agentx add counters on locktry failure add counters for pthread_mutex_locktry fail. currently used for limiting logs Signed-off-by: Francois Dumontet --- lib/agentx.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/agentx.c b/lib/agentx.c index 27c6b763832b..cb42d96c8abe 100644 --- a/lib/agentx.c +++ b/lib/agentx.c @@ -52,6 +52,11 @@ static pthread_mutex_t ax_mtx; /* mutex dedicated to send/read exclusion */ static pthread_mutex_t ax_io_mtx; +/* counters */ +static uint64_t nb_locktry_read_fail; +static uint64_t nb_locktry_timeout_fail; + + static void agentx_pthreads_init(void) { assert(!agentx_pth); @@ -83,7 +88,10 @@ static void agentx_timeout(struct event *t) snmp_timeout(); run_alarms(); } else { - zlog_err("%s mutex already locked", __func__); + if (0 == nb_locktry_timeout_fail % 100) + zlog_err("%s mutex already locked %llu times", + __func__, nb_locktry_timeout_fail); + nb_locktry_timeout_fail++; agentx_events_update(NULL); return; } @@ -131,7 +139,9 @@ static void agentx_read(struct event *t) netsnmp_large_fd_setfd(t->u.fd, &lfds); snmp_read2(&lfds); } else { - zlog_err("%s mutex already locked", __func__); + zlog_err("%s mutex already locked %llu times", + __func__, nb_locktry_read_fail); + nb_locktry_read_fail++; agentx_events_update(NULL); return; }