diff --git a/server/src/uds/models/servers.py b/server/src/uds/models/servers.py index 66efc2097..27d4e8534 100644 --- a/server/src/uds/models/servers.py +++ b/server/src/uds/models/servers.py @@ -291,7 +291,16 @@ def stats(self, value: typing.Optional[types.servers.ServerStats]) -> None: self.properties['stats'] = stats_dict def lock(self, duration: typing.Optional[datetime.timedelta]) -> None: - """Locks this server for a duration""" + """Locks this server for a duration + + Args: + duration: Duration to lock the server. If None, it will be unlocked + + Note: + If duration is None, the server will be unlocked + The lock time will be calculated from current time on sql server + """ + if duration is None: self.locked_until = None else: diff --git a/server/src/uds/services/PhysicalMachines/service_multi.py b/server/src/uds/services/PhysicalMachines/service_multi.py index 67626edae..fb4498731 100644 --- a/server/src/uds/services/PhysicalMachines/service_multi.py +++ b/server/src/uds/services/PhysicalMachines/service_multi.py @@ -182,19 +182,10 @@ def get_unassigned(self) -> str: for server in list_of_servers: # If not locked or lock expired if server.locked_until is None or server.locked_until < sql_now(): - # if port check enabled, check + # if port check enabled, check if self.port.value != 0: - # if we have a cache entry, and it's not None, it's because it failed the check - # not too long ago, so we skip it - if self.cache.get(f'port{server.host}'): - continue - if not net.test_connectivity(server.host, self.port.value): - self.cache.put( - f'port{server.host}', - 'failed', - self.ignore_minutes_on_failure.value * 60, - ) + server.lock(datetime.timedelta(minutes=self.ignore_minutes_on_failure.value)) self.provider().do_log( types.log.LogLevel.WARNING, f'Host {server.host} does not respond to port {self.port.value}, skipping',