From 8c027ee36e6d9c1d6eb595886f3fef46f73735e7 Mon Sep 17 00:00:00 2001 From: Idan Hefetz Date: Wed, 23 Oct 2019 08:32:55 +0000 Subject: [PATCH] Overcome mysql failure during Vitrage init. Test the connection to detect mysql failures before executing statements. It is better to fail early because at that point we have retries. Change-Id: I9f358104b173920c279bf1213a76518f4b7bb5b5 --- vitrage/storage/__init__.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/vitrage/storage/__init__.py b/vitrage/storage/__init__.py index 0a8f11663..c6d291d82 100644 --- a/vitrage/storage/__init__.py +++ b/vitrage/storage/__init__.py @@ -46,11 +46,15 @@ def get_connection_from_config(): @tenacity.retry( wait=tenacity.wait_fixed(CONF.database.retry_interval), - stop=tenacity.stop_after_attempt(retries if retries >= 0 else 5), + stop=tenacity.stop_after_attempt(retries), + after=tenacity.after_log(LOG, log.WARN), reraise=True) def _get_connection(): """Return an open connection to the database.""" - return mgr.driver(url) + conn = mgr.driver(url) + session = conn._engine_facade.get_session() + session.execute('SELECT 1;') + return conn return _get_connection()