@@ -450,29 +450,36 @@ async def run(self) -> None:
450450 f"Starting keepalive loop for { server_info .url } , checking every { self .timer } sec"
451451 )
452452 while self .is_running :
453- try :
454- status , slevel = await client .read_values ([status_node , slevel_node ])
455- if status != ua .ServerState .Running :
456- _logger .info ("ServerState is not running" )
457- server_info .status = ConnectionStates .NO_DATA
458- else :
459- server_info .status = slevel
460- except BadSessionNotActivated :
461- _logger .warning ("Session is not yet activated." )
462- server_info .status = ConnectionStates .NO_DATA
463- except BadSessionClosed :
464- _logger .warning ("Session is closed." )
465- server_info .status = ConnectionStates .NO_DATA
466- except asyncio .TimeoutError :
467- _logger .warning ("Timeout when fetching state" )
468- server_info .status = ConnectionStates .NO_DATA
469- except asyncio .CancelledError :
470- _logger .warning ("CancelledError, this means we should shutdown" )
471- server_info .status = ConnectionStates .NO_DATA
472- # FIXME: It cannot be correct to catch CancelledError here, we should re-raise
473- except Exception :
474- _logger .exception ("Unknown exception during keepalive liveness check" )
453+ if client .uaclient .protocol is None :
475454 server_info .status = ConnectionStates .NO_DATA
455+ _logger .info ("No active client" )
456+ else :
457+ try :
458+ status , slevel = await client .read_values ([status_node , slevel_node ])
459+ if status != ua .ServerState .Running :
460+ _logger .info ("ServerState is not running" )
461+ server_info .status = ConnectionStates .NO_DATA
462+ else :
463+ server_info .status = slevel
464+ except BadSessionNotActivated :
465+ _logger .warning ("Session is not yet activated." )
466+ server_info .status = ConnectionStates .NO_DATA
467+ except BadSessionClosed :
468+ _logger .warning ("Session is closed." )
469+ server_info .status = ConnectionStates .NO_DATA
470+ except ConnectionError :
471+ _logger .warning ("No connection." )
472+ server_info .status = ConnectionStates .NO_DATA
473+ except asyncio .TimeoutError :
474+ _logger .warning ("Timeout when fetching state" )
475+ server_info .status = ConnectionStates .NO_DATA
476+ except asyncio .CancelledError :
477+ _logger .warning ("CancelledError, this means we should shutdown" )
478+ server_info .status = ConnectionStates .NO_DATA
479+ # FIXME: It cannot be correct to catch CancelledError here, we should re-raise
480+ except Exception :
481+ _logger .exception ("Unknown exception during keepalive liveness check" )
482+ server_info .status = ConnectionStates .NO_DATA
476483
477484 _logger .info (f"ServiceLevel for { server_info .url } : { server_info .status } " )
478485 if await event_wait (self .stop_event , self .timer ):
0 commit comments