Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Steinhardt <psteinhardt@gitlab.com>2022-08-11 14:21:15 +0300
committerPatrick Steinhardt <psteinhardt@gitlab.com>2022-09-23 10:02:55 +0300
commit72b71fc5579eb9930566bcfc2df9f0dbe13e25b6 (patch)
tree7209ca04fc8d9ca619e8bf73bf5bd8e7a6503bcf
parent5a514bc991f1b1c727db0bffa0d7f2308d28566e (diff)
praefect: Fix missing error checks for factory's `Serve()` function
Many of our tests don't properly verify the error returned by the server factory's `Serve()` function. Fix this shortcoming, which surfaces that we mistakenly close some listeners manually that should indeed be closed by gRPC itself. Drop the corresponding linting exception.
-rw-r--r--.golangci.yml3
-rw-r--r--internal/praefect/server_factory_test.go15
2 files changed, 5 insertions, 13 deletions
diff --git a/.golangci.yml b/.golangci.yml
index 70546143e..17cad66ec 100644
--- a/.golangci.yml
+++ b/.golangci.yml
@@ -52,7 +52,6 @@ linters-settings:
# cases to skip the checks, but rather as a list of things we should
# eventually fix.
exclude-functions:
- # Close
- (*database/sql.DB).Close
- (*database/sql.Rows).Close
- (*gitlab.com/gitlab-org/gitaly/v15/client.Pool).Close
@@ -68,8 +67,6 @@ linters-settings:
- (io/fs.File).Close
- (net.Conn).Close
- (net.Listener).Close
- # Serve
- - (*gitlab.com/gitlab-org/gitaly/v15/internal/praefect.ServerFactory).Serve
forbidigo:
forbid:
# Tests and code which use timing-based setups have repeatedly resulted
diff --git a/internal/praefect/server_factory_test.go b/internal/praefect/server_factory_test.go
index 598197311..bd3147d02 100644
--- a/internal/praefect/server_factory_test.go
+++ b/internal/praefect/server_factory_test.go
@@ -184,9 +184,8 @@ func TestServerFactory(t *testing.T) {
listener, err := net.Listen(starter.TCP, "localhost:0")
require.NoError(t, err)
- defer func() { require.NoError(t, listener.Close()) }()
- go praefectServerFactory.Serve(listener, false)
+ go func() { require.NoError(t, praefectServerFactory.Serve(listener, false)) }()
praefectAddr, err := starter.ComposeEndpoint(listener.Addr().Network(), listener.Addr().String())
require.NoError(t, err)
@@ -217,9 +216,8 @@ func TestServerFactory(t *testing.T) {
listener, err := net.Listen(starter.TCP, "localhost:0")
require.NoError(t, err)
- defer func() { require.NoError(t, listener.Close()) }()
- go praefectServerFactory.Serve(listener, true)
+ go func() { require.NoError(t, praefectServerFactory.Serve(listener, true)) }()
ctx := testhelper.Context(t)
certPool, err := x509.SystemCertPool()
@@ -260,9 +258,8 @@ func TestServerFactory(t *testing.T) {
// start with tcp address
tcpListener, err := net.Listen(starter.TCP, "localhost:0")
require.NoError(t, err)
- defer tcpListener.Close()
- go praefectServerFactory.Serve(tcpListener, false)
+ go func() { require.NoError(t, praefectServerFactory.Serve(tcpListener, false)) }()
praefectTCPAddr, err := starter.ComposeEndpoint(tcpListener.Addr().Network(), tcpListener.Addr().String())
require.NoError(t, err)
@@ -276,9 +273,8 @@ func TestServerFactory(t *testing.T) {
// start with tls address
tlsListener, err := net.Listen(starter.TCP, "localhost:0")
require.NoError(t, err)
- defer tlsListener.Close()
- go praefectServerFactory.Serve(tlsListener, true)
+ go func() { require.NoError(t, praefectServerFactory.Serve(tlsListener, true)) }()
praefectTLSAddr, err := starter.ComposeEndpoint(tcpListener.Addr().Network(), tcpListener.Addr().String())
require.NoError(t, err)
@@ -294,9 +290,8 @@ func TestServerFactory(t *testing.T) {
defer func() { require.NoError(t, os.RemoveAll(socketPath)) }()
socketListener, err := net.Listen(starter.Unix, socketPath)
require.NoError(t, err)
- defer socketListener.Close()
- go praefectServerFactory.Serve(socketListener, false)
+ go func() { require.NoError(t, praefectServerFactory.Serve(socketListener, false)) }()
praefectSocketAddr, err := starter.ComposeEndpoint(socketListener.Addr().Network(), socketListener.Addr().String())
require.NoError(t, err)