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>2021-09-23 12:40:08 +0300
committerPatrick Steinhardt <psteinhardt@gitlab.com>2021-10-07 10:17:47 +0300
commit5981dc5272068e19cf88cfae8eef5211ec79b99e (patch)
tree6828ca78080e90385be41682c6fefec37676f9f0
parent401a62b5e69d8ce10993c54cd705df287b42b5c6 (diff)
global: Close gRPC connections
When creating gRPC connections, then we spawn a set of Goroutines which listen on these connections. As a result, if they are never closed, those Goroutines are leaked. Fix this by closing connections.
-rw-r--r--internal/gitaly/server/auth_test.go1
-rw-r--r--internal/gitaly/server/server_factory_test.go4
-rw-r--r--internal/gitaly/service/repository/clone_from_pool_test.go3
-rw-r--r--internal/gitaly/service/smarthttp/inforefs_test.go3
-rw-r--r--internal/praefect/middleware/errorhandler_test.go2
-rw-r--r--internal/praefect/nodes/local_elector_test.go1
-rw-r--r--internal/praefect/nodes/manager_test.go1
-rw-r--r--internal/praefect/nodes/sql_elector_test.go4
-rw-r--r--internal/praefect/replicator_pg_test.go1
-rw-r--r--internal/praefect/repository_exists_test.go1
-rw-r--r--internal/praefect/server_test.go2
11 files changed, 20 insertions, 3 deletions
diff --git a/internal/gitaly/server/auth_test.go b/internal/gitaly/server/auth_test.go
index 803c2680d..adf2d6300 100644
--- a/internal/gitaly/server/auth_test.go
+++ b/internal/gitaly/server/auth_test.go
@@ -248,6 +248,7 @@ func TestUnaryNoAuth(t *testing.T) {
path := runServer(t, cfg)
conn, err := grpc.Dial(path, grpc.WithInsecure())
require.NoError(t, err)
+ defer testhelper.MustClose(t, conn)
ctx, cancel := testhelper.Context()
defer cancel()
diff --git a/internal/gitaly/server/server_factory_test.go b/internal/gitaly/server/server_factory_test.go
index c851c32d7..369cf3775 100644
--- a/internal/gitaly/server/server_factory_test.go
+++ b/internal/gitaly/server/server_factory_test.go
@@ -239,8 +239,10 @@ func TestGitalyServerFactory_closeOrder(t *testing.T) {
go server.Serve(ln)
- *builder.conn, err = grpc.DialContext(ctx, ln.Addr().String(), grpc.WithInsecure())
+ conn, err := grpc.DialContext(ctx, ln.Addr().String(), grpc.WithInsecure())
require.NoError(t, err)
+ t.Cleanup(func() { testhelper.MustClose(t, conn) })
+ *builder.conn = conn
}
// both servers should be up and accepting RPCs
diff --git a/internal/gitaly/service/repository/clone_from_pool_test.go b/internal/gitaly/service/repository/clone_from_pool_test.go
index 7a6623554..41de34186 100644
--- a/internal/gitaly/service/repository/clone_from_pool_test.go
+++ b/internal/gitaly/service/repository/clone_from_pool_test.go
@@ -37,7 +37,8 @@ func TestCloneFromPoolHTTP(t *testing.T) {
defer forkRepoCleanup()
authorizationHeader := "ABCefg0999182"
- _, remoteURL := gittest.RemoteUploadPackServer(ctx, t, cfg.Git.BinPath, "my-repo", authorizationHeader, repoPath)
+ server, remoteURL := gittest.RemoteUploadPackServer(ctx, t, cfg.Git.BinPath, "my-repo", authorizationHeader, repoPath)
+ defer server.Close()
req := &gitalypb.CloneFromPoolRequest{
Repository: forkedRepo,
diff --git a/internal/gitaly/service/smarthttp/inforefs_test.go b/internal/gitaly/service/smarthttp/inforefs_test.go
index 1746aca5d..d2ccaeb37 100644
--- a/internal/gitaly/service/smarthttp/inforefs_test.go
+++ b/internal/gitaly/service/smarthttp/inforefs_test.go
@@ -121,7 +121,8 @@ func TestSuccessfulInfoRefsUploadPackWithGitProtocol(t *testing.T) {
GitProtocol: git.ProtocolV2,
}
- client, _ := newSmartHTTPClient(t, serverSocketPath, cfg.Auth.Token)
+ client, conn := newSmartHTTPClient(t, serverSocketPath, cfg.Auth.Token)
+ defer testhelper.MustClose(t, conn)
ctx, cancel := testhelper.Context()
defer cancel()
diff --git a/internal/praefect/middleware/errorhandler_test.go b/internal/praefect/middleware/errorhandler_test.go
index fada40963..f85deea77 100644
--- a/internal/praefect/middleware/errorhandler_test.go
+++ b/internal/praefect/middleware/errorhandler_test.go
@@ -75,6 +75,7 @@ func TestStreamInterceptor(t *testing.T) {
grpc.WithStreamInterceptor(StreamErrorHandler(registry, errTracker, nodeName)),
)
require.NoError(t, err)
+ t.Cleanup(func() { testhelper.MustClose(t, cc) })
f, err := peeker.Peek()
require.NoError(t, err)
return proxy.NewStreamParameters(proxy.Destination{Conn: cc, Ctx: ctx, Msg: f}, nil, func() error { return nil }, nil), nil
@@ -90,6 +91,7 @@ func TestStreamInterceptor(t *testing.T) {
go praefectSrv.Serve(praefectLis)
praefectCC, err := grpc.Dial("unix://"+praefectSocket, grpc.WithInsecure())
+ defer testhelper.MustClose(t, praefectCC)
require.NoError(t, err)
simpleClient := mock.NewSimpleServiceClient(praefectCC)
diff --git a/internal/praefect/nodes/local_elector_test.go b/internal/praefect/nodes/local_elector_test.go
index 778e85613..2976c32ee 100644
--- a/internal/praefect/nodes/local_elector_test.go
+++ b/internal/praefect/nodes/local_elector_test.go
@@ -20,6 +20,7 @@ func setupElector(t *testing.T) (*localElector, []*nodeStatus, *grpc.ClientConn)
"unix://"+socket,
grpc.WithInsecure(),
)
+ t.Cleanup(func() { testhelper.MustClose(t, cc) })
require.NoError(t, err)
diff --git a/internal/praefect/nodes/manager_test.go b/internal/praefect/nodes/manager_test.go
index 1c0416389..2060c7fcc 100644
--- a/internal/praefect/nodes/manager_test.go
+++ b/internal/praefect/nodes/manager_test.go
@@ -63,6 +63,7 @@ func TestNodeStatus(t *testing.T) {
"unix://"+socket,
grpc.WithInsecure(),
)
+ defer testhelper.MustClose(t, cc)
require.NoError(t, err)
diff --git a/internal/praefect/nodes/sql_elector_test.go b/internal/praefect/nodes/sql_elector_test.go
index 84bbd0bcd..b86651e5b 100644
--- a/internal/praefect/nodes/sql_elector_test.go
+++ b/internal/praefect/nodes/sql_elector_test.go
@@ -47,6 +47,7 @@ func TestGetPrimaryAndSecondaries(t *testing.T) {
"unix://"+internalSocket0,
grpc.WithInsecure(),
)
+ defer testhelper.MustClose(t, cc0)
require.NoError(t, err)
storageName := "default"
@@ -85,6 +86,7 @@ func TestSqlElector_slow_execution(t *testing.T) {
"unix://"+gitalySocket,
grpc.WithInsecure(),
)
+ defer testhelper.MustClose(t, gitalyConn)
require.NoError(t, err)
gitalyNodeStatus := newConnectionStatus(config.Node{Storage: "gitaly", Address: "gitaly-address"}, gitalyConn, logger, promtest.NewMockHistogramVec(), nil)
@@ -128,6 +130,7 @@ func TestBasicFailover(t *testing.T) {
addr0,
grpc.WithInsecure(),
)
+ defer testhelper.MustClose(t, cc0)
require.NoError(t, err)
addr1 := "unix://" + internalSocket1
@@ -135,6 +138,7 @@ func TestBasicFailover(t *testing.T) {
addr1,
grpc.WithInsecure(),
)
+ defer testhelper.MustClose(t, cc1)
require.NoError(t, err)
diff --git a/internal/praefect/replicator_pg_test.go b/internal/praefect/replicator_pg_test.go
index d790a88c3..a1eccbed3 100644
--- a/internal/praefect/replicator_pg_test.go
+++ b/internal/praefect/replicator_pg_test.go
@@ -48,6 +48,7 @@ func TestReplicatorInvalidSourceRepository(t *testing.T) {
targetCC, err := client.Dial(ln.Addr().Network()+":"+ln.Addr().String(), nil)
require.NoError(t, err)
+ defer testhelper.MustClose(t, targetCC)
rs := datastore.NewPostgresRepositoryStore(glsql.NewDB(t), nil)
require.NoError(t, rs.SetGeneration(ctx, "virtual-storage-1", "relative-path-1", "gitaly-1", 0))
diff --git a/internal/praefect/repository_exists_test.go b/internal/praefect/repository_exists_test.go
index cf66210f2..39a25a71d 100644
--- a/internal/praefect/repository_exists_test.go
+++ b/internal/praefect/repository_exists_test.go
@@ -108,6 +108,7 @@ func TestRepositoryExistsHandler(t *testing.T) {
clientConn, err := grpc.DialContext(ctx, "unix://"+ln.Addr().String(), grpc.WithInsecure())
require.NoError(t, err)
+ defer testhelper.MustClose(t, clientConn)
client := gitalypb.NewRepositoryServiceClient(clientConn)
_, err = client.RepositorySize(ctx, &gitalypb.RepositorySizeRequest{Repository: tc.repository})
diff --git a/internal/praefect/server_test.go b/internal/praefect/server_test.go
index ec1b21715..20933e5fe 100644
--- a/internal/praefect/server_test.go
+++ b/internal/praefect/server_test.go
@@ -1005,6 +1005,7 @@ func TestErrorThreshold(t *testing.T) {
conn, err := dial("unix://"+socket, []grpc.DialOption{grpc.WithInsecure()})
require.NoError(t, err)
+ defer testhelper.MustClose(t, conn)
cli := mock.NewSimpleServiceClient(conn)
_, repo, _ := testcfg.BuildWithRepo(t)
@@ -1048,6 +1049,7 @@ func newSmartHTTPClient(t *testing.T, serverSocketPath string) (gitalypb.SmartHT
conn, err := grpc.Dial(serverSocketPath, grpc.WithInsecure())
require.NoError(t, err)
+ t.Cleanup(func() { testhelper.MustClose(t, conn) })
return gitalypb.NewSmartHTTPServiceClient(conn), conn
}