From b1f9c74269e18254ed80da336db22f6d9383caa5 Mon Sep 17 00:00:00 2001 From: Markus Zolliker Date: Wed, 22 May 2024 09:34:32 +0200 Subject: [PATCH] frappy.client.readParameter: handle connection errors correctly update cache in case of connection errors, as they are not handled in the rx thread Change-Id: Icf3377020ec314fcef2982a4e6dc64356f787273 Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33744 Reviewed-by: Enrico Faulhaber Tested-by: Jenkins Automated Tests Reviewed-by: Markus Zolliker --- frappy/client/__init__.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/frappy/client/__init__.py b/frappy/client/__init__.py index ebd689c..8027a7c 100644 --- a/frappy/client/__init__.py +++ b/frappy/client/__init__.py @@ -675,9 +675,14 @@ class SecopClient(ProxyClient): """forced read over connection""" try: self.request(READREQUEST, self.identifier[module, parameter]) - except SECoPError: - # error reply message is already stored as readerror in cache - pass + except SECoPError as e: + result = self.cache[module, parameter] + if e == result.readerror: + # the update was already done in the rx thread + return result + # e was not originating from a secop error message e.g. a connection problem + # -> we have to do the error update + self.updateValue(module, parameter, None, time.time(), e) return self.cache.get((module, parameter), None) def getParameter(self, module, parameter, trycache=False):