fix(inputs.socket_listener): Fix tracking of unix sockets (#13059)
This commit is contained in:
parent
797824d5fc
commit
7b31606cf0
|
|
@ -5,6 +5,7 @@ import (
|
|||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"net"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
|
@ -15,6 +16,7 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/influxdata/telegraf"
|
||||
|
|
@ -181,6 +183,16 @@ func TestSocketListener(t *testing.T) {
|
|||
}, time.Second, 100*time.Millisecond, "did not receive metrics (%d)", acc.NMetrics())
|
||||
actual := acc.GetTelegrafMetrics()
|
||||
testutil.RequireMetricsEqual(t, expected, actual, testutil.SortMetrics())
|
||||
|
||||
plugin.Stop()
|
||||
|
||||
if _, ok := plugin.listener.(*streamListener); ok {
|
||||
// Verify that plugin.Stop() closed the client's connection
|
||||
_ = client.SetReadDeadline(time.Now().Add(time.Second))
|
||||
buf := []byte{1}
|
||||
_, err = client.Read(buf)
|
||||
assert.Equal(t, err, io.EOF)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ type streamListener struct {
|
|||
Log telegraf.Logger
|
||||
|
||||
listener net.Listener
|
||||
connections map[string]net.Conn
|
||||
connections map[net.Conn]struct{}
|
||||
path string
|
||||
|
||||
wg sync.WaitGroup
|
||||
|
|
@ -123,7 +123,7 @@ func (l *streamListener) setupConnection(conn net.Conn) error {
|
|||
|
||||
// Store the connection mapped to its address
|
||||
l.Lock()
|
||||
l.connections[addr] = conn
|
||||
l.connections[conn] = struct{}{}
|
||||
l.Unlock()
|
||||
|
||||
return nil
|
||||
|
|
@ -134,7 +134,7 @@ func (l *streamListener) closeConnection(conn net.Conn) {
|
|||
if err := conn.Close(); err != nil {
|
||||
l.Log.Errorf("Cannot close connection to %q: %v", addr, err)
|
||||
}
|
||||
delete(l.connections, addr)
|
||||
delete(l.connections, conn)
|
||||
}
|
||||
|
||||
func (l *streamListener) addr() net.Addr {
|
||||
|
|
@ -147,7 +147,7 @@ func (l *streamListener) close() error {
|
|||
}
|
||||
|
||||
l.Lock()
|
||||
for _, conn := range l.connections {
|
||||
for conn := range l.connections {
|
||||
l.closeConnection(conn)
|
||||
}
|
||||
l.Unlock()
|
||||
|
|
@ -164,7 +164,7 @@ func (l *streamListener) close() error {
|
|||
}
|
||||
|
||||
func (l *streamListener) listen(acc telegraf.Accumulator) {
|
||||
l.connections = make(map[string]net.Conn)
|
||||
l.connections = make(map[net.Conn]struct{})
|
||||
|
||||
l.wg.Add(1)
|
||||
defer l.wg.Done()
|
||||
|
|
|
|||
Loading…
Reference in New Issue