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:
Diffstat (limited to 'internal/middleware/limithandler/rate_limiter.go')
-rw-r--r--internal/middleware/limithandler/rate_limiter.go14
1 files changed, 13 insertions, 1 deletions
diff --git a/internal/middleware/limithandler/rate_limiter.go b/internal/middleware/limithandler/rate_limiter.go
index f47bb5409..241546a68 100644
--- a/internal/middleware/limithandler/rate_limiter.go
+++ b/internal/middleware/limithandler/rate_limiter.go
@@ -10,6 +10,7 @@ import (
"gitlab.com/gitlab-org/gitaly/v14/internal/gitaly/config"
"gitlab.com/gitlab-org/gitaly/v14/internal/helper"
"gitlab.com/gitlab-org/gitaly/v14/internal/metadata/featureflag"
+ "gitlab.com/gitlab-org/gitaly/v14/proto/go/gitalypb"
"golang.org/x/time/rate"
)
@@ -37,7 +38,18 @@ func (r *RateLimiter) Limit(ctx context.Context, lockKey string, f LimitedFunc)
// of traffic.
r.requestsDroppedMetric.Inc()
if featureflag.RateLimit.IsEnabled(ctx) {
- return nil, helper.ErrUnavailable(errors.New("too many requests"))
+ detailedErr, err := helper.ErrWithDetails(
+ helper.ErrResourceExhausted(errors.New("too many requests")),
+ &gitalypb.SystemResourceError{
+ ErrorMessage: "too many requests",
+ Retryable: false,
+ },
+ )
+ if err != nil {
+ return nil, helper.ErrInternalf("error details: %w", err)
+ }
+
+ return nil, detailedErr
}
}