From eea6ccb48f27d6b7f2592a2daca47827a2e80491 Mon Sep 17 00:00:00 2001 From: vitor-aignosi Date: Thu, 23 Oct 2025 11:52:00 -0300 Subject: [PATCH] Refactor OPC manager shutdown logic for improved reliability Updated the IngestorManager class to ensure that OPC managers are properly shut down and removed from the management list when servers are lost or removed. This change enhances the integrity checks for OPC server management by ensuring asynchronous handling of shutdown operations. --- ingestor/managers/ingestor_manager.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/ingestor/managers/ingestor_manager.py b/ingestor/managers/ingestor_manager.py index f82116c..bc4e094 100644 --- a/ingestor/managers/ingestor_manager.py +++ b/ingestor/managers/ingestor_manager.py @@ -243,10 +243,12 @@ class IngestorManager(BaseActivity): f'Failed to initialize OPC manager for server {server}, ' f'removing server from managed tags.' ) - _a = [ + + for slot, _value in current_managed_tags.items(): + if server in self.opc_managers: + await self.opc_managers[server].shutdown() + del self.opc_managers[server] self.managed_tags[slot].pop(server, None) - for slot, _value in current_managed_tags.items() - ] servers = list(self.opc_managers.keys()) for server in servers: @@ -282,7 +284,9 @@ class IngestorManager(BaseActivity): self.logger.warning(f'OPC server {server} is lost. Server will be disconnected.') for slot, _config in self.managed_tags.items(): - await self.managed_tags[slot][server].shutdown() + if server in self.opc_managers: + await self.opc_managers[server].shutdown() + del self.opc_managers[server] self.managed_tags[slot].pop(server, None) metrics.OPC_MANAGERS_ACTIVE.labels(pod_id=self.pod_id).set(len(self.opc_managers)) @@ -605,4 +609,7 @@ class IngestorManager(BaseActivity): to_remove.append([slot, server]) for slot, server in to_remove: + if server in self.opc_managers: + await self.opc_managers[server].shutdown() + del self.opc_managers[server] self.managed_tags[slot].pop(server, None)