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/command/spawntoken.go')
-rw-r--r--internal/command/spawntoken.go15
1 files changed, 11 insertions, 4 deletions
diff --git a/internal/command/spawntoken.go b/internal/command/spawntoken.go
index bdc4d664c..2b0065bf5 100644
--- a/internal/command/spawntoken.go
+++ b/internal/command/spawntoken.go
@@ -8,7 +8,10 @@ import (
"github.com/kelseyhightower/envconfig"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/internal/tracing"
+ "gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
+ "google.golang.org/protobuf/types/known/durationpb"
)
var (
@@ -60,22 +63,26 @@ func getSpawnToken(ctx context.Context) (putToken func(), err error) {
select {
case spawnTokens <- struct{}{}:
- logTime(ctx, start, "")
+ recordTime(ctx, start, "")
return func() {
<-spawnTokens
}, nil
case <-time.After(spawnConfig.Timeout):
- logTime(ctx, start, "spawn token timeout")
+ recordTime(ctx, start, "spawn token timeout")
spawnTimeoutCount.Inc()
- return nil, fmt.Errorf("process spawn timed out after %v", spawnConfig.Timeout)
+ msg := fmt.Sprintf("process spawn timed out after %v", spawnConfig.Timeout)
+ return nil, structerr.NewResourceExhausted(msg).WithDetail(&gitalypb.LimitError{
+ ErrorMessage: msg,
+ RetryAfter: durationpb.New(0),
+ })
case <-ctx.Done():
return nil, ctx.Err()
}
}
-func logTime(ctx context.Context, start time.Time, msg string) {
+func recordTime(ctx context.Context, start time.Time, msg string) {
delta := time.Since(start)
if stats := StatsFromContext(ctx); stats != nil {