Skip to content

Commit 33cf14b

Browse files
committed
cmd/devp2p: less output in node crawler
1 parent 7d29fff commit 33cf14b

File tree

1 file changed

+39
-8
lines changed

1 file changed

+39
-8
lines changed

cmd/devp2p/crawl.go

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,13 @@ type crawler struct {
3636
revalidateInterval time.Duration
3737
}
3838

39+
const (
40+
nodeRemoved = iota
41+
nodeIgnoredRecent
42+
nodeSkipped
43+
nodeUpdated
44+
)
45+
3946
type resolver interface {
4047
RequestENR(*enode.Node) (*enode.Node, error)
4148
}
@@ -63,19 +70,36 @@ func (c *crawler) run(timeout time.Duration) nodeSet {
6370
var (
6471
timeoutTimer = time.NewTimer(timeout)
6572
timeoutCh <-chan time.Time
73+
statusTicker = time.NewTicker(time.Second * 8)
6674
doneCh = make(chan enode.Iterator, len(c.iters))
6775
liveIters = len(c.iters)
6876
)
6977
defer timeoutTimer.Stop()
78+
defer statusTicker.Stop()
7079
for _, it := range c.iters {
7180
go c.runIterator(doneCh, it)
7281
}
7382

83+
var (
84+
updates int
85+
ignored int
86+
skips int
87+
removals int
88+
)
7489
loop:
7590
for {
7691
select {
7792
case n := <-c.ch:
78-
c.updateNode(n)
93+
switch c.updateNode(n) {
94+
case nodeIgnoredRecent:
95+
ignored++
96+
case nodeSkipped:
97+
skips++
98+
case nodeRemoved:
99+
removals++
100+
default:
101+
updates++
102+
}
79103
case it := <-doneCh:
80104
if it == c.inputIter {
81105
// Enable timeout when we're done revalidating the input nodes.
@@ -89,6 +113,10 @@ loop:
89113
}
90114
case <-timeoutCh:
91115
break loop
116+
case <-statusTicker.C:
117+
log.Info("Crawling in progress",
118+
"updated", updates, "removals", removals,
119+
"ignored (recently checked)", ignored, "ignored (no EIP-868)", skips)
92120
}
93121
}
94122

@@ -113,12 +141,14 @@ func (c *crawler) runIterator(done chan<- enode.Iterator, it enode.Iterator) {
113141
}
114142
}
115143

116-
func (c *crawler) updateNode(n *enode.Node) {
144+
// updateNode updates the info about the given node, and returns a status
145+
// about what changed
146+
func (c *crawler) updateNode(n *enode.Node) int {
117147
node, ok := c.output[n.ID()]
118148

119149
// Skip validation of recently-seen nodes.
120150
if ok && time.Since(node.LastCheck) < c.revalidateInterval {
121-
return
151+
return nodeIgnoredRecent
122152
}
123153

124154
// Request the node record.
@@ -128,7 +158,7 @@ func (c *crawler) updateNode(n *enode.Node) {
128158
if node.Score == 0 {
129159
// Node doesn't implement EIP-868.
130160
log.Debug("Skipping node", "id", n.ID())
131-
return
161+
return nodeSkipped
132162
}
133163
node.Score /= 2
134164
} else {
@@ -143,12 +173,13 @@ func (c *crawler) updateNode(n *enode.Node) {
143173

144174
// Store/update node in output set.
145175
if node.Score <= 0 {
146-
log.Info("Removing node", "id", n.ID())
176+
log.Debug("Removing node", "id", n.ID())
147177
delete(c.output, n.ID())
148-
} else {
149-
log.Info("Updating node", "id", n.ID(), "seq", n.Seq(), "score", node.Score)
150-
c.output[n.ID()] = node
178+
return nodeRemoved
151179
}
180+
log.Debug("Updating node", "id", n.ID(), "seq", n.Seq(), "score", node.Score)
181+
c.output[n.ID()] = node
182+
return nodeUpdated
152183
}
153184

154185
func truncNow() time.Time {

0 commit comments

Comments
 (0)