Documentation ¶
Overview ¶
Package up is used to run a function for some duration. If a new function is added while a previous run is still ongoing, nothing new will be executed.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Func ¶
type Func func() error
Func is used to determine if a target is alive. If so this function must return nil.
type Probe ¶
Probe is used to run a single Func until it returns true (indicating a target is healthy). If an Func is already in progress no new one will be added, i.e. there is always a maximum of 1 checks in flight.
There is a tradeoff to be made in figuring out quickly that an upstream is healthy and not doing much work (sending queries) to find that out. Having some kind of exp. backoff here won't help much, because you don't want to backoff too much. You then also need random queries to be performed every so often to quickly detect a working upstream. In the end we just send a query every 0.5 second to check the upstream. This hopefully strikes a balance between getting information about the upstream state quickly and not doing too much work. Note that 0.5s is still an eternity in DNS, so we may actually want to shorten it.