Graphite flaky test fix (#88115)

This commit is contained in:
Paulus Schoutsen 2023-02-14 15:21:05 -05:00 committed by GitHub
parent aaeb909148
commit 2e74e75177
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -87,27 +87,31 @@ class GraphiteFeeder(threading.Thread):
self._prefix = prefix.rstrip(".") self._prefix = prefix.rstrip(".")
self._queue = queue.Queue() self._queue = queue.Queue()
self._quit_object = object() 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_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) _LOGGER.debug("Graphite feeding to %s:%i initialized", self._host, self._port)
def start_listen(self, event): def start_listen(self, event):
"""Start event-processing thread.""" """Start event-processing thread."""
_LOGGER.debug("Event processing thread started") _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() self.start()
def shutdown(self, event): def shutdown(self, event):
"""Signal shutdown of processing event.""" """Signal shutdown of processing event."""
_LOGGER.debug("Event processing signaled exit") _LOGGER.debug("Event processing signaled exit")
self._unsub_state_changed()
self._unsub_state_changed = None
self._queue.put(self._quit_object) self._queue.put(self._quit_object)
self._queue.join()
def event_listener(self, event): def event_listener(self, event):
"""Queue an event for processing.""" """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") _LOGGER.debug("Received event")
self._queue.put(event) self._queue.put(event)
else: else: