From 673a120e999fd308f52defc10330d1be83d7d221 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Gra=C3=B1a?= Date: Thu, 23 Feb 2012 17:40:32 -0200 Subject: [PATCH] remove leaking references in cached failures --- scrapy/contrib/pipeline/media.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scrapy/contrib/pipeline/media.py b/scrapy/contrib/pipeline/media.py index ee0320c36..cb1685c86 100644 --- a/scrapy/contrib/pipeline/media.py +++ b/scrapy/contrib/pipeline/media.py @@ -1,5 +1,6 @@ from collections import defaultdict from twisted.internet.defer import Deferred, DeferredList +from twisted.python.failure import Failure from scrapy.utils.defer import mustbe_deferred, defer_result from scrapy import log @@ -88,6 +89,11 @@ class MediaPipeline(object): return dfd def _cache_result_and_execute_waiters(self, result, fp, info): + if isinstance(result, Failure): + # minimize cached information for failure + result.cleanFailure() + result.frames = [] + result.stack = None info.downloading.remove(fp) info.downloaded[fp] = result # cache result for wad in info.waiting.pop(fp):