Skip to content

Commit

Permalink
FIX: improved _find_free_port method (#4992)
Browse files Browse the repository at this point in the history
Co-authored-by: maxcapodi78 <Shark78>
Co-authored-by: adimaria <[email protected]>
Co-authored-by: Sébastien Morais <[email protected]>
  • Loading branch information
3 people committed Aug 8, 2024
1 parent c304025 commit 1efdda1
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 8 deletions.
13 changes: 7 additions & 6 deletions pyaedt/desktop.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ def launch_desktop_on_port():
_aedt_process_thread.start()
timeout = settings.desktop_launch_timeout
k = 0
while not _check_grpc_port(port):
while not _is_port_occupied(port):
if k > timeout: # pragma: no cover
active_s = active_sessions(student_version=student_version)
for pid in active_s:
Expand Down Expand Up @@ -196,7 +196,7 @@ def launch_aedt_in_lsf(non_graphical, port): # pragma: no cover
aedt_startup_timeout = 120
k = 0
# LSF resources are assigned. Make sure AEDT starts
while not _check_grpc_port(port, machine_name=m.group(1)):
while not _is_port_occupied(port, machine_name=m.group(1)):
if k > aedt_startup_timeout:
pyaedt_logger.error("LSF allocated resources, but AEDT was unable to start due to a timeout.")
return False, err
Expand All @@ -208,7 +208,7 @@ def launch_aedt_in_lsf(non_graphical, port): # pragma: no cover
return False, err


def _check_grpc_port(port, machine_name=""):
def _is_port_occupied(port, machine_name=""):
if not port:
return False
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
Expand Down Expand Up @@ -236,8 +236,9 @@ def _find():

while True:
new_port = _find()
if new_port not in list(active_sessions().values()):
if new_port not in list(active_sessions().values()) and new_port not in range(50051, 50070, 1):
return new_port
time.sleep(0.1)


def exception_to_desktop(ex_value, tb_data): # pragma: no cover
Expand Down Expand Up @@ -1145,13 +1146,13 @@ def _init_grpc(self, non_graphical, new_aedt_session, version, student_version,
self.port = _find_free_port()
self.logger.info("New AEDT session is starting on gRPC port %s", self.port)
new_aedt_session = True
elif new_aedt_session and not _check_grpc_port(self.port, self.machine):
elif new_aedt_session and not _is_port_occupied(self.port, self.machine):
self.logger.info("New AEDT session is starting on gRPC port %s", self.port)
elif new_aedt_session:
self.logger.warning("New Session of AEDT cannot be started on specified port because occupied.")
self.port = _find_free_port()
self.logger.info("New AEDT session is starting on gRPC port %s", self.port)
elif _check_grpc_port(self.port, self.machine):
elif _is_port_occupied(self.port, self.machine):
self.logger.info("Connecting to AEDT session on gRPC port %s", self.port)
else:
self.logger.info("AEDT session is starting on gRPC port %s", self.port)
Expand Down
4 changes: 2 additions & 2 deletions pyaedt/generic/grpc_plugin_dll_class.py
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,7 @@ def SetPyObjCalbacks(self):
self.AedtAPI.SetPyObjCalbacks(self.callbackToCreateObj, self.callbackCreateBlock, self.callbackGetObjID)

@staticmethod
def _check_grpc_port(port, machine_name=""):
def _is_port_occupied(port, machine_name=""):
s = socket.socket()
try:
if not machine_name:
Expand All @@ -350,7 +350,7 @@ def CreateAedtApplication(self, machine="", port=0, NGmode=False, alwaysNew=True
try:
self.aedt = self.AedtAPI.CreateAedtApplication(machine, port, NGmode, alwaysNew)
except Exception: # pragma: no cover
if port and self._check_grpc_port(port):
if port and self._is_port_occupied(port):
time.sleep(5) # waiting for Desktop to initialize Grpc Server
self.aedt = self.AedtAPI.CreateAedtApplication(machine, port, NGmode, alwaysNew)
if not self.aedt:
Expand Down

0 comments on commit 1efdda1

Please sign in to comment.