add max dialing attempts

This commit is contained in:
tycho garen
2022-06-15 09:32:57 -04:00
parent b0e0e3acbb
commit 13f6493813
2 changed files with 16 additions and 0 deletions
+15
View File
@@ -148,6 +148,10 @@ type PeerManagerOptions struct {
// retry times, to avoid thundering herds. 0 disables jitter.
RetryTimeJitter time.Duration
// Maximum number of times we will try to dial a peer before
// marking it inactive.
MaxFailedDialAttempts uint32
// PeerScores sets fixed scores for specific peers. It is mainly used
// for testing. A score of 0 is ignored.
PeerScores map[types.NodeID]PeerScore
@@ -565,6 +569,17 @@ func (m *PeerManager) DialFailed(address NodeAddress) error {
addressInfo.LastDialFailure = time.Now().UTC()
addressInfo.DialFailures++
var totalDialFailures uint32
for _, addr := range peer.AddressInfo {
totalDialFailures += addr.DialFailures
}
if m.options.MaxFailedDialAttempts > 0 && totalDialFailures > m.options.MaxFailedDialAttempts {
peer.Inactive = true
m.metrics.PeersInactivated.Add(1)
}
if err := m.store.Set(peer); err != nil {
return err
}
+1
View File
@@ -499,6 +499,7 @@ func createPeerManager(
SelfAddress: selfAddr,
MaxConnected: maxConns,
MaxConnectedUpgrade: maxUpgradeConns,
MaxFailedDialAttempts: 1024,
MaxPeers: maxUpgradeConns + 2*maxConns,
MinRetryTime: 250 * time.Millisecond,
MaxRetryTime: 30 * time.Minute,