eth: unregister per-peer metrics on peer close

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
This commit is contained in:
Csaba Kiraly 2025-04-25 00:56:12 +02:00
parent b31ad2e7e9
commit 0296361785
No known key found for this signature in database
GPG key ID: 0FE274EE8C95166E
2 changed files with 19 additions and 0 deletions

View file

@ -95,6 +95,7 @@ func NewPeer(version uint, p *p2p.Peer, rw p2p.MsgReadWriter, txpool TxPool) *Pe
// clean it up!
func (p *Peer) Close() {
close(p.term)
p.meters.Close()
}
// ID retrieves the peer's unique identifier.

View file

@ -19,6 +19,9 @@ package eth
import "github.com/ethereum/go-ethereum/metrics"
type peerMeters struct {
base string
reg metrics.Registry
txReceived *metrics.Meter
txSent *metrics.Meter
@ -30,7 +33,13 @@ type peerMeters struct {
// newPeerMeters registers and returns peer-level meters.
func newPeerMeters(base string, r metrics.Registry) *peerMeters {
if r == nil {
r = metrics.DefaultRegistry
}
return &peerMeters{
base: base,
reg: r,
txReceived: metrics.NewRegisteredMeter(base+"/txReceived", r),
txSent: metrics.NewRegisteredMeter(base+"/txSent", r),
@ -40,3 +49,12 @@ func newPeerMeters(base string, r metrics.Registry) *peerMeters {
txReplyOtherRejectMeter: metrics.NewRegisteredMeter(base+"/eth/fetcher/transaction/replies/otherreject", r),
}
}
func (m *peerMeters) Close() {
m.reg.Unregister(m.base + "/txReceived")
m.reg.Unregister(m.base + "/txSent")
m.reg.Unregister(m.base + "/eth/fetcher/transaction/replies/in")
m.reg.Unregister(m.base + "/eth/fetcher/transaction/replies/known")
m.reg.Unregister(m.base + "/eth/fetcher/transaction/replies/underpriced")
m.reg.Unregister(m.base + "/eth/fetcher/transaction/replies/otherreject")
}