package dbx import ( "time" "github.com/jackc/pgx/v5/pgxpool" ) // PoolStats is an aggregate of pool statistics across all nodes. type PoolStats struct { AcquireCount int64 AcquireDuration time.Duration AcquiredConns int32 CanceledAcquireCount int64 ConstructingConns int32 EmptyAcquireCount int64 IdleConns int32 MaxConns int32 TotalConns int32 Nodes map[string]*pgxpool.Stat } // Stats returns aggregate pool statistics for all nodes in the cluster. func (c *Cluster) Stats() PoolStats { ps := PoolStats{ Nodes: make(map[string]*pgxpool.Stat, len(c.all)), } for _, n := range c.all { s := n.pool.Stat() ps.Nodes[n.name] = s ps.AcquireCount += s.AcquireCount() ps.AcquireDuration += s.AcquireDuration() ps.AcquiredConns += s.AcquiredConns() ps.CanceledAcquireCount += s.CanceledAcquireCount() ps.ConstructingConns += s.ConstructingConns() ps.EmptyAcquireCount += s.EmptyAcquireCount() ps.IdleConns += s.IdleConns() ps.MaxConns += s.MaxConns() ps.TotalConns += s.TotalConns() } return ps }