diff options
-rw-r--r-- | internal/praefect/service/info/repositories.go | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/internal/praefect/service/info/repositories.go b/internal/praefect/service/info/repositories.go index ec6bb1a4b..ba6f1f90a 100644 --- a/internal/praefect/service/info/repositories.go +++ b/internal/praefect/service/info/repositories.go @@ -7,6 +7,7 @@ import ( "gitlab.com/gitlab-org/gitaly/v14/internal/helper" "gitlab.com/gitlab-org/gitaly/v14/proto/go/gitalypb" "golang.org/x/sync/errgroup" + "google.golang.org/grpc" ) // RepositoryReplicas returns a list of repositories that includes the checksum of the primary as well as the replicas @@ -29,11 +30,6 @@ func (s *Server) RepositoryReplicas(ctx context.Context, in *gitalypb.Repository return nil, fmt.Errorf("get host assignments: %w", err) } - replicaPath, err := s.rs.GetReplicaPath(ctx, repositoryID) - if err != nil { - return nil, fmt.Errorf("get replica path: %w", err) - } - secondaries := make([]string, 0, len(assignments)-1) primaryIsAssigned := false for _, assignment := range assignments { @@ -51,7 +47,7 @@ func (s *Server) RepositoryReplicas(ctx context.Context, in *gitalypb.Repository var resp gitalypb.RepositoryReplicasResponse - if resp.Primary, err = s.getRepositoryDetails(ctx, virtualStorage, primary, relativePath, replicaPath); err != nil { + if resp.Primary, err = s.getRepositoryDetails(ctx, virtualStorage, primary, relativePath); err != nil { return nil, helper.ErrInternal(err) } @@ -64,7 +60,7 @@ func (s *Server) RepositoryReplicas(ctx context.Context, in *gitalypb.Repository storage := storage // rescoping g.Go(func() error { var err error - resp.Replicas[i], err = s.getRepositoryDetails(ctx, virtualStorage, storage, relativePath, replicaPath) + resp.Replicas[i], err = s.getRepositoryDetails(ctx, virtualStorage, storage, relativePath) return err }) } @@ -76,28 +72,33 @@ func (s *Server) RepositoryReplicas(ctx context.Context, in *gitalypb.Repository return &resp, nil } -func (s *Server) getRepositoryDetails(ctx context.Context, virtualStorage, storage, relativePath, replicaPath string) (*gitalypb.RepositoryReplicasResponse_RepositoryDetails, error) { +func (s *Server) getRepositoryDetails(ctx context.Context, virtualStorage, storage, relativePath string) (*gitalypb.RepositoryReplicasResponse_RepositoryDetails, error) { conn, ok := s.conns[virtualStorage][storage] if !ok { return nil, fmt.Errorf("no connection to %q/%q", virtualStorage, storage) } - resp, err := gitalypb.NewRepositoryServiceClient(conn).CalculateChecksum(ctx, + return getChecksum( + ctx, + &gitalypb.Repository{ + StorageName: storage, + RelativePath: relativePath, + }, conn) +} + +func getChecksum(ctx context.Context, repo *gitalypb.Repository, cc *grpc.ClientConn) (*gitalypb.RepositoryReplicasResponse_RepositoryDetails, error) { + client := gitalypb.NewRepositoryServiceClient(cc) + + resp, err := client.CalculateChecksum(ctx, &gitalypb.CalculateChecksumRequest{ - Repository: &gitalypb.Repository{ - StorageName: storage, - RelativePath: replicaPath, - }, + Repository: repo, }) if err != nil { return nil, err } return &gitalypb.RepositoryReplicasResponse_RepositoryDetails{ - Repository: &gitalypb.Repository{ - StorageName: storage, - RelativePath: relativePath, - }, - Checksum: resp.GetChecksum(), + Repository: repo, + Checksum: resp.GetChecksum(), }, nil } |