From: Tomas Krizek Date: Wed, 2 Sep 2020 12:31:22 +0000 (+0200) Subject: daemon/worker: expose number of write errors X-Git-Tag: v5.2.0~15^2~24 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=332179b852da37efed75189e9df3bbec66959c74;p=thirdparty%2Fknot-resolver.git daemon/worker: expose number of write errors --- diff --git a/daemon/bindings/worker.c b/daemon/bindings/worker.c index b28048faf..f0a533f53 100644 --- a/daemon/bindings/worker.c +++ b/daemon/bindings/worker.c @@ -37,6 +37,14 @@ static int wrk_stats(lua_State *L) lua_setfield(L, -2, "ipv4"); lua_pushnumber(L, worker->stats.ipv6); lua_setfield(L, -2, "ipv6"); + lua_pushnumber(L, worker->stats.err_udp); + lua_setfield(L, -2, "err_udp"); + lua_pushnumber(L, worker->stats.err_tcp); + lua_setfield(L, -2, "err_tcp"); + lua_pushnumber(L, worker->stats.err_tls); + lua_setfield(L, -2, "err_tls"); + lua_pushnumber(L, worker->stats.err_http); + lua_setfield(L, -2, "err_http"); /* Add subset of rusage that represents counters. */ uv_rusage_t rusage; diff --git a/daemon/worker.c b/daemon/worker.c index f4bfaf43c..66bbe98a0 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -673,9 +673,18 @@ static int qr_task_send(struct qr_task *task, struct session *session, worker->rconcurrent_highwatermark = worker->stats.rconcurrent; ret = kr_error(UV_EMFILE); } + + if (session_flags(session)->has_http) + worker->stats.err_http += 1; + else if (session_flags(session)->has_tls) + worker->stats.err_tls += 1; + else if (handle->type == UV_UDP) + worker->stats.err_udp += 1; + else + worker->stats.err_tcp += 1; } - /* Update statistics */ + /* Update outgoing query statistics */ if (session_flags(session)->outgoing && addr) { if (session_flags(session)->has_tls) worker->stats.tls += 1; diff --git a/daemon/worker.h b/daemon/worker.h index a93a168fe..0d7f3f82e 100644 --- a/daemon/worker.h +++ b/daemon/worker.h @@ -123,6 +123,11 @@ struct worker_stats { size_t tls; /**< Number of outbound queries over TLS. */ size_t ipv4; /**< Number of outbound queries over IPv4.*/ size_t ipv6; /**< Number of outbound queries over IPv6. */ + + size_t err_udp; /**< Total number of write errors for UDP transport. */ + size_t err_tcp; /**< Total number of write errors for TCP transport. */ + size_t err_tls; /**< Total number of write errors for TLS transport. */ + size_t err_http; /**< Total number of write errors for HTTP(S) transport. */ }; /** @cond internal */