From 7f755bf6fedb339f3c8edc334bf31b70f38eda77 Mon Sep 17 00:00:00 2001 From: Roman Podoliaka Date: Tue, 18 Nov 2014 15:00:51 +0200 Subject: [PATCH] Ensure is_backend_avail() doesn't leave open connections is_backend_avail() helper function calls _ensure_backenv_available() method,which creates a SQLAlchemy engine and opens a test connection, but doesn't call engine.dispose(). Depending on Python interpreter version used, the connection in the pool may remain open for some time (even though, we don't store a reference to an Engine instance). Closes-Bug: #1393633 Co-Authored-By: Victor Sergeyev Change-Id: I0297af709ed18fed52308500c13054cb49adf401 --- oslo/db/sqlalchemy/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/oslo/db/sqlalchemy/utils.py b/oslo/db/sqlalchemy/utils.py index ccac7cd..dd891b6 100644 --- a/oslo/db/sqlalchemy/utils.py +++ b/oslo/db/sqlalchemy/utils.py @@ -683,7 +683,8 @@ def is_backend_avail(backend, database, user=None, passwd=None): user=user, passwd=passwd) try: - provision.Backend._ensure_backend_available(connect_uri) + eng = provision.Backend._ensure_backend_available(connect_uri) + eng.dispose() except exception.BackendNotAvailable: return False else: