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:
authorJustin Tobler <jtobler@gitlab.com>2022-10-06 02:22:04 +0300
committerJustin Tobler <jtobler@gitlab.com>2022-10-06 02:22:04 +0300
commit99b5528b66b23c1a8399027ecdef306267e668ae (patch)
tree8742919401bba32fc1bc9fcad787a42446b7787c
parent847af5af1cb914da74f3f9c5f3e774237ab10e14 (diff)
parent80d62284b148521cd0377b40aaae4aee81f0db62 (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.go31
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{