Skip to content

Commit 0a8e1a7

Browse files
authored
Prune nodes which had at least one attempt, and it was not successfull (#44)
1 parent 43f1ada commit 0a8e1a7

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

dnsseed.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ func creep() {
6161
var knownPeers []*appmessage.NetAddress
6262

6363
if len(ActiveConfig().KnownPeers) != 0 {
64-
6564
for _, p := range strings.Split(ActiveConfig().KnownPeers, ",") {
6665
addressStr := strings.Split(p, ":")
6766
if len(addressStr) != 2 {
@@ -138,8 +137,9 @@ func creep() {
138137
}
139138

140139
func pollPeer(netAdapter *standalone.MinimalNetAdapter, addr *appmessage.NetAddress) error {
141-
peerAddress := net.JoinHostPort(addr.IP.String(), strconv.Itoa(int(addr.Port)))
140+
defer amgr.Attempt(addr.IP)
142141

142+
peerAddress := net.JoinHostPort(addr.IP.String(), strconv.Itoa(int(addr.Port)))
143143
routes, err := netAdapter.Connect(peerAddress)
144144
if err != nil {
145145
return errors.Wrapf(err, "could not connect to %s", peerAddress)
@@ -162,7 +162,6 @@ func pollPeer(netAdapter *standalone.MinimalNetAdapter, addr *appmessage.NetAddr
162162
log.Infof("Peer %s sent %d addresses, %d new",
163163
peerAddress, len(msgAddresses.AddressList), added)
164164

165-
amgr.Attempt(addr.IP)
166165
amgr.Good(addr.IP, nil)
167166

168167
return nil

manager.go

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -240,17 +240,24 @@ func (m *Manager) prunePeers() {
240240
var count int
241241
now := time.Now()
242242
m.mtx.Lock()
243+
244+
lastSeenAbovePruneExpire := func(node *Node) bool {
245+
return now.Sub(node.LastSeen) > pruneExpireTimeout
246+
}
247+
hadAttemptsButNoSuccess := func(node *Node) bool {
248+
return !node.LastAttempt.IsZero() && node.LastSuccess.IsZero()
249+
}
250+
hadSuccessButLongTimeAgo := func(node *Node) bool {
251+
return !node.LastSuccess.IsZero() && now.Sub(node.LastSuccess) > pruneExpireTimeout
252+
}
253+
243254
for k, node := range m.nodes {
244-
if now.Sub(node.LastSeen) > pruneExpireTimeout {
245-
delete(m.nodes, k)
246-
count++
247-
continue
248-
}
249-
if !node.LastSuccess.IsZero() &&
250-
now.Sub(node.LastSuccess) > pruneExpireTimeout {
255+
if lastSeenAbovePruneExpire(node) ||
256+
hadAttemptsButNoSuccess(node) ||
257+
hadSuccessButLongTimeAgo(node) {
258+
251259
delete(m.nodes, k)
252260
count++
253-
continue
254261
}
255262
}
256263
l := len(m.nodes)

0 commit comments

Comments
 (0)