From 1d563cd8b7102f7bb88b18d4d64eea0ae6710785 Mon Sep 17 00:00:00 2001 From: "Tobias K." Date: Tue, 24 Oct 2023 16:25:03 +0200 Subject: [PATCH] handling some exceptions in simple state checker --- backend/tools/simple_state_checker.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/backend/tools/simple_state_checker.py b/backend/tools/simple_state_checker.py index 70ba0a7..a8123f8 100644 --- a/backend/tools/simple_state_checker.py +++ b/backend/tools/simple_state_checker.py @@ -10,8 +10,10 @@ import requests from requests.auth import HTTPBasicAuth from multiprocessing.pool import ThreadPool from multiprocessing.context import TimeoutError +from tatsu.exceptions import ParseException from ics import Calendar +from ics.grammar.parse import ParseError from backend import LrcException from backend.config import Config @@ -66,8 +68,13 @@ def get_calender(rec_id): url = get_service_url('org.opencastproject.scheduler') + "/calendars" res = session.get(url, params=params) if res.ok: - logger.debug(res.text) - return Calendar(res.text) + + try: + return Calendar(res.text) + except (ValueError, ParseException, IndexError, ParseError) as ex: + logger.debug(res.text) + logger.error("Could not parse calendar for agent {}! ({})".format(rec_id, ex)) + return None def get_capture_agents(): @@ -109,6 +116,9 @@ def get_recorder_adapter(recorder_info: dict) -> RecorderAdapter: def check_capture_agent_state(a: dict): logger.debug("Checking Agent {}".format(a['name'])) c = get_calender(a['name']) + if c is None: + logger.error("Could not get calendar for agent {}!".format(a['name'])) + return is_recording_in_calendar = len(list(c.timeline.now())) >= 1 if is_recording_in_calendar: logger.info("{} has entry in Calender and should therefore be recording... checking now!".format(a['name']))