From c844bccc1dc3988c8df3e3a04d20a14e2533bcf2 Mon Sep 17 00:00:00 2001 From: Alexey Palazhchenko Date: Tue, 19 Sep 2023 13:34:42 +0400 Subject: [PATCH] Remove the need to close `conninfo` (#3376) --- internal/clientconn/conn.go | 6 ++--- internal/clientconn/conninfo/conn_info.go | 24 ++++--------------- .../clientconn/conninfo/conn_info_test.go | 2 +- 3 files changed, 8 insertions(+), 24 deletions(-) diff --git a/internal/clientconn/conn.go b/internal/clientconn/conn.go index c4e3f98f765..365cc798e70 100644 --- a/internal/clientconn/conn.go +++ b/internal/clientconn/conn.go @@ -134,14 +134,12 @@ func (c *conn) run(ctx context.Context) (err error) { cancel(lazyerrors.Errorf("run exits: %w", err)) }() - connInfo := conninfo.NewConnInfo() - defer connInfo.Close() - + connInfo := conninfo.New() if c.netConn.RemoteAddr().Network() != "unix" { connInfo.PeerAddr = c.netConn.RemoteAddr().String() } - ctx = conninfo.WithConnInfo(ctx, connInfo) + ctx = conninfo.Ctx(ctx, connInfo) done := make(chan struct{}) diff --git a/internal/clientconn/conninfo/conn_info.go b/internal/clientconn/conninfo/conn_info.go index 33ff235b5b1..a32de7636aa 100644 --- a/internal/clientconn/conninfo/conn_info.go +++ b/internal/clientconn/conninfo/conn_info.go @@ -18,8 +18,6 @@ package conninfo import ( "context" "sync" - - "github.com/FerretDB/FerretDB/internal/util/resource" ) // contextKey is a named unexported type for the safe use of context.WithValue. @@ -32,26 +30,14 @@ var connInfoKey = contextKey{} type ConnInfo struct { PeerAddr string - token *resource.Token - rw sync.RWMutex username string password string } -// NewConnInfo return a new ConnInfo. -func NewConnInfo() *ConnInfo { - connInfo := &ConnInfo{ - token: resource.NewToken(), - } - resource.Track(connInfo, connInfo.token) - - return connInfo -} - -// Close frees resources. -func (connInfo *ConnInfo) Close() { - resource.Untrack(connInfo, connInfo.token) +// New returns a new ConnInfo. +func New() *ConnInfo { + return new(ConnInfo) } // Auth returns stored username and password. @@ -71,8 +57,8 @@ func (connInfo *ConnInfo) SetAuth(username, password string) { connInfo.password = password } -// WithConnInfo returns a new context with the given ConnInfo. -func WithConnInfo(ctx context.Context, connInfo *ConnInfo) context.Context { +// Ctx returns a derived context with the given ConnInfo. +func Ctx(ctx context.Context, connInfo *ConnInfo) context.Context { return context.WithValue(ctx, connInfoKey, connInfo) } diff --git a/internal/clientconn/conninfo/conn_info_test.go b/internal/clientconn/conninfo/conn_info_test.go index 3644befc5b2..fdb24436ab8 100644 --- a/internal/clientconn/conninfo/conn_info_test.go +++ b/internal/clientconn/conninfo/conn_info_test.go @@ -42,7 +42,7 @@ func TestGet(t *testing.T) { connInfo := &ConnInfo{ PeerAddr: tc.peerAddr, } - ctx = WithConnInfo(ctx, connInfo) + ctx = Ctx(ctx, connInfo) actual := Get(ctx) assert.Equal(t, connInfo, actual) })