remove leaking references in cached failures

This commit is contained in:
Daniel Graña 2012-02-23 17:40:32 -02:00
parent 11133e9fb9
commit 673a120e99
1 changed files with 6 additions and 0 deletions

View File

@ -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):