From 5e4b830fa7cddabcc413e18d8b09a3baf7d1bd93 Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Tue, 4 Nov 2014 09:42:53 -0800 Subject: [PATCH] cdx: ensure cdx file is closed when iterator is done, since cdx files are opened per-lookup, related to #45 --- pywb/cdx/cdxsource.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/pywb/cdx/cdxsource.py b/pywb/cdx/cdxsource.py index daeedc34..ac0eaf74 100644 --- a/pywb/cdx/cdxsource.py +++ b/pywb/cdx/cdxsource.py @@ -28,8 +28,17 @@ class CDXFile(CDXSource): self.filename = filename def load_cdx(self, query): - source = open(self.filename) - return iter_range(source, query.key, query.end_key) + def do_open(): + try: + source = open(self.filename) + gen = iter_range(source, query.key, query.end_key) + for line in gen: + yield line + finally: + source.close() + + return do_open() + #return iter_range(do_open(), query.key, query.end_key) def __str__(self): return 'CDX File - ' + self.filename