commit: ae877f2658707759fa0d24a668a72ea68cedd078
Author: Florian Schmaus <flow <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 12 20:06:12 2025 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Dec 13 10:46:27 2025 +0000
URL: https://gitweb.gentoo.org/proj/steve.git/commit/?id=ae877f26
Hand out a token if min_jobs is not satisfied even if recheck is pending
Avoid delaying a job due to recheck_triggered being pending by moving
the min_jobs check above the recheck_triggered check (but below the
per-process limit check).
Signed-off-by: Florian Schmaus <flow <AT> gentoo.org>
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
steve.cxx | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/steve.cxx b/steve.cxx
index 29f58e4..883acd2 100644
--- a/steve.cxx
+++ b/steve.cxx
@@ -175,6 +175,9 @@ static steve_token_availability
steve_can_give_token(steve_state *state, uint64_
/* if the per-process limit is reached, do not provide a token */
if (state->per_process_limit > 0 && state->processes[pid].tokens_held
>= state->per_process_limit)
return steve_token_availability::per_process_limit_exceeded;
+ /* if min_jobs is not satisifed, we always give out a token */
+ if (state->jobs < state->min_jobs + state->tokens)
+ return steve_token_availability::available;
/* if we have been throttled due to load, wait for it to time out */
if (state->recheck_triggered) {
assert(state->tokens > 0);
@@ -184,8 +187,6 @@ static steve_token_availability
steve_can_give_token(steve_state *state, uint64_
if (state->tokens <= 0)
return steve_token_availability::no_tokens;
if (state->max_load_avg > 0) {
- if (state->jobs < state->min_jobs + state->tokens)
- return steve_token_availability::available;
steve_get_load(state);
if (state->load_avg > state->max_load_avg) {
/* trigger a recheck if we don't have one now */