From 51b9b886bcb2e21954e1ec17c5df2ffad69c286d Mon Sep 17 00:00:00 2001 From: Maelkum Date: Fri, 12 Jul 2024 16:03:40 +0200 Subject: [PATCH] Decouple boot node reachability interval from peer discovery interval --- host/config.go | 23 ++++++++++++++++------- host/discovery.go | 4 ++-- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/host/config.go b/host/config.go index 35580dbc..5ac81e1c 100644 --- a/host/config.go +++ b/host/config.go @@ -10,12 +10,13 @@ import ( // defaultConfig used to create Host. var defaultConfig = Config{ - PrivateKey: "", - ConnectionThreshold: 20, - DialBackPeersLimit: 100, - DiscoveryInterval: 10 * time.Second, - Websocket: false, - MustReachBootNodes: defaultMustReachBootNodes, + PrivateKey: "", + ConnectionThreshold: 20, + DialBackPeersLimit: 100, + DiscoveryInterval: 10 * time.Second, + Websocket: false, + BootNodesReachabilityCheckInterval: 1 * time.Minute, + MustReachBootNodes: defaultMustReachBootNodes, } // Config represents the Host configuration. @@ -35,7 +36,8 @@ type Config struct { DialBackPort uint DialBackWebsocketPort uint - MustReachBootNodes bool + BootNodesReachabilityCheckInterval time.Duration + MustReachBootNodes bool } // WithPrivateKey specifies the private key for the Host. @@ -118,3 +120,10 @@ func WithMustReachBootNodes(b bool) func(*Config) { cfg.MustReachBootNodes = b } } + +// WithBootNodesReachabilityInterval specifies how often should we recheck and reconnect to boot nodes. +func WithBootNodesReachabilityInterval(d time.Duration) func(cfg *Config) { + return func(cfg *Config) { + cfg.BootNodesReachabilityCheckInterval = d + } +} diff --git a/host/discovery.go b/host/discovery.go index 9ad01ff6..2273d963 100644 --- a/host/discovery.go +++ b/host/discovery.go @@ -30,7 +30,7 @@ func (h *Host) ConnectToKnownPeers(ctx context.Context) error { // Spin up a goroutine to maintain connections to boot nodes in the background. // In case boot nodes drops out, we want to connect back to it. go func(ctx context.Context) { - ticker := time.NewTicker(h.cfg.DiscoveryInterval) + ticker := time.NewTicker(h.cfg.BootNodesReachabilityCheckInterval) for { select { case <-ticker.C: @@ -41,7 +41,7 @@ func (h *Host) ConnectToKnownPeers(ctx context.Context) error { case <-ctx.Done(): ticker.Stop() - h.log.Info().Msg("stopping boot node monitoring") + h.log.Debug().Msg("stopping boot node reachability monitoring") } } }(ctx)