summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2015-05-22 20:28:56 +0300
committerLars Wirzenius <liw@liw.fi>2015-05-23 14:45:01 +0300
commit5cf2bbaf3fcf712436fe669a8453f007ffae680b (patch)
tree815781ee2308a9da659ff0bde908e656048b76b9
parent6c30797e43ce33f3de6103f4d9baa627c59c7b8c (diff)
downloadobnam-5cf2bbaf3fcf712436fe669a8453f007ffae680b.tar.gz
Drop separate per-client locked flag
-rw-r--r--obnamlib/fmt_6/repo_fmt_6.py24
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()