Skip to content

Commit b833c3c

Browse files
fix: using cached version for remove lock on exit (#3709)
* feat: using cached for removing lock file when exiting * test: adding tests * chore: adding changelog file 3709.fixed.md [dependabot-skip] * fix: vulnerabilities warning * fix: warnings import * chore: revert "fix: warnings import" This reverts commit 5593e6b. * fix: warnings import --------- Co-authored-by: pyansys-ci-bot <[email protected]>
1 parent f8ef9d6 commit b833c3c

File tree

3 files changed

+26
-5
lines changed

3 files changed

+26
-5
lines changed

doc/changelog.d/3709.fixed.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
fix: using cached version for remove lock on exit

src/ansys/mapdl/core/mapdl_grpc.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1197,7 +1197,7 @@ def _exit_mapdl(self, path: str = None) -> None:
11971197

11981198
self._close_process()
11991199

1200-
self._remove_lock_file(path)
1200+
self._remove_lock_file(path, use_cached=True)
12011201
else:
12021202
self._exit_mapdl_server()
12031203

@@ -1360,17 +1360,24 @@ def _cache_pids(self):
13601360

13611361
self._log.debug(f"Recaching PIDs: {self._pids}")
13621362

1363-
def _remove_lock_file(self, mapdl_path=None):
1363+
def _remove_lock_file(
1364+
self, mapdl_path: str = None, jobname: str = None, use_cached: bool = False
1365+
):
13641366
"""Removes the lock file.
13651367
13661368
Necessary to call this as a segfault of MAPDL or exit(0) will
13671369
not remove the lock file.
13681370
"""
1371+
if jobname is None and use_cached:
1372+
jobname = self._jobname
1373+
elif jobname is None:
1374+
jobname = self.jobname
1375+
13691376
self._log.debug("Removing lock file after exit.")
13701377
if mapdl_path is None: # pragma: no cover
13711378
mapdl_path = self.directory
13721379
if mapdl_path:
1373-
for lockname in [self.jobname + ".lock", "file.lock"]:
1380+
for lockname in [jobname + ".lock", "file.lock"]:
13741381
lock_file = os.path.join(mapdl_path, lockname)
13751382
if os.path.isfile(lock_file):
13761383
try:
@@ -3804,6 +3811,7 @@ def kill_job(self, jobid: int) -> None:
38043811
Job ID.
38053812
"""
38063813
cmd = ["scancel", f"{jobid}"]
3814+
# to ensure the job is stopped properly, let's issue the scancel twice.
38073815
subprocess.Popen(cmd) # nosec B603
38083816

38093817
def __del__(self):

tests/test_mapdl.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1727,13 +1727,25 @@ def test_mode(mapdl, cleared):
17271727
mapdl._mode = "grpc" # Going back to default
17281728

17291729

1730-
def test_remove_lock_file(mapdl, cleared, tmpdir):
1730+
@pytest.mark.parametrize("use_cached", (True, False))
1731+
def test_remove_lock_file(mapdl, cleared, tmpdir, use_cached):
17311732
tmpdir_ = tmpdir.mkdir("ansys")
17321733
lock_file = tmpdir_.join("file.lock")
17331734
with open(lock_file, "w") as fid:
17341735
fid.write("test")
17351736

1736-
mapdl._remove_lock_file(tmpdir_)
1737+
with patch(
1738+
"ansys.mapdl.core.mapdl_grpc.MapdlGrpc.jobname", new_callable=PropertyMock
1739+
) as mock_jb:
1740+
mock_jb.return_value = mapdl._jobname
1741+
1742+
mapdl._remove_lock_file(tmpdir_, use_cached=use_cached)
1743+
1744+
if use_cached:
1745+
mock_jb.assert_not_called()
1746+
else:
1747+
mock_jb.assert_called()
1748+
17371749
assert not os.path.exists(lock_file)
17381750

17391751

0 commit comments

Comments
 (0)