From 6412b179961a3b0437c2cbe44cf439c98cf23653 Mon Sep 17 00:00:00 2001 From: jo Date: Wed, 29 Mar 2023 16:47:13 +0200 Subject: [PATCH] fix(playout): catch oserror in liquidsoap client Prevent playout crash when liquidsoap is not yet reachable. --- .../liquidsoap/client/_client.py | 2 +- .../liquidsoap/client/_connection.py | 2 +- playout/libretime_playout/player/fetch.py | 10 +++++----- .../player/liquidsoap_gateway.py | 20 +++++++++---------- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/playout/libretime_playout/liquidsoap/client/_client.py b/playout/libretime_playout/liquidsoap/client/_client.py index bf6c4f25b..59c1cc0e8 100644 --- a/playout/libretime_playout/liquidsoap/client/_client.py +++ b/playout/libretime_playout/liquidsoap/client/_client.py @@ -58,7 +58,7 @@ class LiquidsoapClient: version = self.version() logger.info("found version %s", version) return version - except (ConnectionError, TimeoutError) as exception: + except OSError as exception: logger.warning("could not get version: %s", exception) timeout -= 1 sleep(1) diff --git a/playout/libretime_playout/liquidsoap/client/_connection.py b/playout/libretime_playout/liquidsoap/client/_connection.py index c954ef2f6..57607dcde 100644 --- a/playout/libretime_playout/liquidsoap/client/_connection.py +++ b/playout/libretime_playout/liquidsoap/client/_connection.py @@ -53,7 +53,7 @@ class LiquidsoapConnection: try: self.connect() return self - except (ConnectionError, TimeoutError) as exception: + except OSError as exception: self._sock = None self._lock.release() raise exception diff --git a/playout/libretime_playout/player/fetch.py b/playout/libretime_playout/player/fetch.py index adf2bf78f..068df5721 100644 --- a/playout/libretime_playout/player/fetch.py +++ b/playout/libretime_playout/player/fetch.py @@ -151,7 +151,7 @@ class PypoFetch(Thread): streaming=state.schedule_streaming, ) - except (ConnectionError, TimeoutError) as exception: + except OSError as exception: logger.exception(exception) self.pypo_liquidsoap.clear_all_queues() @@ -164,28 +164,28 @@ class PypoFetch(Thread): ) -> None: try: self.liq_client.settings_update(message_format=stream_format) - except (ConnectionError, TimeoutError) as exception: + except OSError as exception: logger.exception(exception) @ls_timeout def update_liquidsoap_message_offline(self, message_offline: str) -> None: try: self.liq_client.settings_update(message_offline=message_offline) - except (ConnectionError, TimeoutError) as exception: + except OSError as exception: logger.exception(exception) @ls_timeout def update_liquidsoap_transition_fade(self, fade: float) -> None: try: self.liq_client.settings_update(input_fade_transition=fade) - except (ConnectionError, TimeoutError) as exception: + except OSError as exception: logger.exception(exception) @ls_timeout def update_liquidsoap_station_name(self, station_name: str) -> None: try: self.liq_client.settings_update(station_name=station_name) - except (ConnectionError, TimeoutError) as exception: + except OSError as exception: logger.exception(exception) # Process the schedule diff --git a/playout/libretime_playout/player/liquidsoap_gateway.py b/playout/libretime_playout/player/liquidsoap_gateway.py index addf7d40a..976704c56 100644 --- a/playout/libretime_playout/player/liquidsoap_gateway.py +++ b/playout/libretime_playout/player/liquidsoap_gateway.py @@ -53,14 +53,14 @@ class TelnetLiquidsoap: def queue_clear_all(self): try: self.liq_client.queues_remove(*self.queues) - except (ConnectionError, TimeoutError) as exception: + except OSError as exception: logger.exception(exception) @ls_timeout def queue_remove(self, queue_id: int): try: self.liq_client.queues_remove(queue_id) - except (ConnectionError, TimeoutError) as exception: + except OSError as exception: logger.exception(exception) @ls_timeout @@ -68,21 +68,21 @@ class TelnetLiquidsoap: try: annotation = create_liquidsoap_annotation(file_event) self.liq_client.queue_push(queue_id, annotation, file_event.show_name) - except (ConnectionError, TimeoutError) as exception: + except OSError as exception: logger.exception(exception) @ls_timeout def stop_web_stream_buffer(self): try: self.liq_client.web_stream_stop_buffer() - except (ConnectionError, TimeoutError) as exception: + except OSError as exception: logger.exception(exception) @ls_timeout def stop_web_stream_output(self): try: self.liq_client.web_stream_stop() - except (ConnectionError, TimeoutError) as exception: + except OSError as exception: logger.exception(exception) @ls_timeout @@ -90,7 +90,7 @@ class TelnetLiquidsoap: try: self.liq_client.web_stream_start() self.current_prebuffering_stream_id = None - except (ConnectionError, TimeoutError) as exception: + except OSError as exception: logger.exception(exception) @ls_timeout @@ -98,14 +98,14 @@ class TelnetLiquidsoap: try: self.liq_client.web_stream_start_buffer(event.row_id, event.uri) self.current_prebuffering_stream_id = event.row_id - except (ConnectionError, TimeoutError) as exception: + except OSError as exception: logger.exception(exception) @ls_timeout def get_current_stream_id(self) -> str: try: return self.liq_client.web_stream_get_id() - except (ConnectionError, TimeoutError) as exception: + except OSError as exception: logger.exception(exception) return "-1" @@ -117,7 +117,7 @@ class TelnetLiquidsoap: try: logger.debug("Disconnecting source: %s", sourcename) self.liq_client.source_disconnect(sourcename) - except (ConnectionError, TimeoutError) as exception: + except OSError as exception: logger.exception(exception) @ls_timeout @@ -128,5 +128,5 @@ class TelnetLiquidsoap: try: logger.debug('Switching source: %s to "%s" status', sourcename, status) self.liq_client.source_switch_status(sourcename, status == "on") - except (ConnectionError, TimeoutError) as exception: + except OSError as exception: logger.exception(exception)