From 2e74e751773b4c663837170177596bcd6765c1e3 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 14 Feb 2023 15:21:05 -0500 Subject: [PATCH] Graphite flaky test fix (#88115) --- homeassistant/components/graphite/__init__.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/graphite/__init__.py b/homeassistant/components/graphite/__init__.py index 0f541712d3c..8e9b015cdad 100644 --- a/homeassistant/components/graphite/__init__.py +++ b/homeassistant/components/graphite/__init__.py @@ -87,27 +87,31 @@ class GraphiteFeeder(threading.Thread): self._prefix = prefix.rstrip(".") self._queue = queue.Queue() self._quit_object = object() - self._we_started = False + self._unsub_state_changed = None hass.bus.listen_once(EVENT_HOMEASSISTANT_START, self.start_listen) - hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, self.shutdown) - hass.bus.listen(EVENT_STATE_CHANGED, self.event_listener) _LOGGER.debug("Graphite feeding to %s:%i initialized", self._host, self._port) def start_listen(self, event): """Start event-processing thread.""" _LOGGER.debug("Event processing thread started") - self._we_started = True + self._hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, self.shutdown) + self._unsub_state_changed = self._hass.bus.listen( + EVENT_STATE_CHANGED, self.event_listener + ) self.start() def shutdown(self, event): """Signal shutdown of processing event.""" _LOGGER.debug("Event processing signaled exit") + self._unsub_state_changed() + self._unsub_state_changed = None self._queue.put(self._quit_object) + self._queue.join() def event_listener(self, event): """Queue an event for processing.""" - if self.is_alive() or not self._we_started: + if self._unsub_state_changed is not None: _LOGGER.debug("Received event") self._queue.put(event) else: