aboutsummaryrefslogtreecommitdiff
path: root/plugin/forward
diff options
context:
space:
mode:
authorGravatar Ricky S <singh.sangh@gmail.com> 2020-02-04 05:19:48 -0800
committerGravatar GitHub <noreply@github.com> 2020-02-04 14:19:48 +0100
commitefbe4ac5e80f7c59528d878f910b5edaf8cd17e1 (patch)
tree5986dfb53525110207338625e2aa8d2150e2807c /plugin/forward
parent22cd28a7987afc24161b110b550d3e62347d1626 (diff)
downloadcoredns-efbe4ac5e80f7c59528d878f910b5edaf8cd17e1.tar.gz
coredns-efbe4ac5e80f7c59528d878f910b5edaf8cd17e1.tar.zst
coredns-efbe4ac5e80f7c59528d878f910b5edaf8cd17e1.zip
Add exponential backoff to healthcheck (#3643)
Move exponential backoff initialization to Start() Signed-off-by: RickyRajinder <singh.sangh@gmail.com> Move comment Increase max interval and update README Remove trailing whitespace Change Start() param name back to interval
Diffstat (limited to 'plugin/forward')
-rw-r--r--plugin/forward/README.md6
1 files changed, 4 insertions, 2 deletions
diff --git a/plugin/forward/README.md b/plugin/forward/README.md
index cc1845377..b4307d8dd 100644
--- a/plugin/forward/README.md
+++ b/plugin/forward/README.md
@@ -9,8 +9,10 @@
The *forward* plugin re-uses already opened sockets to the upstreams. It supports UDP, TCP and
DNS-over-TLS and uses in band health checking.
-When it detects an error a health check is performed. This checks runs in a loop, every *0.5s*, for
-as long as the upstream reports unhealthy. Once healthy we stop health checking (until the next
+When it detects an error a health check is performed. This checks runs in a loop,
+starting with a *0.5s* interval and exponentially backing off with randomized intervals
+up to *60s* for as long as the upstream reports unhealthy. The exponential backoff
+will reset to *0.5s* after 15 minutes. Once healthy we stop health checking (until the next
error). The health checks use a recursive DNS query (`. IN NS`) to get upstream health. Any response
that is not a network error (REFUSED, NOTIMPL, SERVFAIL, etc) is taken as a healthy upstream. The
health check uses the same protocol as specified in **TO**. If `max_fails` is set to 0, no checking