mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-10 15:28:34 +01:00
lock: print msg if dvc is busy
Signed-off-by: Ruslan Kuprieiev <[email protected]>
This commit is contained in:
@@ -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
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user