From dc1d895e00228fb02a08c3788605c4f53d4e4ade Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20V=C3=A1zquez=20Acosta?= Date: Tue, 29 Jan 2019 02:26:59 -0500 Subject: [PATCH] Fix AttributeError when `sig` is not a Signature. (#5297) * Fix AttributeError when `sig` is not a Signature. Fixes #5265. Test is pending. * Don't use 'isinstance' so that Mock objects are allowed in tests. --- celery/canvas.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/celery/canvas.py b/celery/canvas.py index bc10fe3cc48..de54db7b7a9 100644 --- a/celery/canvas.py +++ b/celery/canvas.py @@ -1045,7 +1045,13 @@ def link(self, sig): return self.tasks[0].link(sig) def link_error(self, sig): - sig = sig.clone().set(immutable=True) + try: + sig = sig.clone().set(immutable=True) + except AttributeError: + # See issue #5265. I don't use isinstance because current tests + # pass a Mock object as argument. + sig['immutable'] = True + sig = Signature.from_dict(sig) return self.tasks[0].link_error(sig) def _prepared(self, tasks, partial_args, group_id, root_id, app,