Skip to content

Commit 87b996e

Browse files
authored
Merge pull request #39 from 0xDEC0DE/issue/15
fix: only increment the `current_concurrency` counter if the job has `max_concurrency` set
2 parents 3e4df65 + a3bbea7 commit 87b996e

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

spinach/brokers/redis_scripts/get_jobs_from_queue.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ repeat
3333
-- track the running job
3434
redis.call('hset', running_jobs_key, job["id"], job_json)
3535
-- If tracking concurrency, bump the current value.
36-
if max_concurrency ~= -1 then
36+
if max_concurrency ~= nil and max_concurrency ~= -1 then
3737
redis.call('hincrby', current_concurrency_key, job['task_name'], 1)
3838
end
3939

tests/test_redis_brokers.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,21 @@ def test_cant_exceed_max_concurrency(broker):
187187
assert json.loads(queued.decode())['id'] == str(job2.id)
188188

189189

190+
def test_does_not_set_concurrency_key_when_no_max_concurrency(broker):
191+
job = Job(
192+
CONCURRENT_TASK_NAME, 'foo_queue', datetime.now(timezone.utc), 1,
193+
# kwargs help with debugging but are not part of the test.
194+
task_kwargs=dict(name='job'),
195+
)
196+
broker.enqueue_jobs([job])
197+
returned_jobs = broker.get_jobs_from_queue('foo_queue', 2)
198+
assert returned_jobs[0].task_kwargs == dict(name='job')
199+
current = broker._r.hget(
200+
broker._to_namespaced(CURRENT_CONCURRENCY_KEY), CONCURRENT_TASK_NAME
201+
)
202+
assert current is None
203+
204+
190205
def test_get_jobs_from_queue_returns_all_requested(broker):
191206
# If a job is not returned because it was over concurrency limits,
192207
# make sure the number of jobs requested is filled from other jobs

0 commit comments

Comments
 (0)