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:
authorJames Fargher <jfargher@gitlab.com>2023-03-31 03:51:54 +0300
committerJames Fargher <jfargher@gitlab.com>2023-04-14 05:03:21 +0300
commit3de64b1ce8252a7d502fff87b57e4fe8f8fe91f1 (patch)
treedeea9b2746265865cbeace7ffdd0ad7b292d732b
parentb5e976335850e99a540514635cfb288e4fb56e3e (diff)
backup: Extract get custom hooks call
Soon we will be converting backups to work server side. This means that all the RPC calls will need to be converted to localrepo calls. So here we are extracting each RPC call into its own type that will later be swapped out.
-rw-r--r--internal/backup/backup.go14
-rw-r--r--internal/backup/repository.go15
2 files changed, 18 insertions, 11 deletions
diff --git a/internal/backup/backup.go b/internal/backup/backup.go
index 68ac91c37..7bb34290a 100644
--- a/internal/backup/backup.go
+++ b/internal/backup/backup.go
@@ -184,7 +184,7 @@ func (mgr *Manager) Create(ctx context.Context, req *CreateRequest) error {
if err := mgr.writeBundle(ctx, step, req.Server, req.Repository, refs); err != nil {
return fmt.Errorf("manager: write bundle: %w", err)
}
- if err := mgr.writeCustomHooks(ctx, step.CustomHooksPath, req.Server, req.Repository); err != nil {
+ if err := mgr.writeCustomHooks(ctx, repo, step.CustomHooksPath); err != nil {
return fmt.Errorf("manager: write custom hooks: %w", err)
}
@@ -434,19 +434,11 @@ func (mgr *Manager) restoreBundle(ctx context.Context, path string, server stora
return nil
}
-func (mgr *Manager) writeCustomHooks(ctx context.Context, path string, server storage.ServerInfo, repo *gitalypb.Repository) error {
- repoClient, err := mgr.newRepoClient(ctx, server)
- if err != nil {
- return err
- }
- stream, err := repoClient.GetCustomHooks(ctx, &gitalypb.GetCustomHooksRequest{Repository: repo})
+func (mgr *Manager) writeCustomHooks(ctx context.Context, repo *remoteRepository, path string) error {
+ hooks, err := repo.GetCustomHooks(ctx)
if err != nil {
return err
}
- hooks := streamio.NewReader(func() ([]byte, error) {
- resp, err := stream.Recv()
- return resp.GetData(), err
- })
w := NewLazyWriter(func() (io.WriteCloser, error) {
return mgr.sink.GetWriter(ctx, path)
})
diff --git a/internal/backup/repository.go b/internal/backup/repository.go
index 5183642a6..5a7a46ce2 100644
--- a/internal/backup/repository.go
+++ b/internal/backup/repository.go
@@ -6,6 +6,7 @@ import (
"io"
"gitlab.com/gitlab-org/gitaly/v15/proto/go/gitalypb"
+ "gitlab.com/gitlab-org/gitaly/v15/streamio"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
@@ -66,6 +67,20 @@ func (repo *remoteRepository) ListRefs(ctx context.Context) ([]*gitalypb.ListRef
return refs, nil
}
+// GetCustomHooks fetches the custom hooks archive.
+func (repo *remoteRepository) GetCustomHooks(ctx context.Context) (io.Reader, error) {
+ repoClient := repo.newRepoClient()
+ stream, err := repoClient.GetCustomHooks(ctx, &gitalypb.GetCustomHooksRequest{Repository: repo.repo})
+ if err != nil {
+ return nil, err
+ }
+
+ return streamio.NewReader(func() ([]byte, error) {
+ resp, err := stream.Recv()
+ return resp.GetData(), err
+ }), nil
+}
+
func (repo *remoteRepository) newRepoClient() gitalypb.RepositoryServiceClient {
return gitalypb.NewRepositoryServiceClient(repo.conn)
}