Skip to content

Commit 987019c

Browse files
fix
1 parent 71ba6aa commit 987019c

1 file changed

Lines changed: 6 additions & 7 deletions

File tree

src/qless-core/qless.lua

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1603,7 +1603,7 @@ function QlessQueue:put(now, worker, jid, klass, raw_data, delay, ...)
16031603
}
16041604
if options['backoff'] then
16051605
table.insert(job_fields, 'backoff')
1606-
table.insert(job_fields, cjson.encode(options['backoff']))
1606+
table.insert(job_fields, options['backoff'])
16071607
end
16081608
redis.call('hmset', QlessJob.ns .. jid, unpack(job_fields))
16091609

@@ -1963,7 +1963,7 @@ function QlessQueue:invalidate_locks(now, count)
19631963
redis.call('zadd', 'ql:failed-jobs-list', now, jid)
19641964
clearOldFailedJobs(now)
19651965
else
1966-
local backoff_json = redis.call('hget', Qless.ns .. jid, 'backoff')
1966+
local backoff_json = redis.call('hget', QlessJob.ns .. jid, 'backoff')
19671967
local backoff_config = {}
19681968
if backoff_json then
19691969
backoff_config = cjson.decode(backoff_json)
@@ -1980,12 +1980,11 @@ function QlessQueue:invalidate_locks(now, count)
19801980
if initial_delay == 0 then
19811981
table.insert(jids, jid)
19821982
else
1983-
local job = Qless.job(jid)
1984-
local job_history = job:history()
1985-
local retry_count = #job_history - 1
1986-
if retry_count < 0 then retry_count = 0 end
1983+
local total_retries = tonumber(redis.call('hget', QlessJob.ns .. jid, 'retries') or 5)
1984+
local retries_left = tonumber(redis.call('hget', QlessJob.ns .. jid, 'remaining') or total_retries)
19871985

1988-
local delay = initial_delay * (backoff_factor ^ retry_count)
1986+
local attempt_index = total_retries - retries_left
1987+
local delay = initial_delay * (backoff_factor ^ attempt_index)
19891988

19901989
self.locks.remove(jid)
19911990
self.scheduled.add(now + delay, jid)

0 commit comments

Comments
 (0)