p2p/discover: reduce findnode failure counter on success

This commit is contained in:
Felix Lange 2018-06-29 00:10:00 +02:00
parent 9fd429fa3f
commit ccb1e57ede

View file

@ -316,17 +316,20 @@ func (tab *Table) lookup(targetID NodeID, refreshIfEmpty bool) []*Node {
} }
func (tab *Table) findnode(n *Node, targetID NodeID, reply chan<- []*Node) { func (tab *Table) findnode(n *Node, targetID NodeID, reply chan<- []*Node) {
fails := tab.db.findFails(n.ID)
r, err := tab.net.findnode(n.ID, n.addr(), targetID) r, err := tab.net.findnode(n.ID, n.addr(), targetID)
if err != nil { if err != nil || len(r) == 0 {
// Bump the failure counter to detect and evacuate non-bonded entries fails++
fails := tab.db.findFails(n.ID) + 1
tab.db.updateFindFails(n.ID, fails) tab.db.updateFindFails(n.ID, fails)
log.Trace("Bumping findnode failure counter", "id", n.ID, "failcount", fails) log.Trace("Findnode failed", "id", n.ID, "failcount", fails, "err", err)
if fails >= maxFindnodeFailures { if fails >= maxFindnodeFailures {
log.Trace("Too many findnode failures, dropping", "id", n.ID, "failcount", fails) log.Trace("Too many findnode failures, dropping", "id", n.ID, "failcount", fails)
tab.delete(n) tab.delete(n)
} }
} else if fails > 0 {
tab.db.updateFindFails(n.ID, fails-1)
} }
// Grab as many nodes as possible if we're in the init phase. // Grab as many nodes as possible if we're in the init phase.
if !tab.isInitDone() { if !tab.isInitDone() {
for _, n := range r { for _, n := range r {