Browse Source

use conn.Close() to remove closed connections from tracer

pull/1418/head
Marten Seemann 3 years ago
parent
commit
40bda4a141
  1. 11
      p2p/transport/tcp/metrics.go

11
p2p/transport/tcp/metrics.go

@ -123,7 +123,6 @@ func (c *aggregatingCollector) cron() {
info, err := conn.getTCPInfo()
if err != nil {
if strings.Contains(err.Error(), "use of closed network connection") {
c.closedConn(conn)
continue
}
log.Errorf("Failed to get TCP info: %s", err)
@ -139,9 +138,6 @@ func (c *aggregatingCollector) cron() {
}
c.rtts.Observe(info.RTT.Seconds())
c.connDurations.Observe(now.Sub(conn.startTime).Seconds())
if info.State == tcpinfo.Closed {
c.closedConn(conn)
}
}
c.mutex.Unlock()
}
@ -183,9 +179,11 @@ func (c *aggregatingCollector) Collect(metrics chan<- prometheus.Metric) {
}
}
func (c *aggregatingCollector) closedConn(conn *tracingConn) {
func (c *aggregatingCollector) ClosedConn(conn *tracingConn, direction string) {
c.mutex.Lock()
collector.removeConn(conn.id)
closedConns.WithLabelValues(conn.getDirection()).Inc()
c.mutex.Unlock()
closedConns.WithLabelValues(direction).Inc()
}
type tracingConn struct {
@ -222,6 +220,7 @@ func (c *tracingConn) getDirection() string {
}
func (c *tracingConn) Close() error {
collector.ClosedConn(c, c.getDirection())
return c.Conn.Close()
}

Loading…
Cancel
Save