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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user