=== modified file 'duplicity/util.py' --- duplicity/util.py 2011-08-23 18:14:17 +0000 +++ duplicity/util.py 2012-01-20 21:50:01 +0000 @@ -71,6 +71,10 @@ else: raise +class BlackHoleList(list): + def append(self, x): + pass + class FakeTarFile: debug = 0 def __iter__(self): @@ -83,7 +87,12 @@ # yet. So we want to ignore ReadError exceptions, which are used to signal # this. try: - return tarfile.TarFile("arbitrary", mode, fp) + tf = tarfile.TarFile("arbitrary", mode, fp) + # Now we cause TarFile to not cache TarInfo objects. It would end up + # consuming a lot of memory over the lifetime of our long-lasting + # signature files otherwise. + tf.members = BlackHoleList() + return tf except tarfile.ReadError: return FakeTarFile()