@cryptotaxi247 / kubo / commits / 042efd398

fix(corehttp): adjust peer counting metrics (#8577)

(cherry picked from commit 9d197ca732b5b1f80a907d35f36d6d0c0b6828cf)

Lucas Molas committed Dec 2, 2021 at 22:03 UTC 042efd3982da2ae703cdd0a6953dc500fc636537
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 }