lock: print msg if dvc is busy

Signed-off-by: Ruslan Kuprieiev <[email protected]>
This commit is contained in:
Ruslan Kuprieiev
2018-01-14 22:20:06 +02:00
parent e9c86a87f6
commit b0ecbdb517
2 changed files with 14 additions and 2 deletions
+6 -1
View File
@@ -3,6 +3,7 @@ import os
from dvc.project import Project
from dvc.logger import Logger
from dvc.exceptions import DvcException
from dvc.lock import LockError
class CmdBase(object):
@@ -26,8 +27,12 @@ class CmdBase(object):
raise DvcException(msg.format(root))
def run_cmd(self):
with self.project.lock:
try:
with self.project.lock:
return self.run()
except LockError as ex:
self.project.logger.error(str(ex))
return 1
# Abstract methods that have to be implemented by any inheritance class
def run(self):
+8 -1
View File
@@ -1,5 +1,11 @@
import os
import fasteners
from dvc.exceptions import DvcException
class LockError(DvcException):
pass
class Lock(object):
LOCK_FILE = 'lock'
@@ -14,7 +20,8 @@ class Lock(object):
return Lock(dvc_dir)
def lock(self):
self._lock.acquire(timeout=self.TIMEOUT)
if not self._lock.acquire(timeout=self.TIMEOUT):
raise LockError('Cannot perform the cmd since DVC is busy and locked. Please retry the cmd later.')
def unlock(self):
self._lock.release()