]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
daemon/worker: expose number of write errors
authorTomas Krizek <tomas.krizek@nic.cz>
Wed, 2 Sep 2020 12:31:22 +0000 (14:31 +0200)
committerTomas Krizek <tomas.krizek@nic.cz>
Tue, 13 Oct 2020 10:55:27 +0000 (12:55 +0200)
daemon/bindings/worker.c
daemon/worker.c
daemon/worker.h

index b28048fafafb6c95aed6abe581e0a6b5fc3ef858..f0a533f5309b55bb39f106cffbddb5f8856574a9 100644 (file)
@@ -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;
index f4bfaf43c1a1639bd07a3f465194a452c39ec941..66bbe98a04700ecaedc2d60772e2fa0a203bc22b 100644 (file)
@@ -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;
index a93a168fe774af3d283bd552e89166d6683613f4..0d7f3f82edec8c250708c27405ed9d209b0abbcb 100644 (file)
@@ -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 */