diff options
author | Justin Tobler <jtobler@gitlab.com> | 2022-10-06 02:22:04 +0300 |
---|---|---|
committer | Justin Tobler <jtobler@gitlab.com> | 2022-10-06 02:22:04 +0300 |
commit | 99b5528b66b23c1a8399027ecdef306267e668ae (patch) | |
tree | 8742919401bba32fc1bc9fcad787a42446b7787c | |
parent | 847af5af1cb914da74f3f9c5f3e774237ab10e14 (diff) | |
parent | 80d62284b148521cd0377b40aaae4aee81f0db62 (diff) |
Merge branch 'jc-fix-delete-refs' into 'master'
ref: Return structured error when update error is not ErrAlreadyLocked
Closes #4497
See merge request https://gitlab.com/gitlab-org/gitaly/-/merge_requests/4897
Merged-by: Justin Tobler <jtobler@gitlab.com>
Approved-by: Patrick Steinhardt <psteinhardt@gitlab.com>
Approved-by: Justin Tobler <jtobler@gitlab.com>
Co-authored-by: John Cai <jcai@gitlab.com>
-rw-r--r-- | internal/gitaly/service/ref/delete_refs.go | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/internal/gitaly/service/ref/delete_refs.go b/internal/gitaly/service/ref/delete_refs.go index f8d7a7f03..0e92ffc84 100644 --- a/internal/gitaly/service/ref/delete_refs.go +++ b/internal/gitaly/service/ref/delete_refs.go @@ -83,24 +83,27 @@ func (s *server) DeleteRefs(ctx context.Context, in *gitalypb.DeleteRefsRequest) } if err := updater.Prepare(); err != nil { - var errAlreadyLocked *updateref.ErrAlreadyLocked - if featureflag.DeleteRefsStructuredErrors.IsEnabled(ctx) && - errors.As(err, &errAlreadyLocked) { - detailedErr, err := helper.ErrWithDetails( - helper.ErrFailedPreconditionf("cannot lock references"), - &gitalypb.DeleteRefsError{ - Error: &gitalypb.DeleteRefsError_ReferencesLocked{ - ReferencesLocked: &gitalypb.ReferencesLockedError{ - Refs: [][]byte{[]byte(errAlreadyLocked.Ref)}, + if featureflag.DeleteRefsStructuredErrors.IsEnabled(ctx) { + var errAlreadyLocked *updateref.ErrAlreadyLocked + if errors.As(err, &errAlreadyLocked) { + detailedErr, err := helper.ErrWithDetails( + helper.ErrFailedPreconditionf("cannot lock references"), + &gitalypb.DeleteRefsError{ + Error: &gitalypb.DeleteRefsError_ReferencesLocked{ + ReferencesLocked: &gitalypb.ReferencesLockedError{ + Refs: [][]byte{[]byte(errAlreadyLocked.Ref)}, + }, }, }, - }, - ) - if err != nil { - return nil, helper.ErrInternalf("error details: %w", err) + ) + if err != nil { + return nil, helper.ErrInternalf("error details: %w", err) + } + + return nil, detailedErr } - return nil, detailedErr + return nil, helper.ErrInternalf("unable to prepare: %w", err) } return &gitalypb.DeleteRefsResponse{ |