Skip to content

Commit 52a7632

Browse files
cbellot000Camille Bellot
andauthored
Fix server shutdown (#1514)
* Fix server shutdown * Update src/ansys/dpf/core/server_types.py * Update src/ansys/dpf/core/server_types.py --------- Co-authored-by: Camille Bellot <[email protected]>
1 parent a8430fc commit 52a7632

File tree

2 files changed

+22
-23
lines changed

2 files changed

+22
-23
lines changed

src/ansys/dpf/core/server_types.py

Lines changed: 13 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,7 @@ def __init__(self):
382382
self._session_instance = None
383383
self._base_service_instance = None
384384
self._context = None
385+
self._info_instance = None
385386
self._docker_config = server_factory.RunningDockerConfig()
386387

387388
def set_as_global(self, as_global=True):
@@ -431,9 +432,10 @@ def info(self):
431432
``"server_port"``, ``"server_process_id"``, ``"server_version"`` , ``"os"``
432433
and ``"path"`` keys.
433434
"""
434-
server_info = self._base_service.server_info
435-
server_info["path"] = self.ansys_path
436-
return server_info
435+
if not self._info_instance:
436+
self._info_instance = self._base_service.server_info
437+
self._info_instance["path"] = self.ansys_path
438+
return self._info_instance
437439

438440
def _del_session(self):
439441
if self._session_instance:
@@ -782,6 +784,7 @@ def _create_shutdown_funcs(self):
782784

783785
def shutdown(self):
784786
if self.live:
787+
_ = self.info # initializing the info variable (giving access to ip and port): this can be required if start_local_server is called afterwards
785788
if self._remote_instance:
786789
self._remote_instance.delete()
787790
try:
@@ -827,10 +830,7 @@ def ip(self):
827830
-------
828831
ip : str
829832
"""
830-
try:
831-
return self.info["server_ip"]
832-
except:
833-
return ""
833+
return self.info["server_ip"]
834834

835835
@property
836836
def port(self):
@@ -840,10 +840,7 @@ def port(self):
840840
-------
841841
port : int
842842
"""
843-
try:
844-
return self.info["server_port"]
845-
except:
846-
return 0
843+
return self.info["server_port"]
847844

848845
@property
849846
def external_ip(self):
@@ -1034,8 +1031,6 @@ def __init__(
10341031

10351032
self.live = False
10361033
super().__init__()
1037-
1038-
self._info_instance = None
10391034
self._own_process = launch_server
10401035
self._local_server = False
10411036
self._stubs = {}
@@ -1134,10 +1129,7 @@ def ip(self):
11341129
-------
11351130
ip : str
11361131
"""
1137-
try:
1138-
return self.info["server_ip"]
1139-
except:
1140-
return ""
1132+
return self.info["server_ip"]
11411133

11421134
@property
11431135
def port(self):
@@ -1147,10 +1139,7 @@ def port(self):
11471139
-------
11481140
port : int
11491141
"""
1150-
try:
1151-
return self.info["server_port"]
1152-
except:
1153-
return 0
1142+
return self.info["server_port"]
11541143

11551144
@property
11561145
def external_ip(self):
@@ -1221,14 +1210,15 @@ def local_server(self, val):
12211210

12221211
def shutdown(self):
12231212
if self._own_process and self.live:
1213+
_ = self.info # initializing the info variable (giving access to ip and port): this can be required if start_local_server is called afterwards
1214+
if self._remote_instance:
1215+
self._remote_instance.delete()
12241216
try:
12251217
if hasattr(self, "_preparing_shutdown_func"):
12261218
self._preparing_shutdown_func[0](self._preparing_shutdown_func[1])
12271219
except Exception as e:
12281220
warnings.warn("couldn't prepare shutdown: " + str(e.args))
12291221

1230-
if self._remote_instance:
1231-
self._remote_instance.delete()
12321222
else:
12331223
try:
12341224
if hasattr(self, "_shutdown_func"):

tests/test_server.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,15 @@ def test_shutdown_all_session_servers(self, server_config):
103103
shutdown_all_session_servers()
104104
assert not has_local_server()
105105

106+
def test_start_shutdown_start(self, server_config):
107+
set_server_configuration(server_config)
108+
# print(dpf.core.SERVER_CONFIGURATION)
109+
server = start_local_server(timeout=20)
110+
server.shutdown()
111+
server = start_local_server(timeout=20)
112+
assert has_local_server()
113+
shutdown_all_session_servers()
114+
106115

107116
@pytest.mark.parametrize("server_config", server_configs)
108117
class TestServer:

0 commit comments

Comments
 (0)