From 0f4e8b2867a9bd4e400779ad001d62654d90415b Mon Sep 17 00:00:00 2001 From: appel_c Date: Tue, 28 Apr 2026 10:10:32 +0200 Subject: [PATCH] fix(eiger): Fix on_complete from eiger to respect message_severity of JFJ broker status Co-authored-by: Copilot --- csaxs_bec/devices/jungfraujoch/eiger.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/csaxs_bec/devices/jungfraujoch/eiger.py b/csaxs_bec/devices/jungfraujoch/eiger.py index cfff422..ceac260 100644 --- a/csaxs_bec/devices/jungfraujoch/eiger.py +++ b/csaxs_bec/devices/jungfraujoch/eiger.py @@ -354,7 +354,20 @@ class Eiger(PSIDeviceBase): timeout = self._wait_for_on_complete while time.time() - start_time < timeout: if self.jfj_client.wait_for_idle(timeout=1, raise_on_timeout=False): - # TODO: Once available, add check for + # Call API endpoints to get broker status + broker_status = self.jfj_client.jfj_status + if broker_status.message_severity not in [ + "success", + "info", + ]: # Log if not success or info + logger.info( + f"JungfrauJoch broker status: {yaml.dump(broker_status.to_dict(), indent=4)}" + ) + if broker_status.message_severity == "error": # Raise on error + raise EigerError( + f"Device {self.name} acquisition completed with error status from JungfrauJoch broker: {yaml.dump(broker_status.to_dict(), indent=4)}" + ) + # Call API endpoint to get statistics statistics: MeasurementStatistics = ( self.jfj_client.api.statistics_data_collection_get(_request_timeout=5) ) @@ -363,8 +376,10 @@ class Eiger(PSIDeviceBase): f"Device {self.name} acquisition incomplete. " f"Expected {self._num_triggers} triggers, " f"but only {statistics.images_collected} were collected." + f"\n\nBroker status: \n{yaml.dump(broker_status.to_dict(), indent=4)} \n\n" + f"Measurement statistics: \n{yaml.dump(statistics.to_dict(), indent=4)}" ) - return + return # Acquisition completed successfully, if none of the above conditions were met logger.info( f"Waiting for device {self.name} to finish complete, time elapsed: " f"{time.time() - start_time}." -- 2.52.0