diff options
Diffstat (limited to 'internal')
-rw-r--r-- | internal/gitaly/service/internalgitaly/server.go | 22 | ||||
-rw-r--r-- | internal/gitaly/service/internalgitaly/walkrepos_test.go | 11 | ||||
-rw-r--r-- | internal/gitaly/service/setup/register.go | 7 |
3 files changed, 35 insertions, 5 deletions
diff --git a/internal/gitaly/service/internalgitaly/server.go b/internal/gitaly/service/internalgitaly/server.go index b24ea4ede..d0ce88352 100644 --- a/internal/gitaly/service/internalgitaly/server.go +++ b/internal/gitaly/service/internalgitaly/server.go @@ -1,16 +1,32 @@ package internalgitaly import ( + "gitlab.com/gitlab-org/gitaly/v16/internal/git" + "gitlab.com/gitlab-org/gitaly/v16/internal/git/catfile" "gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config" + "gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage" "gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb" ) type server struct { gitalypb.UnimplementedInternalGitalyServer - storages []config.Storage + storages []config.Storage + locator storage.Locator + gitCmdFactory git.CommandFactory + catfileCache catfile.Cache } // NewServer return an instance of the Gitaly service. -func NewServer(storages []config.Storage) gitalypb.InternalGitalyServer { - return &server{storages: storages} +func NewServer( + storages []config.Storage, + locator storage.Locator, + gitCmdFactory git.CommandFactory, + catfileCache catfile.Cache, +) gitalypb.InternalGitalyServer { + return &server{ + storages: storages, + locator: locator, + gitCmdFactory: gitCmdFactory, + catfileCache: catfileCache, + } } diff --git a/internal/gitaly/service/internalgitaly/walkrepos_test.go b/internal/gitaly/service/internalgitaly/walkrepos_test.go index b69a8cf70..de4e5b23d 100644 --- a/internal/gitaly/service/internalgitaly/walkrepos_test.go +++ b/internal/gitaly/service/internalgitaly/walkrepos_test.go @@ -9,6 +9,7 @@ import ( "time" "github.com/stretchr/testify/require" + "gitlab.com/gitlab-org/gitaly/v16/internal/git/catfile" "gitlab.com/gitlab-org/gitaly/v16/internal/git/gittest" "gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config" "gitlab.com/gitlab-org/gitaly/v16/internal/testhelper" @@ -70,12 +71,20 @@ func TestWalkRepos(t *testing.T) { os.Chtimes(testRepo2Path, time.Now(), modifiedDate), ) + catfileCache := catfile.NewCache(cfg) + t.Cleanup(catfileCache.Stop) + // to test a directory being deleted during a walk, we must delete a directory after // the file walk has started. To achieve that, we wrap the server to pass down a wrapped // stream that allows us to hook in to stream responses. We then delete 'b' when // the first repo 'a' is being streamed to the client. deleteOnce := sync.Once{} - srv := NewServer([]config.Storage{{Name: storageName, Path: storageRoot}}) + srv := NewServer( + []config.Storage{{Name: storageName, Path: storageRoot}}, + config.NewLocator(cfg), + gittest.NewCommandFactory(t, cfg), + catfileCache, + ) wsrv := &serverWrapper{ srv, func(r *gitalypb.WalkReposRequest, s gitalypb.InternalGitaly_WalkReposServer) error { diff --git a/internal/gitaly/service/setup/register.go b/internal/gitaly/service/setup/register.go index 2c40bb220..50f0482c1 100644 --- a/internal/gitaly/service/setup/register.go +++ b/internal/gitaly/service/setup/register.go @@ -144,7 +144,12 @@ func RegisterAll(srv *grpc.Server, deps *service.Dependencies) { deps.GetPackObjectsConcurrencyTracker(), deps.GetPackObjectsLimiter(), )) - gitalypb.RegisterInternalGitalyServer(srv, internalgitaly.NewServer(deps.GetCfg().Storages)) + gitalypb.RegisterInternalGitalyServer(srv, internalgitaly.NewServer( + deps.GetCfg().Storages, + deps.GetLocator(), + deps.GetGitCmdFactory(), + deps.GetCatfileCache(), + )) healthpb.RegisterHealthServer(srv, health.NewServer()) reflection.Register(srv) |