diff options
author | John Arbash Meinel <john@arbash-meinel.com> | 2009-12-11 08:55:04 -0600 |
---|---|---|
committer | John Arbash Meinel <john@arbash-meinel.com> | 2009-12-11 08:55:04 -0600 |
commit | de9899249e5625c20f9287c4e36cb519eb504cf2 (patch) | |
tree | 323b44044e9951f7f4c21a2dcf9316da9a5c4c0b /cache_manager.py | |
parent | 79a478182a34c34bc983eb2474e002909ad101d6 (diff) | |
parent | 5ff6d451b0f69149b4fba0e98abdfbc8c584fa79 (diff) | |
download | bzr-fastimport-de9899249e5625c20f9287c4e36cb519eb504cf2.tar.gz |
Switch to using CommitBuilder
Rather than holding most of the logic ourselves.
Diffstat (limited to 'cache_manager.py')
-rw-r--r-- | cache_manager.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/cache_manager.py b/cache_manager.py index f998b66..464403f 100644 --- a/cache_manager.py +++ b/cache_manager.py @@ -54,6 +54,34 @@ class _Cleanup(object): shutils.rmtree(self.tempdir) + +class _Cleanup(object): + """This class makes sure we clean up when CacheManager goes away. + + We use a helper class to ensure that we are never in a refcycle. + """ + + def __init__(self, disk_blobs): + self.disk_blobs = disk_blobs + self.tempdir = None + self.small_blobs = None + + def __del__(self): + self.finalize() + + def finalize(self): + if self.disk_blobs is not None: + for info in self.disk_blobs.itervalues(): + if info[-1] is not None: + os.unlink(info[-1]) + self.disk_blobs = None + if self.small_blobs is not None: + self.small_blobs.close() + self.small_blobs = None + if self.tempdir is not None: + shutils.rmtree(self.tempdir) + + class CacheManager(object): _small_blob_threshold = 25*1024 |