commit:     db4a6cec31324bfa2dae2afaa009e471659a53cd
Author:     Florian Schmaus <flow <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 13 09:16:07 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=db4a6cec

Move the per-process limit check up in the validation chain

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 37b3258..29f58e4 100644
--- a/steve.cxx
+++ b/steve.cxx
@@ -172,6 +172,9 @@ static steve_token_availability 
steve_can_give_token(steve_state *state, uint64_
        /* if there is a token reserved, we give it immediately (even if load 
is exceeded now) */
        if (state->processes[pid].token_reserved)
                return steve_token_availability::available;
+       /* 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 we have been throttled due to load, wait for it to time out */
        if (state->recheck_triggered) {
                assert(state->tokens > 0);
@@ -180,8 +183,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->per_process_limit > 0 && state->processes[pid].tokens_held 
>= state->per_process_limit)
-               return steve_token_availability::per_process_limit_exceeded;
        if (state->max_load_avg > 0) {
                if (state->jobs < state->min_jobs + state->tokens)
                        return steve_token_availability::available;

Reply via email to