Open deathowl opened 2 years ago
This is largely by design, and a common pattern you will find throughout the dnstap software stack.
A primary design goal of dnstap was to minimize impact on instrumented DNS servers. As such, if the consumer of dnstap data is unable to process said data, we would prefer it to signal to the producer to stop sending data rather than unproductively consume data, wasting the producer's time. The blocking provided by a full buffer is a very simple method of providing this feedback, at the cost of sending stale data when the pipeline eventually unsticks.
if the remote is unreachable that socket writer is trying to connect to as per : https://github.com/dnstap/golang-dnstap/blob/master/SocketWriter.go#L202 it just continues, leaving the buffer full