Skip to content

Commit adb6355

Browse files
committed
Ensure QlessJob:retry emits a failed message via pubsub
When a job has exhausted all retries, attempting to retry it will now cause it to emit a pubsub message on the 'failed' channel. Closes seomoz#86
1 parent a72cf28 commit adb6355

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

job.lua

+4
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,10 @@ function QlessJob:retry(now, queue, worker, delay, group, message)
493493
}))
494494
end
495495

496+
if redis.call('zscore', 'ql:tracked', self.jid) ~= false then
497+
Qless.publish('failed', self.jid)
498+
end
499+
496500
-- Add this type of failure to the list of failures
497501
redis.call('sadd', 'ql:failures', group)
498502
-- And add this particular instance to the failed types

test/test_events.py

+15
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,21 @@ def test_failed_retries(self):
132132
'data': '{"message":"Job exhausted retries in queue \\"queue\\"","jid":"jid","group":"failed-retries-queue","event":"failed","worker":"worker"}'
133133
}])
134134

135+
def test_failed_retries_tracked(self):
136+
'''We should hear chatter when a tagged job fails from retries'''
137+
self.lua('config.set', 0, 'grace-period', 0)
138+
self.lua('put', 0, 'worker', 'queue', 'jid', 'klass', {}, 0, 'retries', 0)
139+
self.lua('track', 0, 'track', 'jid')
140+
job = self.lua('pop', 0, 'queue', 'worker', 10)[0]
141+
with self.lua:
142+
self.assertEqual(self.lua(
143+
'retry', 0, 'jid', 'queue', 'worker', 0, 'group', 'message'), -1)
144+
self.assertEqual(self.lua('get', 0, 'jid')['state'], 'failed')
145+
self.assertEqual(self.lua.log, [{
146+
'channel': 'ql:failed',
147+
'data': 'jid'
148+
}])
149+
135150
def test_advance(self):
136151
'''We should hear chatter when completing and advancing a job'''
137152
self.lua('put', 0, 'worker', 'queue', 'jid', 'klass', {}, 0)

0 commit comments

Comments
 (0)