dnstap: resiliency against socket failures
Knot Resolver is not very consistent when it comes to handling dnstap failures. In my testing, when trying to connect to a non-existent or "inactive" (i.e. there is nobody listening on the other side of the socket) dnstap socket, Knot Resolver only logs a connection failure, and then keeps on working as normal. However, when there is something listening on the other side, and it does not actually understand dnstap, Knot Resolver fails to start.
When testing with go-dnscollector, I have also found that there is a slight problem when the consumer is restarted - dnstap starts working again eventually, but each worker only reconnects to the socket when "nudged" with a DNS query, but does not seem to push the events of said query to the socket. Only the second query (and other subsequent queries until the consumer is stopped) sent to the worker gets pushed to dnstap.