use the RepositoryCache context manager also in fuse code

This commit is contained in:
Thomas Waldmann 2016-01-17 00:28:54 +01:00
parent 4d73f3cdb9
commit 5ec2a3a49b
2 changed files with 16 additions and 17 deletions

View File

@ -30,7 +30,7 @@ from .repository import Repository
from .cache import Cache from .cache import Cache
from .key import key_creator from .key import key_creator
from .archive import Archive, ArchiveChecker, CHUNKER_PARAMS from .archive import Archive, ArchiveChecker, CHUNKER_PARAMS
from .remote import RepositoryServer, RemoteRepository from .remote import RepositoryServer, RemoteRepository, cache_if_remote
has_lchflags = hasattr(os, 'lchflags') has_lchflags = hasattr(os, 'lchflags')
@ -380,12 +380,13 @@ class Archiver:
repository = self.open_repository(args) repository = self.open_repository(args)
try: try:
with cache_if_remote(repository) as cached_repo:
manifest, key = Manifest.load(repository) manifest, key = Manifest.load(repository)
if args.location.archive: if args.location.archive:
archive = Archive(repository, key, manifest, args.location.archive) archive = Archive(repository, key, manifest, args.location.archive)
else: else:
archive = None archive = None
operations = FuseOperations(key, repository, manifest, archive) operations = FuseOperations(key, repository, manifest, archive, cached_repo)
logger.info("Mounting filesystem") logger.info("Mounting filesystem")
try: try:
operations.mount(args.mountpoint, args.options, args.foreground) operations.mount(args.mountpoint, args.options, args.foreground)

View File

@ -8,7 +8,6 @@ import tempfile
import time import time
from .archive import Archive from .archive import Archive
from .helpers import daemonize from .helpers import daemonize
from .remote import cache_if_remote
import msgpack import msgpack
@ -34,11 +33,11 @@ class ItemCache:
class FuseOperations(llfuse.Operations): class FuseOperations(llfuse.Operations):
"""Export archive as a fuse filesystem """Export archive as a fuse filesystem
""" """
def __init__(self, key, repository, manifest, archive): def __init__(self, key, repository, manifest, archive, cached_repo):
super().__init__() super().__init__()
self._inode_count = 0 self._inode_count = 0
self.key = key self.key = key
self.repository = cache_if_remote(repository) self.repository = cached_repo
self.items = {} self.items = {}
self.parent = {} self.parent = {}
self.contents = defaultdict(dict) self.contents = defaultdict(dict)
@ -238,4 +237,3 @@ class FuseOperations(llfuse.Operations):
llfuse.main(single=True) llfuse.main(single=True)
finally: finally:
llfuse.close() llfuse.close()
self.repository.close()