fix(corehttp): adjust peer counting metrics (#8577)
Lucas Molas committed
Dec 2, 2021 at 22:03 UTC
9d197ca732b5b1f80a907d35f36d6d0c0b6828cf
2 files changed
+18
-7
core/corehttp/metrics.go
+11
-2
@@ -160,9 +160,18 @@ func (c IpfsNodeCollector) PeersTotalValues() map[string]float64 {
160
if c.Node.PeerHost == nil {
161
return vals
162
}
163
- for _, conn := range c.Node.PeerHost.Network().Conns() {
163
+ for _, peerID := range c.Node.PeerHost.Network().Peers() {
164
+ // Each peer may have more than one connection (see for an explanation
165
+ // https://github.com/libp2p/go-libp2p-swarm/commit/0538806), so we grab
166
+ // only one, the first (an arbitrary and non-deterministic choice), which
167
+ // according to ConnsToPeer is the oldest connection in the list
168
+ // (https://github.com/libp2p/go-libp2p-swarm/blob/v0.2.6/swarm.go#L362-L364).
169
+ conns := c.Node.PeerHost.Network().ConnsToPeer(peerID)
170
+ if len(conns) == 0 {
171
+ continue
172
+ }
173
tr := ""
165
- for _, proto := range conn.RemoteMultiaddr().Protocols() {
174
+ for _, proto := range conns[0].RemoteMultiaddr().Protocols() {
175
tr = tr + "/" + proto.Name
176
}
177
vals[tr] = vals[tr] + 1
core/corehttp/metrics_test.go
+7
-5
@@ -44,11 +44,13 @@ func TestPeersTotal(t *testing.T) {
44
45
node := &core.IpfsNode{PeerHost: hosts[0]}
46
collector := IpfsNodeCollector{Node: node}
47
- actual := collector.PeersTotalValues()
48
- if len(actual) != 1 {
49
- t.Fatalf("expected 1 peers transport, got %d, transport map %v", len(actual), actual)
47
+ peersTransport := collector.PeersTotalValues()
48
+ if len(peersTransport) > 2 {
49
+ t.Fatalf("expected at most 2 peers transport (tcp and upd/quic), got %d, transport map %v",
50
+ len(peersTransport), peersTransport)
51
}
51
- if actual["/ip4/tcp"] != float64(3) {
52
- t.Fatalf("expected 3 peers, got %f", actual["/ip4/tcp"])
52
+ totalPeers := peersTransport["/ip4/tcp"] + peersTransport["/ip4/udp/quic"]
53
+ if totalPeers != 3 {
54
+ t.Fatalf("expected 3 peers in either tcp or upd/quic transport, got %f", totalPeers)
55
}
56
}