diff --git a/net/peer/peer.go b/net/peer/peer.go index f5b6acad..a87fa1dc 100644 --- a/net/peer/peer.go +++ b/net/peer/peer.go @@ -334,9 +334,12 @@ func (p *peer) Close() (err error) { func (p *peer) ProvideStat() *Stat { protoVersion, _ := CtxProtoVersion(p.Context()) + p.mu.Lock() + subConnectionsCount := len(p.active) + p.mu.Unlock() return &Stat{ PeerId: p.id, - SubConnections: len(p.subConnRelease), + SubConnections: subConnectionsCount, Created: p.created, Version: protoVersion, } diff --git a/net/pool/pool.go b/net/pool/pool.go index af55ed12..6c3b666d 100644 --- a/net/pool/pool.go +++ b/net/pool/pool.go @@ -142,10 +142,6 @@ func (p *pool) pick(ctx context.Context, source ocache.OCache, id string) (peer. return nil, fmt.Errorf("failed to pick connection with peer: peer not found") } -func (p *pool) AddStatProvider() { - p.statService.AddProvider(p) -} - func (p *pool) ProvideStat() any { peerStats := make([]*peer.Stat, 0) p.outgoing.ForEach(func(v ocache.Object) (isContinue bool) { diff --git a/net/pool/poolservice.go b/net/pool/poolservice.go index b858e295..999a4e9e 100644 --- a/net/pool/poolservice.go +++ b/net/pool/poolservice.go @@ -69,8 +69,8 @@ func (p *poolService) Init(a *app.App) (err error) { if !ok { comp = debugstat.NewNoOp() } - p.pool.statService = comp - p.pool.AddStatProvider() + p.statService = comp + p.statService.AddProvider(p) return nil }