mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-02 07:18:25 +01:00
exp: ensure repo instance is closed after executor.reproduce
This commit is contained in:
committed by
Peter Rowlands (변기호)
parent
2b41305c51
commit
d2c63bffcb
@@ -547,55 +547,54 @@ class BaseExecutor(ABC):
|
|||||||
from dvc.repo import Repo
|
from dvc.repo import Repo
|
||||||
from dvc.stage.monitor import CheckpointKilledError
|
from dvc.stage.monitor import CheckpointKilledError
|
||||||
|
|
||||||
dvc = Repo(os.path.join(info.root_dir, info.dvc_dir))
|
with Repo(os.path.join(info.root_dir, info.dvc_dir)) as dvc:
|
||||||
info.status = TaskStatus.RUNNING
|
info.status = TaskStatus.RUNNING
|
||||||
if infofile is not None:
|
|
||||||
info.dump_json(infofile)
|
|
||||||
if cls.QUIET:
|
|
||||||
dvc.scm_context.quiet = cls.QUIET
|
|
||||||
old_cwd = os.getcwd()
|
|
||||||
if info.wdir:
|
|
||||||
os.chdir(os.path.join(dvc.scm.root_dir, info.wdir))
|
|
||||||
else:
|
|
||||||
os.chdir(dvc.root_dir)
|
|
||||||
|
|
||||||
try:
|
|
||||||
post_live_metrics(
|
|
||||||
"start",
|
|
||||||
info.baseline_rev,
|
|
||||||
info.name,
|
|
||||||
"dvc",
|
|
||||||
params=to_studio_params(dvc.params.show()),
|
|
||||||
)
|
|
||||||
logger.debug("Running repro in '%s'", os.getcwd())
|
|
||||||
yield dvc
|
|
||||||
info.status = TaskStatus.SUCCESS
|
|
||||||
except CheckpointKilledError:
|
|
||||||
info.status = TaskStatus.FAILED
|
|
||||||
raise
|
|
||||||
except DvcException:
|
|
||||||
if log_errors:
|
|
||||||
logger.exception("")
|
|
||||||
info.status = TaskStatus.FAILED
|
|
||||||
raise
|
|
||||||
except Exception:
|
|
||||||
if log_errors:
|
|
||||||
logger.exception("unexpected error")
|
|
||||||
info.status = TaskStatus.FAILED
|
|
||||||
raise
|
|
||||||
finally:
|
|
||||||
post_live_metrics(
|
|
||||||
"done",
|
|
||||||
info.baseline_rev,
|
|
||||||
info.name,
|
|
||||||
"dvc",
|
|
||||||
experiment_rev=dvc.experiments.scm.get_ref(EXEC_BRANCH),
|
|
||||||
)
|
|
||||||
|
|
||||||
if infofile is not None:
|
if infofile is not None:
|
||||||
info.dump_json(infofile)
|
info.dump_json(infofile)
|
||||||
dvc.close()
|
if cls.QUIET:
|
||||||
os.chdir(old_cwd)
|
dvc.scm_context.quiet = cls.QUIET
|
||||||
|
old_cwd = os.getcwd()
|
||||||
|
if info.wdir:
|
||||||
|
os.chdir(os.path.join(dvc.scm.root_dir, info.wdir))
|
||||||
|
else:
|
||||||
|
os.chdir(dvc.root_dir)
|
||||||
|
|
||||||
|
try:
|
||||||
|
post_live_metrics(
|
||||||
|
"start",
|
||||||
|
info.baseline_rev,
|
||||||
|
info.name,
|
||||||
|
"dvc",
|
||||||
|
params=to_studio_params(dvc.params.show()),
|
||||||
|
)
|
||||||
|
logger.debug("Running repro in '%s'", os.getcwd())
|
||||||
|
yield dvc
|
||||||
|
info.status = TaskStatus.SUCCESS
|
||||||
|
except CheckpointKilledError:
|
||||||
|
info.status = TaskStatus.FAILED
|
||||||
|
raise
|
||||||
|
except DvcException:
|
||||||
|
if log_errors:
|
||||||
|
logger.exception("")
|
||||||
|
info.status = TaskStatus.FAILED
|
||||||
|
raise
|
||||||
|
except Exception:
|
||||||
|
if log_errors:
|
||||||
|
logger.exception("unexpected error")
|
||||||
|
info.status = TaskStatus.FAILED
|
||||||
|
raise
|
||||||
|
finally:
|
||||||
|
post_live_metrics(
|
||||||
|
"done",
|
||||||
|
info.baseline_rev,
|
||||||
|
info.name,
|
||||||
|
"dvc",
|
||||||
|
experiment_rev=dvc.experiments.scm.get_ref(EXEC_BRANCH),
|
||||||
|
)
|
||||||
|
|
||||||
|
if infofile is not None:
|
||||||
|
info.dump_json(infofile)
|
||||||
|
os.chdir(old_cwd)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _repro_args(cls, dvc):
|
def _repro_args(cls, dvc):
|
||||||
|
|||||||
Reference in New Issue
Block a user