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.
This commit is contained in:
vitor-aignosi
2025-10-23 11:52:00 -03:00
parent 6d2a0e46be
commit eea6ccb48f

View File

@@ -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)