Skip to content

Commit dcae2f4

Browse files
committed
Fix: Always update libp2p peer metrics
Previously once the `peerTarget` count of peers was reached we didn't update the metrics anymore. This is now fixed and metrics are always updated.
1 parent 6911b90 commit dcae2f4

File tree

3 files changed

+28
-10
lines changed

3 files changed

+28
-10
lines changed

rolling-shutter/go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ require (
88
github.com/AdamSLevy/jsonrpc2/v14 v14.1.0
99
github.com/benbjohnson/clock v1.3.5
1010
github.com/bitwurx/jrpc2 v0.0.0-20220302204700-52c6dbbeb536
11+
github.com/deckarep/golang-set/v2 v2.1.0
1112
github.com/deepmap/oapi-codegen v1.9.1
1213
github.com/ethereum/go-ethereum v1.13.11
1314
github.com/ferranbt/fastssz v0.1.3
@@ -85,7 +86,6 @@ require (
8586
github.com/creachadair/taskgroup v0.3.2 // indirect
8687
github.com/davecgh/go-spew v1.1.1 // indirect
8788
github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect
88-
github.com/deckarep/golang-set/v2 v2.1.0 // indirect
8989
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect
9090
github.com/dgraph-io/badger/v2 v2.2007.4 // indirect
9191
github.com/dgraph-io/ristretto v0.0.3 // indirect

rolling-shutter/p2p/dht.go

+13-9
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"math/rand"
66
"time"
77

8+
mapset "github.com/deckarep/golang-set/v2"
89
dht "github.com/libp2p/go-libp2p-kad-dht"
910
pubsub "github.com/libp2p/go-libp2p-pubsub"
1011
"github.com/libp2p/go-libp2p/core/discovery"
@@ -78,9 +79,15 @@ func findPeers(ctx context.Context, h host.Host, d discovery.Discoverer, ns stri
7879
case <-ctx.Done():
7980
return ctx.Err()
8081
case <-ticker.C:
82+
allPeerIDs := mapset.NewSet[peer.ID]()
83+
for _, peerID := range h.Network().Peers() {
84+
allPeerIDs.Add(peerID)
85+
}
86+
8187
peersBefore := len(h.Network().Peers())
8288
if peersBefore >= peerTarget {
8389
log.Debug().Int("peers-before", peersBefore).Int("peer-target", peerTarget).Msg("have enough peers")
90+
updatePeersMetrics(h, allPeerIDs)
8491
continue
8592
}
8693

@@ -91,22 +98,19 @@ func findPeers(ctx context.Context, h host.Host, d discovery.Discoverer, ns stri
9198

9299
newConnections := 0
93100
failedDials := 0
94-
ourId := h.ID().String()
95101

96-
randomizedPeers := randomizePeers(peers)
102+
for _, p := range peers {
103+
allPeerIDs.Add(p.ID)
104+
}
105+
updatePeersMetrics(h, allPeerIDs)
97106

107+
randomizedPeers := randomizePeers(peers)
98108
for _, p := range randomizedPeers {
99109
collectPeerAddresses(p)
100110
if p.ID == h.ID() {
101111
continue
102112
}
103-
connectedness := h.Network().Connectedness(p.ID)
104-
metricsP2PPeerConnectedness.WithLabelValues(ourId, p.ID.String()).Set(float64(connectedness))
105-
peerPing := h.Peerstore().LatencyEWMA(p.ID)
106-
if peerPing != 0 {
107-
metricsP2PPeerPing.WithLabelValues(ourId, p.ID.String()).Set(peerPing.Seconds())
108-
}
109-
if connectedness != network.Connected {
113+
if h.Network().Connectedness(p.ID) != network.Connected {
110114
_, err = h.Network().DialPeer(ctx, p.ID)
111115
if err != nil {
112116
log.Debug().

rolling-shutter/p2p/metrics.go

+14
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package p2p
22

33
import (
4+
mapset "github.com/deckarep/golang-set/v2"
5+
"github.com/libp2p/go-libp2p/core/host"
46
"github.com/libp2p/go-libp2p/core/peer"
57
"github.com/prometheus/client_golang/prometheus"
68
)
@@ -68,3 +70,15 @@ func init() {
6870
prometheus.MustRegister(metricsP2PPeerConnectedness)
6971
prometheus.MustRegister(metricsP2PPeerPing)
7072
}
73+
74+
func updatePeersMetrics(h host.Host, peerIds mapset.Set[peer.ID]) {
75+
ourID := h.ID().String()
76+
for p := range peerIds.Iterator().C {
77+
connectedness := h.Network().Connectedness(p)
78+
metricsP2PPeerConnectedness.WithLabelValues(ourID, p.String()).Set(float64(connectedness))
79+
peerPing := h.Peerstore().LatencyEWMA(p)
80+
if peerPing != 0 {
81+
metricsP2PPeerPing.WithLabelValues(ourID, p.String()).Set(peerPing.Seconds())
82+
}
83+
}
84+
}

0 commit comments

Comments
 (0)