diff options
author | Pavlo Strokov <pstrokov@gitlab.com> | 2022-11-09 18:19:29 +0300 |
---|---|---|
committer | Pavlo Strokov <pstrokov@gitlab.com> | 2022-11-09 18:19:29 +0300 |
commit | 9737f0aa2b8ba2b6a81e886f35dae30f73fe3ba8 (patch) | |
tree | 86c2894455bc320359834d0ccdd1d3b9e09f6712 | |
parent | 528030acce38bf7a0e3f89bfe1a72e3d9484bdc4 (diff) | |
parent | 0114140bc785a9fc0501e869623229720375c28b (diff) |
Merge branch 'ps-ref-fix' into 'master'
ref: Standardization of errors creation
See merge request https://gitlab.com/gitlab-org/gitaly/-/merge_requests/5027
Merged-by: Pavlo Strokov <pstrokov@gitlab.com>
Approved-by: karthik nayak <knayak@gitlab.com>
Approved-by: Christian Couder <chriscool@tuxfamily.org>
18 files changed, 65 insertions, 71 deletions
diff --git a/internal/gitaly/service/ref/branches.go b/internal/gitaly/service/ref/branches.go index 686e29f3f..c5a67ed24 100644 --- a/internal/gitaly/service/ref/branches.go +++ b/internal/gitaly/service/ref/branches.go @@ -8,8 +8,6 @@ import ( "gitlab.com/gitlab-org/gitaly/v15/internal/gitaly/service" "gitlab.com/gitlab-org/gitaly/v15/internal/helper" "gitlab.com/gitlab-org/gitaly/v15/proto/go/gitalypb" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" ) func (s *server) FindBranch(ctx context.Context, req *gitalypb.FindBranchRequest) (*gitalypb.FindBranchResponse, error) { @@ -18,7 +16,7 @@ func (s *server) FindBranch(ctx context.Context, req *gitalypb.FindBranchRequest return nil, helper.ErrInvalidArgument(err) } if len(req.GetName()) == 0 { - return nil, status.Errorf(codes.InvalidArgument, "Branch name cannot be empty") + return nil, helper.ErrInvalidArgumentf("Branch name cannot be empty") } repo := s.localrepo(repository) @@ -38,7 +36,7 @@ func (s *server) FindBranch(ctx context.Context, req *gitalypb.FindBranchRequest branch, ok := branchName.Branch() if !ok { - return nil, status.Errorf(codes.InvalidArgument, "reference is not a branch") + return nil, helper.ErrInvalidArgumentf("reference is not a branch") } return &gitalypb.FindBranchResponse{ diff --git a/internal/gitaly/service/ref/delete_refs.go b/internal/gitaly/service/ref/delete_refs.go index 198621184..f282fc0e1 100644 --- a/internal/gitaly/service/ref/delete_refs.go +++ b/internal/gitaly/service/ref/delete_refs.go @@ -15,13 +15,11 @@ import ( "gitlab.com/gitlab-org/gitaly/v15/internal/metadata/featureflag" "gitlab.com/gitlab-org/gitaly/v15/internal/transaction/voting" "gitlab.com/gitlab-org/gitaly/v15/proto/go/gitalypb" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" ) func (s *server) DeleteRefs(ctx context.Context, in *gitalypb.DeleteRefsRequest) (*gitalypb.DeleteRefsResponse, error) { if err := validateDeleteRefRequest(in); err != nil { - return nil, status.Errorf(codes.InvalidArgument, "DeleteRefs: %v", err) + return nil, helper.ErrInvalidArgument(err) } repo := s.localrepo(in.GetRepository()) @@ -79,7 +77,7 @@ func (s *server) DeleteRefs(ctx context.Context, in *gitalypb.DeleteRefsRequest) } if _, err := voteHash.Write([]byte(ref.String() + "\n")); err != nil { - return nil, helper.ErrInternalf("could not update vote hash: %v", err) + return nil, helper.ErrInternalf("could not update vote hash: %w", err) } } @@ -114,7 +112,7 @@ func (s *server) DeleteRefs(ctx context.Context, in *gitalypb.DeleteRefsRequest) vote, err := voteHash.Vote() if err != nil { - return nil, helper.ErrInternalf("could not compute vote: %v", err) + return nil, helper.ErrInternalf("could not compute vote: %w", err) } // All deletes we're doing in this RPC are force deletions. Because we're required to filter @@ -187,22 +185,22 @@ func validateDeleteRefRequest(req *gitalypb.DeleteRefsRequest) error { } if len(req.ExceptWithPrefix) > 0 && len(req.Refs) > 0 { - return fmt.Errorf("ExceptWithPrefix and Refs are mutually exclusive") + return errors.New("ExceptWithPrefix and Refs are mutually exclusive") } if len(req.ExceptWithPrefix) == 0 && len(req.Refs) == 0 { // You can't delete all refs - return fmt.Errorf("empty ExceptWithPrefix and Refs") + return errors.New("empty ExceptWithPrefix and Refs") } for _, prefix := range req.ExceptWithPrefix { if len(prefix) == 0 { - return fmt.Errorf("empty prefix for exclusion") + return errors.New("empty prefix for exclusion") } } for _, ref := range req.Refs { if len(ref) == 0 { - return fmt.Errorf("empty ref") + return errors.New("empty ref") } } diff --git a/internal/gitaly/service/ref/delete_refs_test.go b/internal/gitaly/service/ref/delete_refs_test.go index 233346147..8c9614884 100644 --- a/internal/gitaly/service/ref/delete_refs_test.go +++ b/internal/gitaly/service/ref/delete_refs_test.go @@ -278,7 +278,7 @@ func TestDeleteRefs_validation(t *testing.T) { desc: "no repository provided", request: &gitalypb.DeleteRefsRequest{Repository: nil}, expectedErr: status.Error(codes.InvalidArgument, testhelper.GitalyOrPraefectMessage( - "DeleteRefs: empty Repository", + "empty Repository", "repo scoped: empty Repository", )), }, @@ -300,7 +300,7 @@ func TestDeleteRefs_validation(t *testing.T) { ExceptWithPrefix: [][]byte{[]byte("exclude-this")}, }, expectedErr: status.Error(codes.InvalidArgument, testhelper.GitalyOrPraefectMessage( - "DeleteRefs: empty Repository", + "empty Repository", "repo scoped: empty Repository", )), }, @@ -309,7 +309,7 @@ func TestDeleteRefs_validation(t *testing.T) { request: &gitalypb.DeleteRefsRequest{ Repository: repo, }, - expectedErr: status.Error(codes.InvalidArgument, "DeleteRefs: empty ExceptWithPrefix and Refs"), + expectedErr: status.Error(codes.InvalidArgument, "empty ExceptWithPrefix and Refs"), }, { desc: "prefixes with refs", @@ -318,7 +318,7 @@ func TestDeleteRefs_validation(t *testing.T) { ExceptWithPrefix: [][]byte{[]byte("exclude-this")}, Refs: [][]byte{[]byte("delete-this")}, }, - expectedErr: status.Error(codes.InvalidArgument, "DeleteRefs: ExceptWithPrefix and Refs are mutually exclusive"), + expectedErr: status.Error(codes.InvalidArgument, "ExceptWithPrefix and Refs are mutually exclusive"), }, { desc: "Empty prefix", @@ -326,7 +326,7 @@ func TestDeleteRefs_validation(t *testing.T) { Repository: repo, ExceptWithPrefix: [][]byte{[]byte("exclude-this"), {}}, }, - expectedErr: status.Error(codes.InvalidArgument, "DeleteRefs: empty prefix for exclusion"), + expectedErr: status.Error(codes.InvalidArgument, "empty prefix for exclusion"), }, { desc: "Empty ref", @@ -334,7 +334,7 @@ func TestDeleteRefs_validation(t *testing.T) { Repository: repo, Refs: [][]byte{[]byte("delete-this"), {}}, }, - expectedErr: status.Error(codes.InvalidArgument, "DeleteRefs: empty ref"), + expectedErr: status.Error(codes.InvalidArgument, "empty ref"), }, } diff --git a/internal/gitaly/service/ref/find_all_tags.go b/internal/gitaly/service/ref/find_all_tags.go index 5df28db8c..9bfca9e87 100644 --- a/internal/gitaly/service/ref/find_all_tags.go +++ b/internal/gitaly/service/ref/find_all_tags.go @@ -43,7 +43,7 @@ func (s *server) FindAllTags(in *gitalypb.FindAllTagsRequest, stream gitalypb.Re func (s *server) findAllTags(ctx context.Context, repo *localrepo.Repo, sortField string, stream gitalypb.RefService_FindAllTagsServer, opts *paginationOpts) error { objectReader, cancel, err := s.catfileCache.ObjectReader(ctx, repo) if err != nil { - return fmt.Errorf("error creating object reader: %v", err) + return fmt.Errorf("creating object reader: %w", err) } defer cancel() @@ -57,7 +57,7 @@ func (s *server) findAllTags(ctx context.Context, repo *localrepo.Repo, sortFiel catfileObjectsIter, err := gitpipe.CatfileObject(ctx, objectReader, forEachRefIter) if err != nil { - return err + return fmt.Errorf("creating cat-file object iterator: %w", err) } chunker := chunk.New(&tagSender{stream: stream}) @@ -172,7 +172,7 @@ func (s *server) validateFindAllTagsRequest(request *gitalypb.FindAllTagsRequest } if _, err := s.locator.GetRepoPath(repository); err != nil { - return fmt.Errorf("invalid git directory: %v", err) + return fmt.Errorf("invalid git directory: %w", err) } return nil diff --git a/internal/gitaly/service/ref/find_refs_by_oid.go b/internal/gitaly/service/ref/find_refs_by_oid.go index b6284723b..52c0a4c95 100644 --- a/internal/gitaly/service/ref/find_refs_by_oid.go +++ b/internal/gitaly/service/ref/find_refs_by_oid.go @@ -43,7 +43,7 @@ func (s *server) FindRefsByOID(ctx context.Context, in *gitalypb.FindRefsByOIDRe if strings.Contains(err.Error(), "exit status 129") { return nil, helper.ErrInvalidArgument(err) } - return nil, err + return nil, helper.ErrInternal(err) } return &gitalypb.FindRefsByOIDResponse{ diff --git a/internal/gitaly/service/ref/find_tag.go b/internal/gitaly/service/ref/find_tag.go index ab340caea..982f49920 100644 --- a/internal/gitaly/service/ref/find_tag.go +++ b/internal/gitaly/service/ref/find_tag.go @@ -48,7 +48,7 @@ func parseTagLine(ctx context.Context, objectReader catfile.ObjectReader, tagLin case "tag": tag, err := catfile.GetTag(ctx, objectReader, git.Revision(tagID), refName) if err != nil { - return nil, fmt.Errorf("getting annotated tag: %v", err) + return nil, fmt.Errorf("getting annotated tag: %w", err) } catfile.TrimTagMessage(tag) @@ -56,7 +56,7 @@ func parseTagLine(ctx context.Context, objectReader catfile.ObjectReader, tagLin case "commit": commit, err := catfile.GetCommit(ctx, objectReader, git.Revision(tagID)) if err != nil { - return nil, fmt.Errorf("getting commit catfile: %v", err) + return nil, fmt.Errorf("getting commit catfile: %w", err) } tag.TargetCommit = commit return tag, nil @@ -77,12 +77,12 @@ func (s *server) findTag(ctx context.Context, repo git.RepositoryExecutor, tagNa git.WithRefTxHook(repo), ) if err != nil { - return nil, fmt.Errorf("for-each-ref error: %v", err) + return nil, fmt.Errorf("for-each-ref error: %w", err) } objectReader, cancel, err := s.catfileCache.ObjectReader(ctx, repo) if err != nil { - return nil, err + return nil, fmt.Errorf("creating object reader: %w", err) } defer cancel() @@ -92,7 +92,7 @@ func (s *server) findTag(ctx context.Context, repo git.RepositoryExecutor, tagNa if scanner.Scan() { tag, err = parseTagLine(ctx, objectReader, scanner.Text()) if err != nil { - return nil, err + return nil, fmt.Errorf("parsing tag: %w", err) } } else { detailedErr, err := helper.ErrWithDetails( @@ -126,7 +126,7 @@ func (s *server) validateFindTagRequest(in *gitalypb.FindTagRequest) error { } if _, err := s.locator.GetRepoPath(repository); err != nil { - return fmt.Errorf("invalid git directory: %v", err) + return fmt.Errorf("invalid git directory: %w", err) } if in.GetTagName() == nil { diff --git a/internal/gitaly/service/ref/list_refs.go b/internal/gitaly/service/ref/list_refs.go index 24037f287..60d347c80 100644 --- a/internal/gitaly/service/ref/list_refs.go +++ b/internal/gitaly/service/ref/list_refs.go @@ -25,7 +25,7 @@ func (s *server) ListRefs(in *gitalypb.ListRefsRequest, stream gitalypb.RefServi var err error headOID, err = repo.ResolveRevision(ctx, git.Revision("HEAD")) if err != nil && !errors.Is(err, git.ErrReferenceNotFound) { - return helper.ErrInternal(err) + return helper.ErrInternalf("resolving HEAD: %w", err) } } @@ -44,7 +44,7 @@ func (s *server) ListRefs(in *gitalypb.ListRefsRequest, stream gitalypb.RefServi git.ValueFlag{Name: "--sort", Value: sorting}, } - return s.findRefs(ctx, writer, repo, patterns, opts) + return helper.ErrInternal(s.findRefs(ctx, writer, repo, patterns, opts)) } func validateListRefsRequest(in *gitalypb.ListRefsRequest) error { diff --git a/internal/gitaly/service/ref/refexists.go b/internal/gitaly/service/ref/refexists.go index 60a006b84..38a2477b5 100644 --- a/internal/gitaly/service/ref/refexists.go +++ b/internal/gitaly/service/ref/refexists.go @@ -2,7 +2,6 @@ package ref import ( "context" - "fmt" "strings" "gitlab.com/gitlab-org/gitaly/v15/internal/command" @@ -21,7 +20,7 @@ func (s *server) RefExists(ctx context.Context, in *gitalypb.RefExistsRequest) ( ref := string(in.Ref) if !isValidRefName(ref) { - return nil, helper.ErrInvalidArgument(fmt.Errorf("invalid refname")) + return nil, helper.ErrInvalidArgumentf("invalid refname") } exists, err := s.refExists(ctx, in.Repository, ref) diff --git a/internal/gitaly/service/ref/refnames.go b/internal/gitaly/service/ref/refnames.go index 1b9e95880..34c86984d 100644 --- a/internal/gitaly/service/ref/refnames.go +++ b/internal/gitaly/service/ref/refnames.go @@ -21,7 +21,7 @@ func (s *server) FindAllBranchNames(in *gitalypb.FindAllBranchNamesRequest, stre chunker := chunk.New(&findAllBranchNamesSender{stream: stream}) - return s.listRefNames(stream.Context(), chunker, "refs/heads", in.Repository, nil) + return helper.ErrInternal(s.listRefNames(stream.Context(), chunker, "refs/heads", in.Repository, nil)) } type findAllBranchNamesSender struct { @@ -45,8 +45,7 @@ func (s *server) FindAllTagNames(in *gitalypb.FindAllTagNamesRequest, stream git } chunker := chunk.New(&findAllTagNamesSender{stream: stream}) - - return s.listRefNames(stream.Context(), chunker, "refs/tags", in.Repository, nil) + return helper.ErrInternal(s.listRefNames(stream.Context(), chunker, "refs/tags", in.Repository, nil)) } type findAllTagNamesSender struct { diff --git a/internal/gitaly/service/ref/refnames_containing.go b/internal/gitaly/service/ref/refnames_containing.go index 92e692095..80a888316 100644 --- a/internal/gitaly/service/ref/refnames_containing.go +++ b/internal/gitaly/service/ref/refnames_containing.go @@ -25,11 +25,7 @@ func (s *server) ListBranchNamesContainingCommit(in *gitalypb.ListBranchNamesCon chunker := chunk.New(&branchNamesContainingCommitSender{stream: stream}) ctx := stream.Context() - if err := s.listRefNames(ctx, chunker, "refs/heads", in.Repository, containingArgs(in)); err != nil { - return helper.ErrInternal(err) - } - - return nil + return helper.ErrInternal(s.listRefNames(ctx, chunker, "refs/heads", in.Repository, containingArgs(in))) } type containingRequest interface { @@ -71,11 +67,7 @@ func (s *server) ListTagNamesContainingCommit(in *gitalypb.ListTagNamesContainin chunker := chunk.New(&tagNamesContainingCommitSender{stream: stream}) ctx := stream.Context() - if err := s.listRefNames(ctx, chunker, "refs/tags", in.Repository, containingArgs(in)); err != nil { - return helper.ErrInternal(err) - } - - return nil + return helper.ErrInternal(s.listRefNames(ctx, chunker, "refs/tags", in.Repository, containingArgs(in))) } type tagNamesContainingCommitSender struct { diff --git a/internal/gitaly/service/ref/refs.go b/internal/gitaly/service/ref/refs.go index 2827764ac..711ecdd14 100644 --- a/internal/gitaly/service/ref/refs.go +++ b/internal/gitaly/service/ref/refs.go @@ -115,7 +115,7 @@ func (s *server) findLocalBranches(in *gitalypb.FindLocalBranchesRequest, stream objectReader, cancel, err := s.catfileCache.ObjectReader(ctx, repo) if err != nil { - return err + return fmt.Errorf("creating object reader: %w", err) } defer cancel() @@ -127,7 +127,10 @@ func (s *server) findLocalBranches(in *gitalypb.FindLocalBranchesRequest, stream git.Flag{Name: "--sort=" + parseSortKey(in.GetSortBy())}, } - return s.findRefs(ctx, writer, repo, []string{"refs/heads"}, opts) + if err := s.findRefs(ctx, writer, repo, []string{"refs/heads"}, opts); err != nil { + return fmt.Errorf("finding refs: %w", err) + } + return nil } func (s *server) FindAllBranches(in *gitalypb.FindAllBranchesRequest, stream gitalypb.RefService_FindAllBranchesServer) error { @@ -154,7 +157,7 @@ func (s *server) findAllBranches(in *gitalypb.FindAllBranchesRequest, stream git if in.MergedOnly { defaultBranch, err := repo.GetDefaultBranch(stream.Context()) if err != nil { - return err + return fmt.Errorf("default branch name: %w", err) } args = append(args, git.Flag{Name: fmt.Sprintf("--merged=%s", defaultBranch.String())}) @@ -171,7 +174,7 @@ func (s *server) findAllBranches(in *gitalypb.FindAllBranchesRequest, stream git ctx := stream.Context() objectReader, cancel, err := s.catfileCache.ObjectReader(ctx, repo) if err != nil { - return err + return fmt.Errorf("creating object reader: %w", err) } defer cancel() @@ -180,7 +183,10 @@ func (s *server) findAllBranches(in *gitalypb.FindAllBranchesRequest, stream git writer := newFindAllBranchesWriter(stream, objectReader) - return s.findRefs(ctx, writer, repo, patterns, opts) + if err = s.findRefs(ctx, writer, repo, patterns, opts); err != nil { + return fmt.Errorf("finding refs: %w", err) + } + return nil } func buildPaginationOpts(ctx context.Context, p *gitalypb.PaginationParameter) *paginationOpts { diff --git a/internal/gitaly/service/ref/refs_test.go b/internal/gitaly/service/ref/refs_test.go index 4a6aa4fd0..b5acb08f5 100644 --- a/internal/gitaly/service/ref/refs_test.go +++ b/internal/gitaly/service/ref/refs_test.go @@ -473,7 +473,7 @@ func TestFindLocalBranchesPaginationWithIncorrectToken(t *testing.T) { _, err = c.Recv() require.NotEqual(t, err, io.EOF) - testhelper.RequireGrpcError(t, helper.ErrInternalf("could not find page token"), err) + testhelper.RequireGrpcError(t, helper.ErrInternalf("finding refs: could not find page token"), err) } // Test that `s` contains the elements in `relativeOrder` in that order @@ -571,7 +571,7 @@ func TestFindLocalBranches_validate(t *testing.T) { desc: "repository doesn't exist on disk", repo: &gitalypb.Repository{StorageName: cfg.Storages[0].Name, RelativePath: "made/up/path"}, expectedErr: status.Error(codes.NotFound, testhelper.GitalyOrPraefectMessage( - `GetRepoPath: not a git repository: "`+cfg.Storages[0].Path+`/made/up/path"`, + `creating object reader: GetRepoPath: not a git repository: "`+cfg.Storages[0].Path+`/made/up/path"`, `accessor call: route repository accessor: consistent storages: repository "default"/"made/up/path" not found`, )), }, @@ -579,7 +579,7 @@ func TestFindLocalBranches_validate(t *testing.T) { desc: "unknown storage", repo: &gitalypb.Repository{StorageName: "invalid", RelativePath: repo.GetRelativePath()}, expectedErr: status.Error(codes.InvalidArgument, testhelper.GitalyOrPraefectMessage( - `GetStorageByName: no such storage: "invalid"`, + `creating object reader: GetStorageByName: no such storage: "invalid"`, "repo scoped: invalid Repository", )), }, @@ -754,7 +754,7 @@ func TestInvalidFindAllBranchesRequest(t *testing.T) { }, }, expectedErr: helper.ErrInvalidArgumentf(testhelper.GitalyOrPraefectMessage( - "GetStorageByName: no such storage: \"fake\"", + "creating object reader: GetStorageByName: no such storage: \"fake\"", "repo scoped: invalid Repository", )), }, diff --git a/internal/gitaly/service/ref/remote_branches.go b/internal/gitaly/service/ref/remote_branches.go index 972661d65..53664f6b1 100644 --- a/internal/gitaly/service/ref/remote_branches.go +++ b/internal/gitaly/service/ref/remote_branches.go @@ -1,6 +1,7 @@ package ref import ( + "errors" "fmt" "strings" @@ -34,7 +35,7 @@ func (s *server) findAllRemoteBranches(req *gitalypb.FindAllRemoteBranchesReques ctx := stream.Context() objectReader, cancel, err := s.catfileCache.ObjectReader(ctx, repo) if err != nil { - return err + return fmt.Errorf("creating object reader: %w", err) } defer cancel() @@ -42,7 +43,10 @@ func (s *server) findAllRemoteBranches(req *gitalypb.FindAllRemoteBranchesReques opts.cmdArgs = args writer := newFindAllRemoteBranchesWriter(stream, objectReader) - return s.findRefs(ctx, writer, repo, patterns, opts) + if err = s.findRefs(ctx, writer, repo, patterns, opts); err != nil { + return fmt.Errorf("finding refs: %w", err) + } + return nil } func validateFindAllRemoteBranchesRequest(req *gitalypb.FindAllRemoteBranchesRequest) error { @@ -51,7 +55,7 @@ func validateFindAllRemoteBranchesRequest(req *gitalypb.FindAllRemoteBranchesReq } if len(req.GetRemoteName()) == 0 { - return fmt.Errorf("empty RemoteName") + return errors.New("empty RemoteName") } return nil diff --git a/internal/gitaly/service/ref/remote_branches_test.go b/internal/gitaly/service/ref/remote_branches_test.go index be2bb44cb..543264189 100644 --- a/internal/gitaly/service/ref/remote_branches_test.go +++ b/internal/gitaly/service/ref/remote_branches_test.go @@ -94,7 +94,7 @@ func TestInvalidFindAllRemoteBranchesRequest(t *testing.T) { RemoteName: "stub", }, expectedErr: status.Error(codes.InvalidArgument, testhelper.GitalyOrPraefectMessage( - `GetStorageByName: no such storage: "fake"`, + `creating object reader: GetStorageByName: no such storage: "fake"`, "repo scoped: invalid Repository", )), }, diff --git a/internal/gitaly/service/ref/tag_messages.go b/internal/gitaly/service/ref/tag_messages.go index ec223bd7e..9c326155d 100644 --- a/internal/gitaly/service/ref/tag_messages.go +++ b/internal/gitaly/service/ref/tag_messages.go @@ -11,13 +11,11 @@ import ( "gitlab.com/gitlab-org/gitaly/v15/internal/helper" "gitlab.com/gitlab-org/gitaly/v15/proto/go/gitalypb" "gitlab.com/gitlab-org/gitaly/v15/streamio" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" ) func (s *server) GetTagMessages(request *gitalypb.GetTagMessagesRequest, stream gitalypb.RefService_GetTagMessagesServer) error { if err := validateGetTagMessagesRequest(request); err != nil { - return status.Errorf(codes.InvalidArgument, "GetTagMessages: %v", err) + return helper.ErrInvalidArgument(err) } if err := s.getAndStreamTagMessages(request, stream); err != nil { return helper.ErrInternal(err) @@ -36,14 +34,14 @@ func (s *server) getAndStreamTagMessages(request *gitalypb.GetTagMessagesRequest objectReader, cancel, err := s.catfileCache.ObjectReader(ctx, repo) if err != nil { - return err + return fmt.Errorf("creating object reader: %w", err) } defer cancel() for _, tagID := range request.GetTagIds() { tag, err := catfile.GetTag(ctx, objectReader, git.Revision(tagID), "") if err != nil { - return fmt.Errorf("failed to get tag: %v", err) + return fmt.Errorf("getting tag: %w", err) } if err := stream.Send(&gitalypb.GetTagMessagesResponse{TagId: tagID}); err != nil { @@ -56,7 +54,7 @@ func (s *server) getAndStreamTagMessages(request *gitalypb.GetTagMessagesRequest msgReader := bytes.NewReader(tag.Message) if _, err = io.Copy(sw, msgReader); err != nil { - return fmt.Errorf("failed to send response: %v", err) + return fmt.Errorf("failed to send response: %w", err) } } return nil diff --git a/internal/gitaly/service/ref/tag_messages_test.go b/internal/gitaly/service/ref/tag_messages_test.go index fa227973b..dfd811853 100644 --- a/internal/gitaly/service/ref/tag_messages_test.go +++ b/internal/gitaly/service/ref/tag_messages_test.go @@ -68,7 +68,7 @@ func TestFailedGetTagMessagesRequest(t *testing.T) { TagIds: []string{"5937ac0a7beb003549fc5fd26fc247adbce4a52e"}, }, expectedErr: status.Error(codes.InvalidArgument, testhelper.GitalyOrPraefectMessage( - "GetTagMessages: empty Repository", + "empty Repository", "repo scoped: empty Repository", )), }, diff --git a/internal/gitaly/service/ref/tag_signatures.go b/internal/gitaly/service/ref/tag_signatures.go index 1d2ca43a4..bd0f93217 100644 --- a/internal/gitaly/service/ref/tag_signatures.go +++ b/internal/gitaly/service/ref/tag_signatures.go @@ -63,7 +63,7 @@ func (s *server) GetTagSignatures(req *gitalypb.GetTagSignaturesRequest, stream catfileObjectIter, err := gitpipe.CatfileObject(ctx, objectReader, revlistIter) if err != nil { - return err + return helper.ErrInternalf("creating cat-file object iterator: %w", err) } for catfileObjectIter.Next() { @@ -71,7 +71,7 @@ func (s *server) GetTagSignatures(req *gitalypb.GetTagSignaturesRequest, stream raw, err := io.ReadAll(tag) if err != nil { - return helper.ErrInternal(err) + return helper.ErrInternalf("reading tag: %w", err) } signatureKey, tagText := catfile.ExtractTagSignature(raw) @@ -86,11 +86,11 @@ func (s *server) GetTagSignatures(req *gitalypb.GetTagSignaturesRequest, stream } if err := catfileObjectIter.Err(); err != nil { - return helper.ErrInternal(err) + return helper.ErrInternalf("cat-file iterator stop: %w", err) } if err := chunker.Flush(); err != nil { - return helper.ErrInternal(err) + return helper.ErrInternalf("flushing chunker: %w", err) } return nil diff --git a/internal/gitaly/service/ref/tag_signatures_test.go b/internal/gitaly/service/ref/tag_signatures_test.go index f7aa92481..fee224281 100644 --- a/internal/gitaly/service/ref/tag_signatures_test.go +++ b/internal/gitaly/service/ref/tag_signatures_test.go @@ -60,7 +60,7 @@ func TestGetTagSignatures(t *testing.T) { revisions: []string{ "b10ff336f3fbfb131431c4959915cdfd1b49c635", }, - expectedErr: status.Error(codes.Internal, "rev-list pipeline command: exit status 128, stderr: \"fatal: bad object b10ff336f3fbfb131431c4959915cdfd1b49c635\\n\""), + expectedErr: status.Error(codes.Internal, "cat-file iterator stop: rev-list pipeline command: exit status 128, stderr: \"fatal: bad object b10ff336f3fbfb131431c4959915cdfd1b49c635\\n\""), }, { desc: "commit id", |