mirror of https://github.com/rq/rq.git
Fixed wrong keys used to WATCH dependencies (#1605)
This bug has opened a lot of possible race-conditions, since the watch-logic from redis did not fail anymore, if dependencies have been changed in parallel.
This commit is contained in:
parent
db445f96b2
commit
c5a1ef1734
|
@ -485,7 +485,8 @@ class Job:
|
|||
connection = pipeline if pipeline is not None else self.connection
|
||||
|
||||
if watch and self._dependency_ids:
|
||||
connection.watch(*self._dependency_ids)
|
||||
connection.watch(*[self.key_for(dependency_id)
|
||||
for dependency_id in self._dependency_ids])
|
||||
|
||||
jobs = [job
|
||||
for job in self.fetch_many(self._dependency_ids, connection=self.connection, serializer=self.serializer)
|
||||
|
@ -970,7 +971,8 @@ class Job:
|
|||
connection = pipeline if pipeline is not None else self.connection
|
||||
|
||||
if pipeline is not None:
|
||||
connection.watch(*self.dependency_ids)
|
||||
connection.watch(*[self.key_for(dependency_id)
|
||||
for dependency_id in self._dependency_ids])
|
||||
|
||||
dependencies_ids = {_id.decode()
|
||||
for _id in connection.smembers(self.dependencies_key)}
|
||||
|
|
|
@ -998,7 +998,7 @@ class TestJob(RQTestCase):
|
|||
pipeline.multi()
|
||||
|
||||
with self.assertRaises(WatchError):
|
||||
self.testconn.set(dependency_job.id, 'somethingelsehappened')
|
||||
self.testconn.set(Job.key_for(dependency_job.id), 'somethingelsehappened')
|
||||
pipeline.touch(dependency_job.id)
|
||||
pipeline.execute()
|
||||
|
||||
|
|
Loading…
Reference in New Issue