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:
authorPavlo Strokov <pstrokov@gitlab.com>2022-09-27 10:57:55 +0300
committerPavlo Strokov <pstrokov@gitlab.com>2022-10-24 09:24:30 +0300
commitac0da93073f74c7c9b304a4f4dc05e94e9aa177e (patch)
tree23e8b81a0e3aa110657ad742226b644fd89776d9
parentdc48de301efdc8f1cf0e81111ade7f750dc7c246 (diff)
ref: Standardization of errors creation
Replace usage of status.Errorf() with helper.Err<StatusCode>f() to make error creation more standard. Return pre-defined ErrEmptyRepository instead of ad-hoc created error. Replace old %v with new %w for proper error wrapping. Replace fmt.Errorf() with errors.New() if used without a reason. Remove redundant prefix from error returned by RPC call. Return Internal code in case of an unexpected operation failure instead of Undefined by using helper.ErrInternal(). Add context to the error to make it more descriptive and standard. Check error type to convert it to the corresponding error code.
-rw-r--r--internal/gitaly/service/ref/branches.go6
-rw-r--r--internal/gitaly/service/ref/delete_refs.go16
-rw-r--r--internal/gitaly/service/ref/delete_refs_test.go12
-rw-r--r--internal/gitaly/service/ref/find_all_tags.go6
-rw-r--r--internal/gitaly/service/ref/find_refs_by_oid.go2
-rw-r--r--internal/gitaly/service/ref/find_tag.go12
-rw-r--r--internal/gitaly/service/ref/list_refs.go4
-rw-r--r--internal/gitaly/service/ref/refexists.go4
-rw-r--r--internal/gitaly/service/ref/refnames.go5
-rw-r--r--internal/gitaly/service/ref/refnames_containing.go12
-rw-r--r--internal/gitaly/service/ref/refs.go16
-rw-r--r--internal/gitaly/service/ref/refs_test.go8
-rw-r--r--internal/gitaly/service/ref/remote_branches.go10
-rw-r--r--internal/gitaly/service/ref/remote_branches_test.go2
-rw-r--r--internal/gitaly/service/ref/tag_messages.go10
-rw-r--r--internal/gitaly/service/ref/tag_messages_test.go2
-rw-r--r--internal/gitaly/service/ref/tag_signatures.go8
-rw-r--r--internal/gitaly/service/ref/tag_signatures_test.go2
18 files changed, 66 insertions, 71 deletions
diff --git a/internal/gitaly/service/ref/branches.go b/internal/gitaly/service/ref/branches.go
index e99c62f44..d3c96f397 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/git"
"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) {
@@ -17,7 +15,7 @@ func (s *server) FindBranch(ctx context.Context, req *gitalypb.FindBranchRequest
return nil, helper.ErrInvalidArgument(gitalyerrors.ErrEmptyRepository)
}
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(req.GetRepository())
@@ -37,7 +35,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 9ac06d48e..2d0a979f7 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 9541dde1b..309ce5b2c 100644
--- a/internal/gitaly/service/ref/delete_refs_test.go
+++ b/internal/gitaly/service/ref/delete_refs_test.go
@@ -282,7 +282,7 @@ func TestDeleteRefs_validation(t *testing.T) {
desc: "no repository provided",
request: &gitalypb.DeleteRefsRequest{Repository: nil},
expErr: status.Error(codes.InvalidArgument, testhelper.GitalyOrPraefect(
- "DeleteRefs: empty Repository",
+ "empty Repository",
"repo scoped: empty Repository",
)),
},
@@ -304,7 +304,7 @@ func TestDeleteRefs_validation(t *testing.T) {
ExceptWithPrefix: [][]byte{[]byte("exclude-this")},
},
expErr: status.Error(codes.InvalidArgument, testhelper.GitalyOrPraefect(
- "DeleteRefs: empty Repository",
+ "empty Repository",
"repo scoped: empty Repository",
)),
},
@@ -313,7 +313,7 @@ func TestDeleteRefs_validation(t *testing.T) {
request: &gitalypb.DeleteRefsRequest{
Repository: repo,
},
- expErr: status.Error(codes.InvalidArgument, "DeleteRefs: empty ExceptWithPrefix and Refs"),
+ expErr: status.Error(codes.InvalidArgument, "empty ExceptWithPrefix and Refs"),
},
{
desc: "prefixes with refs",
@@ -322,7 +322,7 @@ func TestDeleteRefs_validation(t *testing.T) {
ExceptWithPrefix: [][]byte{[]byte("exclude-this")},
Refs: [][]byte{[]byte("delete-this")},
},
- expErr: status.Error(codes.InvalidArgument, "DeleteRefs: ExceptWithPrefix and Refs are mutually exclusive"),
+ expErr: status.Error(codes.InvalidArgument, "ExceptWithPrefix and Refs are mutually exclusive"),
},
{
desc: "Empty prefix",
@@ -330,7 +330,7 @@ func TestDeleteRefs_validation(t *testing.T) {
Repository: repo,
ExceptWithPrefix: [][]byte{[]byte("exclude-this"), {}},
},
- expErr: status.Error(codes.InvalidArgument, "DeleteRefs: empty prefix for exclusion"),
+ expErr: status.Error(codes.InvalidArgument, "empty prefix for exclusion"),
},
{
desc: "Empty ref",
@@ -338,7 +338,7 @@ func TestDeleteRefs_validation(t *testing.T) {
Repository: repo,
Refs: [][]byte{[]byte("delete-this"), {}},
},
- expErr: status.Error(codes.InvalidArgument, "DeleteRefs: empty ref"),
+ expErr: 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 a07d225e0..943e14674 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 helper.ErrInternalf("crate cat-file object iterator: %w", err)
}
chunker := chunk.New(&tagSender{stream: stream})
@@ -171,7 +171,7 @@ func (s *server) validateFindAllTagsRequest(request *gitalypb.FindAllTagsRequest
}
if _, err := s.locator.GetRepoPath(request.GetRepository()); 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 bdadd7513..ccad4a937 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 6c378d2df..698e10fc0 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("parse tag: %w", err)
}
} else {
detailedErr, err := helper.ErrWithDetails(
@@ -125,7 +125,7 @@ func (s *server) validateFindTagRequest(in *gitalypb.FindTagRequest) error {
}
if _, err := s.locator.GetRepoPath(in.GetRepository()); 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 512f17d28..622cdf54b 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("resolve 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 aab56ca0e..4ba70d7f4 100644
--- a/internal/gitaly/service/ref/refexists.go
+++ b/internal/gitaly/service/ref/refexists.go
@@ -2,7 +2,7 @@ package ref
import (
"context"
- "fmt"
+ "errors"
"strings"
"gitlab.com/gitlab-org/gitaly/v15/internal/command"
@@ -21,7 +21,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.ErrInvalidArgument(errors.New("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 958019d2c..9353a7b6f 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 dc3db16f8..cf22d76c4 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 d1b9a23f9..bb2015d5d 100644
--- a/internal/gitaly/service/ref/refs.go
+++ b/internal/gitaly/service/ref/refs.go
@@ -114,7 +114,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()
@@ -126,7 +126,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("find refs: %w", err)
+ }
+ return nil
}
func (s *server) FindAllBranches(in *gitalypb.FindAllBranchesRequest, stream gitalypb.RefService_FindAllBranchesServer) error {
@@ -153,7 +156,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())})
@@ -170,7 +173,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()
@@ -179,7 +182,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("find 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 859b98974..65adef77e 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("find 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"},
expErr: status.Error(codes.NotFound, testhelper.GitalyOrPraefect(
- `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()},
expErr: status.Error(codes.InvalidArgument, testhelper.GitalyOrPraefect(
- `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.GitalyOrPraefect(
- "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 42543dc6a..79129545f 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("find 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 aaf3e4055..464066698 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",
},
expErr: status.Error(codes.InvalidArgument, testhelper.GitalyOrPraefect(
- `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 87273b988..e3bf76375 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)
@@ -40,14 +38,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("failed to get tag: %w", err)
}
if err := stream.Send(&gitalypb.GetTagMessagesResponse{TagId: tagID}); err != nil {
@@ -60,7 +58,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 60fc6381f..6ac358427 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"},
},
expErr: status.Error(codes.InvalidArgument, testhelper.GitalyOrPraefect(
- "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 6c1608ab3..6961697c2 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("crate 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("read 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 25f1c2ede..c054f0d63 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",