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:
authorJohn Cai <jcai@gitlab.com>2022-06-02 17:49:04 +0300
committerJohn Cai <jcai@gitlab.com>2022-07-13 19:00:04 +0300
commit7ed10ad441251c13a6b1759f7aa50f01d12a08e4 (patch)
treed2934723566a77cd089ea50eac5ee4b4d990c3af
parent0f8ab08a73426a0181c6ab6eb6b8641878a822e6 (diff)
Provide ConcurrencyTracker through service dependencies
Add ConcurrencyTracker as a service dependency and set up the boilerplate code that includes it in the NewServer invocation. A future commit will actually instantiate it in the main goroutine and pass it in.
-rw-r--r--cmd/gitaly-hooks/hooks_test.go2
-rw-r--r--internal/git/localrepo/remote_extra_test.go3
-rw-r--r--internal/git/updateref/update_with_hooks_test.go2
-rw-r--r--internal/gitaly/service/cleanup/testhelper_test.go2
-rw-r--r--internal/gitaly/service/conflicts/testhelper_test.go2
-rw-r--r--internal/gitaly/service/dependencies.go40
-rw-r--r--internal/gitaly/service/hook/server.go21
-rw-r--r--internal/gitaly/service/hook/testhelper_test.go1
-rw-r--r--internal/gitaly/service/objectpool/testhelper_test.go3
-rw-r--r--internal/gitaly/service/operations/branches_test.go2
-rw-r--r--internal/gitaly/service/operations/tags_test.go2
-rw-r--r--internal/gitaly/service/operations/testhelper_test.go2
-rw-r--r--internal/gitaly/service/ref/delete_refs_test.go2
-rw-r--r--internal/gitaly/service/ref/testhelper_test.go2
-rw-r--r--internal/gitaly/service/repository/testhelper_test.go2
-rw-r--r--internal/gitaly/service/setup/register.go1
-rw-r--r--internal/gitaly/service/smarthttp/receive_pack_test.go4
-rw-r--r--internal/gitaly/service/smarthttp/testhelper_test.go2
-rw-r--r--internal/gitaly/service/ssh/testhelper_test.go8
-rw-r--r--internal/gitaly/service/wiki/testhelper_test.go3
-rw-r--r--internal/testhelper/testserver/gitaly.go83
21 files changed, 111 insertions, 78 deletions
diff --git a/cmd/gitaly-hooks/hooks_test.go b/cmd/gitaly-hooks/hooks_test.go
index 9db2ea23f..bf82351ca 100644
--- a/cmd/gitaly-hooks/hooks_test.go
+++ b/cmd/gitaly-hooks/hooks_test.go
@@ -624,7 +624,7 @@ func (svc featureFlagAsserter) PackObjectsHookWithSidechannel(ctx context.Contex
func runHookServiceWithGitlabClient(t *testing.T, cfg config.Cfg, gitlabClient gitlab.Client, serverOpts ...testserver.GitalyServerOpt) {
testserver.RunGitalyServer(t, cfg, nil, func(srv *grpc.Server, deps *service.Dependencies) {
gitalypb.RegisterHookServiceServer(srv, featureFlagAsserter{
- t: t, wrapped: hook.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache()),
+ t: t, wrapped: hook.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache(), deps.GetPackObjectsConcurrencyTracker()),
})
}, append(serverOpts, testserver.WithGitLabClient(gitlabClient))...)
}
diff --git a/internal/git/localrepo/remote_extra_test.go b/internal/git/localrepo/remote_extra_test.go
index 012843230..34f9ea556 100644
--- a/internal/git/localrepo/remote_extra_test.go
+++ b/internal/git/localrepo/remote_extra_test.go
@@ -36,8 +36,7 @@ func TestRepo_FetchInternal(t *testing.T) {
gitalypb.RegisterHookServiceServer(srv, hook.NewServer(
deps.GetHookManager(),
deps.GetGitCmdFactory(),
- deps.GetPackObjectsCache(),
- ))
+ deps.GetPackObjectsCache(), deps.GetPackObjectsConcurrencyTracker()))
gitalypb.RegisterRepositoryServiceServer(srv, repository.NewServer(
deps.GetCfg(),
deps.GetRubyServer(),
diff --git a/internal/git/updateref/update_with_hooks_test.go b/internal/git/updateref/update_with_hooks_test.go
index fa02c5069..f351e6c49 100644
--- a/internal/git/updateref/update_with_hooks_test.go
+++ b/internal/git/updateref/update_with_hooks_test.go
@@ -98,7 +98,7 @@ func TestUpdaterWithHooks_UpdateReference(t *testing.T) {
// We need to set up a separate "real" hook service here, as it will be used in
// git-update-ref(1) spawned by `updateRefWithHooks()`
testserver.RunGitalyServer(t, cfg, nil, func(srv *grpc.Server, deps *service.Dependencies) {
- gitalypb.RegisterHookServiceServer(srv, hookservice.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache()))
+ gitalypb.RegisterHookServiceServer(srv, hookservice.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache(), deps.GetPackObjectsConcurrencyTracker()))
})
user := &gitalypb.User{
diff --git a/internal/gitaly/service/cleanup/testhelper_test.go b/internal/gitaly/service/cleanup/testhelper_test.go
index e869be767..867973e07 100644
--- a/internal/gitaly/service/cleanup/testhelper_test.go
+++ b/internal/gitaly/service/cleanup/testhelper_test.go
@@ -43,7 +43,7 @@ func runCleanupServiceServer(t *testing.T, cfg config.Cfg) string {
deps.GetGitCmdFactory(),
deps.GetCatfileCache(),
))
- gitalypb.RegisterHookServiceServer(srv, hookservice.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache()))
+ gitalypb.RegisterHookServiceServer(srv, hookservice.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache(), deps.GetPackObjectsConcurrencyTracker()))
gitalypb.RegisterRepositoryServiceServer(srv, repository.NewServer(
deps.GetCfg(),
deps.GetRubyServer(),
diff --git a/internal/gitaly/service/conflicts/testhelper_test.go b/internal/gitaly/service/conflicts/testhelper_test.go
index efb45bf0a..49dac5af2 100644
--- a/internal/gitaly/service/conflicts/testhelper_test.go
+++ b/internal/gitaly/service/conflicts/testhelper_test.go
@@ -69,7 +69,7 @@ func runConflictsServer(t testing.TB, cfg config.Cfg, hookManager hook.Manager)
deps.GetGitCmdFactory(),
deps.GetTxManager(),
))
- gitalypb.RegisterHookServiceServer(srv, hookservice.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache()))
+ gitalypb.RegisterHookServiceServer(srv, hookservice.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache(), deps.GetPackObjectsConcurrencyTracker()))
gitalypb.RegisterCommitServiceServer(srv, commit.NewServer(
deps.GetLocator(),
deps.GetGitCmdFactory(),
diff --git a/internal/gitaly/service/dependencies.go b/internal/gitaly/service/dependencies.go
index f0efa6fec..d6c89e6b8 100644
--- a/internal/gitaly/service/dependencies.go
+++ b/internal/gitaly/service/dependencies.go
@@ -22,23 +22,24 @@ import (
// Dependencies assembles set of components required by different kinds of services.
type Dependencies struct {
- Cfg config.Cfg
- RubyServer *rubyserver.Server
- GitalyHookManager gitalyhook.Manager
- TransactionManager transaction.Manager
- StorageLocator storage.Locator
- ClientPool *client.Pool
- GitCmdFactory git.CommandFactory
- Linguist *linguist.Instance
- BackchannelRegistry *backchannel.Registry
- GitlabClient gitlab.Client
- CatfileCache catfile.Cache
- DiskCache cache.Cache
- PackObjectsCache streamcache.Cache
- LimitHandler *limithandler.LimiterMiddleware
- Git2goExecutor *git2go.Executor
- UpdaterWithHooks *updateref.UpdaterWithHooks
- HousekeepingManager housekeeping.Manager
+ Cfg config.Cfg
+ RubyServer *rubyserver.Server
+ GitalyHookManager gitalyhook.Manager
+ TransactionManager transaction.Manager
+ StorageLocator storage.Locator
+ ClientPool *client.Pool
+ GitCmdFactory git.CommandFactory
+ Linguist *linguist.Instance
+ BackchannelRegistry *backchannel.Registry
+ GitlabClient gitlab.Client
+ CatfileCache catfile.Cache
+ DiskCache cache.Cache
+ PackObjectsCache streamcache.Cache
+ PackObjectsConcurrencyTracker *gitalyhook.ConcurrencyTracker
+ LimitHandler *limithandler.LimiterMiddleware
+ Git2goExecutor *git2go.Executor
+ UpdaterWithHooks *updateref.UpdaterWithHooks
+ HousekeepingManager housekeeping.Manager
}
// GetCfg returns service configuration.
@@ -106,6 +107,11 @@ func (dc *Dependencies) GetPackObjectsCache() streamcache.Cache {
return dc.PackObjectsCache
}
+// GetPackObjectsConcurrencyTracker returns the pack-objects cache.
+func (dc *Dependencies) GetPackObjectsConcurrencyTracker() *gitalyhook.ConcurrencyTracker {
+ return dc.PackObjectsConcurrencyTracker
+}
+
// GetLimitHandler returns the RPC limit handler.
func (dc *Dependencies) GetLimitHandler() *limithandler.LimiterMiddleware {
return dc.LimitHandler
diff --git a/internal/gitaly/service/hook/server.go b/internal/gitaly/service/hook/server.go
index 746fe2fc9..c04f82edb 100644
--- a/internal/gitaly/service/hook/server.go
+++ b/internal/gitaly/service/hook/server.go
@@ -9,17 +9,24 @@ import (
type server struct {
gitalypb.UnimplementedHookServiceServer
- manager gitalyhook.Manager
- gitCmdFactory git.CommandFactory
- packObjectsCache streamcache.Cache
+ manager gitalyhook.Manager
+ gitCmdFactory git.CommandFactory
+ packObjectsCache streamcache.Cache
+ concurrencyTracker *gitalyhook.ConcurrencyTracker
}
// NewServer creates a new instance of a gRPC namespace server
-func NewServer(manager gitalyhook.Manager, gitCmdFactory git.CommandFactory, packObjectsCache streamcache.Cache) gitalypb.HookServiceServer {
+func NewServer(
+ manager gitalyhook.Manager,
+ gitCmdFactory git.CommandFactory,
+ packObjectsCache streamcache.Cache,
+ concurrencyTracker *gitalyhook.ConcurrencyTracker,
+) gitalypb.HookServiceServer {
srv := &server{
- manager: manager,
- gitCmdFactory: gitCmdFactory,
- packObjectsCache: packObjectsCache,
+ manager: manager,
+ gitCmdFactory: gitCmdFactory,
+ packObjectsCache: packObjectsCache,
+ concurrencyTracker: concurrencyTracker,
}
return srv
diff --git a/internal/gitaly/service/hook/testhelper_test.go b/internal/gitaly/service/hook/testhelper_test.go
index d01156891..7bd07dfa1 100644
--- a/internal/gitaly/service/hook/testhelper_test.go
+++ b/internal/gitaly/service/hook/testhelper_test.go
@@ -62,6 +62,7 @@ func runHooksServer(t testing.TB, cfg config.Cfg, opts []serverOption, serverOpt
gitalyhook.NewManager(deps.GetCfg(), deps.GetLocator(), deps.GetGitCmdFactory(), deps.GetTxManager(), deps.GetGitlabClient()),
deps.GetGitCmdFactory(),
deps.GetPackObjectsCache(),
+ deps.GetPackObjectsConcurrencyTracker(),
)
for _, opt := range opts {
opt(hookServer.(*server))
diff --git a/internal/gitaly/service/objectpool/testhelper_test.go b/internal/gitaly/service/objectpool/testhelper_test.go
index 82793239d..bb8c17f05 100644
--- a/internal/gitaly/service/objectpool/testhelper_test.go
+++ b/internal/gitaly/service/objectpool/testhelper_test.go
@@ -76,8 +76,7 @@ func runObjectPoolServer(t *testing.T, cfg config.Cfg, locator storage.Locator,
gitalypb.RegisterHookServiceServer(srv, hookservice.NewServer(
deps.GetHookManager(),
deps.GetGitCmdFactory(),
- deps.GetPackObjectsCache(),
- ))
+ deps.GetPackObjectsCache(), deps.GetPackObjectsConcurrencyTracker()))
gitalypb.RegisterRepositoryServiceServer(srv, repository.NewServer(
cfg,
deps.GetRubyServer(),
diff --git a/internal/gitaly/service/operations/branches_test.go b/internal/gitaly/service/operations/branches_test.go
index 6973f389f..35e9e5fd8 100644
--- a/internal/gitaly/service/operations/branches_test.go
+++ b/internal/gitaly/service/operations/branches_test.go
@@ -135,7 +135,7 @@ func TestUserCreateBranch_transactions(t *testing.T) {
deps.GetCatfileCache(),
deps.GetUpdaterWithHooks(),
))
- gitalypb.RegisterHookServiceServer(srv, hook.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache()))
+ gitalypb.RegisterHookServiceServer(srv, hook.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache(), deps.GetPackObjectsConcurrencyTracker()))
// Praefect proxy execution disabled as praefect runs only on the UNIX socket, but
// the test requires a TCP listening address.
}, testserver.WithDisablePraefect())
diff --git a/internal/gitaly/service/operations/tags_test.go b/internal/gitaly/service/operations/tags_test.go
index 897a7b965..37e30c5c8 100644
--- a/internal/gitaly/service/operations/tags_test.go
+++ b/internal/gitaly/service/operations/tags_test.go
@@ -262,7 +262,7 @@ func TestUserCreateTagWithTransaction(t *testing.T) {
deps.GetCatfileCache(),
deps.GetUpdaterWithHooks(),
))
- gitalypb.RegisterHookServiceServer(srv, hook.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache()))
+ gitalypb.RegisterHookServiceServer(srv, hook.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache(), deps.GetPackObjectsConcurrencyTracker()))
})
ctx := testhelper.Context(t)
diff --git a/internal/gitaly/service/operations/testhelper_test.go b/internal/gitaly/service/operations/testhelper_test.go
index 4adb75e5f..1eda70801 100644
--- a/internal/gitaly/service/operations/testhelper_test.go
+++ b/internal/gitaly/service/operations/testhelper_test.go
@@ -102,7 +102,7 @@ func runOperationServiceServer(t testing.TB, cfg config.Cfg, options ...testserv
)
gitalypb.RegisterOperationServiceServer(srv, operationServer)
- gitalypb.RegisterHookServiceServer(srv, hook.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache()))
+ gitalypb.RegisterHookServiceServer(srv, hook.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache(), deps.GetPackObjectsConcurrencyTracker()))
gitalypb.RegisterRepositoryServiceServer(srv, repository.NewServer(
deps.GetCfg(),
nil,
diff --git a/internal/gitaly/service/ref/delete_refs_test.go b/internal/gitaly/service/ref/delete_refs_test.go
index e71e548be..f179298a7 100644
--- a/internal/gitaly/service/ref/delete_refs_test.go
+++ b/internal/gitaly/service/ref/delete_refs_test.go
@@ -106,7 +106,7 @@ func TestDeleteRefs_transaction(t *testing.T) {
deps.GetGit2goExecutor(),
deps.GetHousekeepingManager(),
))
- gitalypb.RegisterHookServiceServer(srv, hookservice.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache()))
+ gitalypb.RegisterHookServiceServer(srv, hookservice.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache(), deps.GetPackObjectsConcurrencyTracker()))
}, testserver.WithTransactionManager(txManager))
cfg.SocketPath = addr
diff --git a/internal/gitaly/service/ref/testhelper_test.go b/internal/gitaly/service/ref/testhelper_test.go
index dc1c6e498..0157c40e9 100644
--- a/internal/gitaly/service/ref/testhelper_test.go
+++ b/internal/gitaly/service/ref/testhelper_test.go
@@ -65,7 +65,7 @@ func runRefServiceServer(t testing.TB, cfg config.Cfg) string {
deps.GetTxManager(),
deps.GetCatfileCache(),
))
- gitalypb.RegisterHookServiceServer(srv, hookservice.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache()))
+ gitalypb.RegisterHookServiceServer(srv, hookservice.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache(), deps.GetPackObjectsConcurrencyTracker()))
gitalypb.RegisterRepositoryServiceServer(srv, repository.NewServer(
deps.GetCfg(),
deps.GetRubyServer(),
diff --git a/internal/gitaly/service/repository/testhelper_test.go b/internal/gitaly/service/repository/testhelper_test.go
index 4e23841c8..2ab8d552a 100644
--- a/internal/gitaly/service/repository/testhelper_test.go
+++ b/internal/gitaly/service/repository/testhelper_test.go
@@ -122,7 +122,7 @@ func runRepositoryService(t testing.TB, cfg config.Cfg, rubySrv *rubyserver.Serv
deps.GetGit2goExecutor(),
deps.GetHousekeepingManager(),
))
- gitalypb.RegisterHookServiceServer(srv, hookservice.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache()))
+ gitalypb.RegisterHookServiceServer(srv, hookservice.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache(), deps.GetPackObjectsConcurrencyTracker()))
gitalypb.RegisterRemoteServiceServer(srv, remote.NewServer(
deps.GetLocator(),
deps.GetGitCmdFactory(),
diff --git a/internal/gitaly/service/setup/register.go b/internal/gitaly/service/setup/register.go
index 1f4c570d0..a3ddffb02 100644
--- a/internal/gitaly/service/setup/register.go
+++ b/internal/gitaly/service/setup/register.go
@@ -144,6 +144,7 @@ func RegisterAll(srv *grpc.Server, deps *service.Dependencies) {
deps.GetHookManager(),
deps.GetGitCmdFactory(),
deps.GetPackObjectsCache(),
+ deps.GetPackObjectsConcurrencyTracker(),
))
gitalypb.RegisterInternalGitalyServer(srv, internalgitaly.NewServer(deps.GetCfg().Storages))
diff --git a/internal/gitaly/service/smarthttp/receive_pack_test.go b/internal/gitaly/service/smarthttp/receive_pack_test.go
index 981e658e5..cbbcd6d9c 100644
--- a/internal/gitaly/service/smarthttp/receive_pack_test.go
+++ b/internal/gitaly/service/smarthttp/receive_pack_test.go
@@ -705,7 +705,7 @@ func TestPostReceivePack_referenceTransactionHook(t *testing.T) {
deps.GetTxManager(),
deps.GetDiskCache(),
))
- gitalypb.RegisterHookServiceServer(srv, hook.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache()))
+ gitalypb.RegisterHookServiceServer(srv, hook.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache(), deps.GetPackObjectsConcurrencyTracker()))
}, testserver.WithDisablePraefect())
ctx, err := txinfo.InjectTransaction(ctx, 1234, "primary", true)
@@ -801,7 +801,7 @@ func TestPostReceivePack_notAllowed(t *testing.T) {
deps.GetTxManager(),
deps.GetDiskCache(),
))
- gitalypb.RegisterHookServiceServer(srv, hook.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache()))
+ gitalypb.RegisterHookServiceServer(srv, hook.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache(), deps.GetPackObjectsConcurrencyTracker()))
}, testserver.WithDisablePraefect(), testserver.WithHookManager(hookManager))
ctx, err := txinfo.InjectTransaction(testhelper.Context(t), 1234, "primary", true)
diff --git a/internal/gitaly/service/smarthttp/testhelper_test.go b/internal/gitaly/service/smarthttp/testhelper_test.go
index 9e69d15f7..19312bd98 100644
--- a/internal/gitaly/service/smarthttp/testhelper_test.go
+++ b/internal/gitaly/service/smarthttp/testhelper_test.go
@@ -47,7 +47,7 @@ func startSmartHTTPServerWithOptions(t *testing.T, cfg config.Cfg, opts []Server
deps.GetGit2goExecutor(),
deps.GetHousekeepingManager(),
))
- gitalypb.RegisterHookServiceServer(srv, hookservice.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache()))
+ gitalypb.RegisterHookServiceServer(srv, hookservice.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache(), deps.GetPackObjectsConcurrencyTracker()))
}, serverOpts...)
}
diff --git a/internal/gitaly/service/ssh/testhelper_test.go b/internal/gitaly/service/ssh/testhelper_test.go
index 1ad2ab99a..2361af04a 100644
--- a/internal/gitaly/service/ssh/testhelper_test.go
+++ b/internal/gitaly/service/ssh/testhelper_test.go
@@ -29,7 +29,13 @@ func runSSHServerWithOptions(t *testing.T, cfg config.Cfg, opts []ServerOpt, ser
deps.GetGitCmdFactory(),
deps.GetTxManager(),
opts...))
- gitalypb.RegisterHookServiceServer(srv, hookservice.NewServer(deps.GetHookManager(), deps.GetGitCmdFactory(), deps.GetPackObjectsCache()))
+ gitalypb.RegisterHookServiceServer(srv,
+ hookservice.NewServer(
+ deps.GetHookManager(),
+ deps.GetGitCmdFactory(),
+ deps.GetPackObjectsCache(),
+ deps.GetPackObjectsConcurrencyTracker(),
+ ))
gitalypb.RegisterRepositoryServiceServer(srv, repository.NewServer(
cfg,
deps.GetRubyServer(),
diff --git a/internal/gitaly/service/wiki/testhelper_test.go b/internal/gitaly/service/wiki/testhelper_test.go
index 5402870c9..db4207ffd 100644
--- a/internal/gitaly/service/wiki/testhelper_test.go
+++ b/internal/gitaly/service/wiki/testhelper_test.go
@@ -76,8 +76,7 @@ func setupWikiService(t testing.TB, cfg config.Cfg, rubySrv *rubyserver.Server)
gitalypb.RegisterHookServiceServer(srv, hook.NewServer(
deps.GetHookManager(),
deps.GetGitCmdFactory(),
- deps.GetPackObjectsCache(),
- ))
+ deps.GetPackObjectsCache(), deps.GetPackObjectsConcurrencyTracker()))
gitalypb.RegisterWikiServiceServer(srv, NewServer(deps.GetRubyServer(), deps.GetLocator()))
gitalypb.RegisterRepositoryServiceServer(srv, repository.NewServer(
cfg,
diff --git a/internal/testhelper/testserver/gitaly.go b/internal/testhelper/testserver/gitaly.go
index 0313ba34c..9c10f506c 100644
--- a/internal/testhelper/testserver/gitaly.go
+++ b/internal/testhelper/testserver/gitaly.go
@@ -226,23 +226,24 @@ func registerHealthServerIfNotRegistered(srv *grpc.Server) {
}
type gitalyServerDeps struct {
- disablePraefect bool
- logger *logrus.Logger
- conns *client.Pool
- locator storage.Locator
- txMgr transaction.Manager
- hookMgr hook.Manager
- gitlabClient gitlab.Client
- gitCmdFactory git.CommandFactory
- linguist *linguist.Instance
- backchannelReg *backchannel.Registry
- catfileCache catfile.Cache
- diskCache cache.Cache
- packObjectsCache streamcache.Cache
- limitHandler *limithandler.LimiterMiddleware
- git2goExecutor *git2go.Executor
- updaterWithHooks *updateref.UpdaterWithHooks
- housekeepingManager housekeeping.Manager
+ disablePraefect bool
+ logger *logrus.Logger
+ conns *client.Pool
+ locator storage.Locator
+ txMgr transaction.Manager
+ hookMgr hook.Manager
+ gitlabClient gitlab.Client
+ gitCmdFactory git.CommandFactory
+ linguist *linguist.Instance
+ backchannelReg *backchannel.Registry
+ catfileCache catfile.Cache
+ diskCache cache.Cache
+ packObjectsCache streamcache.Cache
+ packObjectsConcurrencyTracker *hook.ConcurrencyTracker
+ limitHandler *limithandler.LimiterMiddleware
+ git2goExecutor *git2go.Executor
+ updaterWithHooks *updateref.UpdaterWithHooks
+ housekeepingManager housekeeping.Manager
}
func (gsd *gitalyServerDeps) createDependencies(t testing.TB, cfg config.Cfg, rubyServer *rubyserver.Server) *service.Dependencies {
@@ -301,6 +302,10 @@ func (gsd *gitalyServerDeps) createDependencies(t testing.TB, cfg config.Cfg, ru
t.Cleanup(gsd.packObjectsCache.Stop)
}
+ if gsd.packObjectsConcurrencyTracker == nil {
+ gsd.packObjectsConcurrencyTracker = hook.NewConcurrencyTracker()
+ }
+
if gsd.limitHandler == nil {
gsd.limitHandler = limithandler.New(cfg, limithandler.LimitConcurrencyByRepo, limithandler.WithConcurrencyLimiters)
}
@@ -318,23 +323,24 @@ func (gsd *gitalyServerDeps) createDependencies(t testing.TB, cfg config.Cfg, ru
}
return &service.Dependencies{
- Cfg: cfg,
- RubyServer: rubyServer,
- ClientPool: gsd.conns,
- StorageLocator: gsd.locator,
- TransactionManager: gsd.txMgr,
- GitalyHookManager: gsd.hookMgr,
- GitCmdFactory: gsd.gitCmdFactory,
- Linguist: gsd.linguist,
- BackchannelRegistry: gsd.backchannelReg,
- GitlabClient: gsd.gitlabClient,
- CatfileCache: gsd.catfileCache,
- DiskCache: gsd.diskCache,
- PackObjectsCache: gsd.packObjectsCache,
- LimitHandler: gsd.limitHandler,
- Git2goExecutor: gsd.git2goExecutor,
- UpdaterWithHooks: gsd.updaterWithHooks,
- HousekeepingManager: gsd.housekeepingManager,
+ Cfg: cfg,
+ RubyServer: rubyServer,
+ ClientPool: gsd.conns,
+ StorageLocator: gsd.locator,
+ TransactionManager: gsd.txMgr,
+ GitalyHookManager: gsd.hookMgr,
+ GitCmdFactory: gsd.gitCmdFactory,
+ Linguist: gsd.linguist,
+ BackchannelRegistry: gsd.backchannelReg,
+ GitlabClient: gsd.gitlabClient,
+ CatfileCache: gsd.catfileCache,
+ DiskCache: gsd.diskCache,
+ PackObjectsCache: gsd.packObjectsCache,
+ PackObjectsConcurrencyTracker: gsd.packObjectsConcurrencyTracker,
+ LimitHandler: gsd.limitHandler,
+ Git2goExecutor: gsd.git2goExecutor,
+ UpdaterWithHooks: gsd.updaterWithHooks,
+ HousekeepingManager: gsd.housekeepingManager,
}
}
@@ -413,3 +419,12 @@ func WithDiskCache(diskCache cache.Cache) GitalyServerOpt {
return deps
}
}
+
+// WithConcurrencyTracker sets the PackObjectsConcurrencyTracker that will be
+// used for gitaly services initialization.
+func WithConcurrencyTracker(tracker *hook.ConcurrencyTracker) GitalyServerOpt {
+ return func(deps gitalyServerDeps) gitalyServerDeps {
+ deps.packObjectsConcurrencyTracker = tracker
+ return deps
+ }
+}