mirror of
https://github.com/TwiN/gatus.git
synced 2026-02-14 19:17:28 +00:00
fix(tunneling): Adjust exponential backoff duration
This commit is contained in:
@@ -745,6 +745,9 @@ endpoints:
|
|||||||
- "[STATUS] == 200"
|
- "[STATUS] == 200"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> ⚠️ **WARNING**:: Tunneling may introduce additional latency, especially if the connection to the tunnel is retried frequently.
|
||||||
|
> This may lead to inaccurate response time measurements.
|
||||||
|
|
||||||
|
|
||||||
### Alerting
|
### Alerting
|
||||||
Gatus supports multiple alerting providers, such as Slack and PagerDuty, and supports different alerts for each
|
Gatus supports multiple alerting providers, such as Slack and PagerDuty, and supports different alerts for each
|
||||||
|
|||||||
@@ -131,11 +131,11 @@ func (t *SSHTunnel) Dial(network, addr string) (net.Conn, error) {
|
|||||||
}
|
}
|
||||||
// Attempt dial with exponential backoff retry
|
// Attempt dial with exponential backoff retry
|
||||||
const maxRetries = 3
|
const maxRetries = 3
|
||||||
const baseDelay = time.Second
|
const baseDelay = 500 * time.Millisecond
|
||||||
var lastErr error
|
var lastErr error
|
||||||
for attempt := 0; attempt < maxRetries; attempt++ {
|
for attempt := 0; attempt < maxRetries; attempt++ {
|
||||||
if attempt > 0 {
|
if attempt > 0 {
|
||||||
// Exponential backoff: 1s, 2s, 4s
|
// Exponential backoff: 500ms, 1s, 2s
|
||||||
delay := baseDelay << (attempt - 1)
|
delay := baseDelay << (attempt - 1)
|
||||||
time.Sleep(delay)
|
time.Sleep(delay)
|
||||||
// Close stale connection and reconnect
|
// Close stale connection and reconnect
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ type Config struct {
|
|||||||
// Tunnels is a map of SSH tunnel configurations in which the key is the name of the tunnel
|
// Tunnels is a map of SSH tunnel configurations in which the key is the name of the tunnel
|
||||||
Tunnels map[string]*sshtunnel.Config `yaml:",inline"`
|
Tunnels map[string]*sshtunnel.Config `yaml:",inline"`
|
||||||
|
|
||||||
mu sync.RWMutex `yaml:"-"`
|
mu sync.RWMutex `yaml:"-"`
|
||||||
connections map[string]*sshtunnel.SSHTunnel `yaml:"-"`
|
connections map[string]*sshtunnel.SSHTunnel `yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -188,4 +188,4 @@ func TestConfig_Close(t *testing.T) {
|
|||||||
if len(config.connections) != 0 {
|
if len(config.connections) != 0 {
|
||||||
t.Errorf("Close() did not clear connections map, got %d connections", len(config.connections))
|
t.Errorf("Close() did not clear connections map, got %d connections", len(config.connections))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user