From 66b6dd4879f1d7edd7bac311e1b81643dd248f4e Mon Sep 17 00:00:00 2001 From: Idan Hefetz Date: Mon, 30 Mar 2020 09:30:15 +0000 Subject: [PATCH] Bugfix: 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. Backported from train Change-Id: I14a2fb643d04cad2f6ef3ab7a80b7e7c63224f74 --- 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 2edec0ee5..ba17cc8be 100644 --- a/vitrage/storage/__init__.py +++ b/vitrage/storage/__init__.py @@ -45,11 +45,15 @@ def get_connection_from_config(conf): @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(conf, url) + conn = mgr.driver(conf, url) + session = conn._engine_facade.get_session() + session.execute('SELECT 1;') + return conn return _get_connection()