diff --git a/ingestor/managers/ingestor_manager.py b/ingestor/managers/ingestor_manager.py index 8c05c44..06631c4 100644 --- a/ingestor/managers/ingestor_manager.py +++ b/ingestor/managers/ingestor_manager.py @@ -146,15 +146,25 @@ class IngestorManager(): f"Desconnecting from server." ) opc_manager.disconnect() - self.opc_managers[server] = self.initialize_opc_from_config( - opc_manager.config, self.data_manager, self.logger + + self.logger.warning( + f"Reconnecting to OPC server {server}" ) - self.update_opc_servers() - for slot, slot_config in self.managed_tags.items(): - if server in slot_config: - self.manage_server( - slot, server, slot_config[server], slot_config[server]['tags'] - ) + try: + self.opc_managers[server] = self.initialize_opc_from_config( + opc_manager.config, self.data_manager, self.logger + ) + except Exception as e: + self.logger.error( + f"Failed to reconnect to OPC server {server}: {e}" + ) + else: + self.update_opc_servers() + for slot, slot_config in self.managed_tags.items(): + if server in slot_config: + self.manage_server( + slot, server, slot_config[server], slot_config[server]['tags'] + ) def declare_active(self): """ diff --git a/ingestor/managers/opc_manager.py b/ingestor/managers/opc_manager.py index b8065f3..55a9b65 100644 --- a/ingestor/managers/opc_manager.py +++ b/ingestor/managers/opc_manager.py @@ -190,11 +190,18 @@ class OpcManager(): try: [self.subscriptions[sub].delete() for sub in self.subscriptions] self.logger.warning("Deleted all subscriptions.") + except Exception as sub_error: + self.logger.error(f"Failed to clean up subscription: {sub_error}") + + try: + self.client.disconnect() + except Exception as conn_error: + self.logger.error( + f"Failed to disconnect from OPC UA server: {conn_error}") + finally: del self.client self.client = None self.logger.warning("Disconnected from OPC UA server.") - except Exception as sub_error: - self.logger.error(f"Failed to clean up subscription: {sub_error}") def datachange_notification(self, node, _val, data): """ diff --git a/values.yaml b/values.yaml index 8f8fb7c..a94bca0 100644 --- a/values.yaml +++ b/values.yaml @@ -123,7 +123,7 @@ env: - name: GITHUB_REPO_URL value: "git@github.com:Aignosi/sientia-dataops-opc-ingestor.git" - name: GITHUB_BRANCH - value: "main" + value: "SIENTIAPDE-1049-lidar-com-erros-de-reconexao-no-ingestor-opc" - name: PYTHON_APP value: "ingestor.app"