From a2de837273c84c42233dd12829a8aca57257ce9f Mon Sep 17 00:00:00 2001 From: Daniel-Constantin Mierla Date: Tue, 2 Apr 2019 17:09:53 +0200 Subject: [PATCH] lib/srdb1: use system time to compute db query execution duration (cherry picked from commit ce8d36f301d7688255597a67693e47dc14448650) --- src/lib/srdb1/db_query.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/lib/srdb1/db_query.c b/src/lib/srdb1/db_query.c index b1900e4c2e3..b2cd9056dc9 100644 --- a/src/lib/srdb1/db_query.c +++ b/src/lib/srdb1/db_query.c @@ -32,6 +32,7 @@ #include #include +#include #include "../../core/dprint.h" #include "db_ut.h" #include "db_query.h" @@ -45,19 +46,26 @@ static inline int db_do_submit_query(const db1_con_t* _h, const str *_query, int (*submit_query)(const db1_con_t*, const str*)) { int ret; - unsigned int ms = 0; + struct timeval tvb, tve; + struct timezone tz; + unsigned int tdiff; - if(unlikely(cfg_get(core, core_cfg, latency_limit_db)>0)) - ms = TICKS_TO_MS(get_ticks_raw()); + if(unlikely(cfg_get(core, core_cfg, latency_limit_db)>0) + && is_printable(cfg_get(core, core_cfg, latency_log))) { + gettimeofday(&tvb, &tz); + } ret = submit_query(_h, _query); - if(unlikely(cfg_get(core, core_cfg, latency_limit_db)>0)) { - ms = TICKS_TO_MS(get_ticks_raw()) - ms; - if(ms >= cfg_get(core, core_cfg, latency_limit_db)) { - LOG(cfg_get(core, core_cfg, latency_log), - "alert - query execution too long [%u ms] for [%.*s]\n", - ms, _query->len<50?_query->len:50, _query->s); + if(unlikely(cfg_get(core, core_cfg, latency_limit_db)>0) + && is_printable(cfg_get(core, core_cfg, latency_log))) { + gettimeofday(&tve, &tz); + tdiff = (tve.tv_sec - tvb.tv_sec) * 1000000 + + (tve.tv_usec - tvb.tv_usec); + if(tdiff >= cfg_get(core, core_cfg, latency_limit_db)) { + LOG(cfg_get(core, core_cfg, latency_log), + "alert - query execution too long [%u us] for [%.*s]\n", + tdiff, _query->len<100?_query->len:100, _query->s); } }