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 */

Reply via email to