add backoff for disconnect

This commit is contained in:
William Banfield
2022-06-21 19:09:59 -04:00
parent 034a9f8422
commit db320f7282
+11 -3
View File
@@ -569,6 +569,9 @@ func (m *PeerManager) TryDialNext() (NodeAddress, error) {
if m.dialing[peer.ID] || m.isConnected(peer.ID) {
continue
}
if time.Since(peer.LastDisconnected) < m.retryDelay(1, false) {
continue
}
for _, addressInfo := range peer.AddressInfo {
if time.Since(addressInfo.LastDialFailure) < m.retryDelay(addressInfo.DialFailures, peer.Persistent) {
@@ -877,6 +880,10 @@ func (m *PeerManager) Disconnected(peerID types.NodeID) {
m.metrics.PeersConnectedOutgoing.Add(-1)
}
p, _ := m.store.Get(peerID)
p.LastDisconnected = time.Now()
m.store.Set(p)
ready := m.ready[peerID]
delete(m.connected, peerID)
@@ -1447,9 +1454,10 @@ func (s *peerStore) Size() int {
// peerInfo contains peer information stored in a peerStore.
type peerInfo struct {
ID types.NodeID
AddressInfo map[NodeAddress]*peerAddressInfo
LastConnected time.Time
ID types.NodeID
AddressInfo map[NodeAddress]*peerAddressInfo
LastConnected time.Time
LastDisconnected time.Time
// These fields are ephemeral, i.e. not persisted to the database.
Persistent bool