Skip to content

Commit abf28cf

Browse files
committed
fix(helpers): fix the priority order of fallback rate limit
Priority order fixed for fallback rate limit, priority order is: 1.Env variable 2.Value set with `WithFallbackRateLimit` 3.default value in the code This all works only when the `getRateRemaining` fails: hence the fallback
1 parent 0bee5db commit abf28cf

1 file changed

Lines changed: 15 additions & 15 deletions

File tree

backend/helpers/pluginhelper/api/graphql_async_client.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,13 @@ func CreateAsyncGraphqlClient(
6666
) (*GraphqlAsyncClient, errors.Error) {
6767
ctxWithCancel, cancel := context.WithCancel(taskCtx.GetContext())
6868

69-
rateLimit := resolveRateLimit(taskCtx, logger)
70-
7169
graphqlAsyncClient := &GraphqlAsyncClient{
7270
ctx: ctxWithCancel,
7371
cancel: cancel,
7472
client: graphqlClient,
7573
logger: logger,
7674
rateExhaustCond: sync.NewCond(&sync.Mutex{}),
77-
rateRemaining: rateLimit,
75+
rateRemaining: defaultRateLimitConst,
7876
getRateRemaining: getRateRemaining,
7977
}
8078

@@ -83,6 +81,12 @@ func CreateAsyncGraphqlClient(
8381
opt(graphqlAsyncClient)
8482
}
8583

84+
// Env config wins over everything, only if explicitly set
85+
if rateLimit := resolveRateLimit(taskCtx, logger); rateLimit != -1 {
86+
logger.Info("GRAPHQL_RATE_LIMIT env override applied: %d (was %d)", rateLimit, graphqlAsyncClient.rateRemaining)
87+
graphqlAsyncClient.rateRemaining = rateLimit
88+
}
89+
8690
if getRateRemaining != nil {
8791
rateRemaining, resetAt, err := getRateRemaining(taskCtx.GetContext(), graphqlClient, logger)
8892
if err != nil {
@@ -258,17 +262,13 @@ func WithFallbackRateLimit(limit int) GraphqlClientOption {
258262
}
259263
}
260264

261-
// resolveRateLimit determines the rate limit for GraphQL requests using task configuration -> else default constant.
265+
// resolveRateLimit returns -1 if GRAPHQL_RATE_LIMIT is not set or invalid
262266
func resolveRateLimit(taskCtx plugin.TaskContext, logger log.Logger) int {
263-
rateLimit := defaultRateLimitConst
264-
265-
if v := taskCtx.GetConfig("GRAPHQL_RATE_LIMIT"); v != "" {
266-
if parsed, err := strconv.Atoi(v); err == nil {
267-
rateLimit = parsed
268-
} else {
269-
logger.Warn(err, "invalid GRAPHQL_RATE_LIMIT, using default")
270-
}
271-
}
272-
273-
return rateLimit
267+
if v := taskCtx.GetConfig("GRAPHQL_RATE_LIMIT"); v != "" {
268+
if parsed, err := strconv.Atoi(v); err == nil {
269+
return parsed
270+
}
271+
logger.Warn(nil, "invalid GRAPHQL_RATE_LIMIT, using default")
272+
}
273+
return -1
274274
}

0 commit comments

Comments
 (0)