From fdfcfd58e3807ceec29fc8325cdb478521b7def1 Mon Sep 17 00:00:00 2001 From: Nicolas Simonds Date: Mon, 27 Nov 2023 17:22:44 -0800 Subject: [PATCH] RedisBroker: Leave existing max_concurrency values alone Leave already-set concurrency values alone, always. Fixes: Issue #27 --- spinach/brokers/redis_scripts/set_concurrency_keys.lua | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/spinach/brokers/redis_scripts/set_concurrency_keys.lua b/spinach/brokers/redis_scripts/set_concurrency_keys.lua index b6585e3..e5e15ee 100644 --- a/spinach/brokers/redis_scripts/set_concurrency_keys.lua +++ b/spinach/brokers/redis_scripts/set_concurrency_keys.lua @@ -19,11 +19,10 @@ for i=3, #ARGV do if max_concurrency ~= -1 then new_task_names[task["name"]] = true - -- Override max_concurrency whatever it is already set to, if - -- anything. - redis.call('hset', max_concurrency_key, task["name"], max_concurrency) - -- Check to see if current_concurrency exists before initialising - -- it. + -- Check to see if concurrency keys exist before initialising them. + if redis.call('hexists', current_concurrency_key, task["name"]) == 0 then + redis.call('hset', max_concurrency_key, task["name"], max_concurrency) + end if redis.call('hexists', current_concurrency_key, task["name"]) == 0 then redis.call('hset', current_concurrency_key, task["name"], 0) end