diff options
author | Lars Wirzenius <liw@liw.fi> | 2015-05-22 20:28:56 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2015-05-23 14:45:01 +0300 |
commit | 5cf2bbaf3fcf712436fe669a8453f007ffae680b (patch) | |
tree | 815781ee2308a9da659ff0bde908e656048b76b9 | |
parent | 6c30797e43ce33f3de6103f4d9baa627c59c7b8c (diff) | |
download | obnam-5cf2bbaf3fcf712436fe669a8453f007ffae680b.tar.gz |
Drop separate per-client locked flag
-rw-r--r-- | obnamlib/fmt_6/repo_fmt_6.py | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/obnamlib/fmt_6/repo_fmt_6.py b/obnamlib/fmt_6/repo_fmt_6.py index 7033b342..e292718e 100644 --- a/obnamlib/fmt_6/repo_fmt_6.py +++ b/obnamlib/fmt_6/repo_fmt_6.py @@ -36,7 +36,6 @@ class ToplevelIsFileError(obnamlib.ObnamError): class _OpenClientInfo(object): def __init__(self, client): - self.locked = False self.client = client self.current_generation_number = None self.generations_removed = False @@ -278,8 +277,6 @@ class RepositoryFormat6(obnamlib.RepositoryInterface): # Remember that we have the lock. self._open_client(client_name) # Ensure client is open - open_client_info = self._open_client_infos[client_name] - open_client_info.locked = True def _raw_unlock_client(self, client_name): tracing.trace('client_name=%s', client_name) @@ -289,8 +286,9 @@ class RepositoryFormat6(obnamlib.RepositoryInterface): def client_is_locked(self, client_name): logging.info('Checking if %s is locked' % client_name) - client = self._open_client(client_name) - return self._lockmgr.is_locked(client.dirname) + client_id = self._get_client_id(client_name) + client_dir = self._get_client_dir(client_id) + return self._lockmgr.is_locked(client_dir) def lock_client(self, client_name): logging.info('Locking client %s' % client_name) @@ -306,18 +304,18 @@ class RepositoryFormat6(obnamlib.RepositoryInterface): def got_client_lock(self, client_name): tracing.trace('client_name=%s', client_name) - if client_name not in self._open_client_infos: - return False - open_client_info = self._open_client_infos[client_name] - return open_client_info.locked + client_id = self._get_client_id(client_name) + client_dir = self._get_client_dir(client_id) + return self._lockmgr.got_lock(client_dir) def force_client_lock(self, client_name): logging.info('Forcing client lock open for %s', client_name) + + client_id = self._get_client_id(client_name) + client_dir = self._get_client_dir(client_id) + self._lockmgr.force([client_dir]) + self._open_client(client_name) - open_client_info = self._open_client_infos[client_name] - lock_name = os.path.join(open_client_info.client.dirname, 'lock') - if self._real_fs.exists(lock_name): - self._real_fs.remove(lock_name) del self._open_client_infos[client_name] self._setup_file_key_cache() |