From 90ad54da7def7471e2ca9e9444e300e05ff3caad Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 6 Mar 2017 03:20:12 -0800 Subject: [PATCH] Shorten recorder connection init (#6432) * Wait up to 9 seconds * Set number of recorder retries to 8 * Do not sleep when reporting last connection error if no retries left * Make sure we clean up old engine if connection is retrying * Update __init__.py --- homeassistant/components/recorder/__init__.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/recorder/__init__.py b/homeassistant/components/recorder/__init__.py index dcd4eeb0a0e..985ec240f71 100644 --- a/homeassistant/components/recorder/__init__.py +++ b/homeassistant/components/recorder/__init__.py @@ -43,8 +43,7 @@ DEFAULT_DB_FILE = 'home-assistant_v2.db' CONF_DB_URL = 'db_url' CONF_PURGE_DAYS = 'purge_days' -CONNECT_RETRY_WAIT = 10 -ERROR_QUERY = "Error during query: %s" +CONNECT_RETRY_WAIT = 3 FILTER_SCHEMA = vol.Schema({ vol.Optional(CONF_EXCLUDE, default={}): vol.Schema({ @@ -159,7 +158,9 @@ class Recorder(threading.Thread): tries = 1 connected = False - while not connected and tries < 5: + while not connected and tries <= 10: + if tries != 1: + time.sleep(CONNECT_RETRY_WAIT) try: self._setup_connection() migration.migrate_schema(self) @@ -168,7 +169,6 @@ class Recorder(threading.Thread): except Exception as err: # pylint: disable=broad-except _LOGGER.error("Error during connection setup: %s (retrying " "in %s seconds)", err, CONNECT_RETRY_WAIT) - time.sleep(CONNECT_RETRY_WAIT) tries += 1 if not connected: @@ -303,6 +303,9 @@ class Recorder(threading.Thread): else: kwargs['echo'] = False + if self.engine is not None: + self.engine.dispose() + self.engine = create_engine(self.db_url, **kwargs) models.Base.metadata.create_all(self.engine) self.get_session = scoped_session(sessionmaker(bind=self.engine))