diff options
author | Roman Podoliaka <rpodolyaka@mirantis.com> | 2015-01-05 11:28:54 +0200 |
---|---|---|
committer | Roman Podoliaka <rpodolyaka@mirantis.com> | 2015-01-05 11:28:54 +0200 |
commit | 30433383c7042e1cab5df6edd7778ed0e0156b3b (patch) | |
tree | d1b53e8b0643c37fda4163274a8aa0690908df18 | |
parent | 44c9c574bda9ef25b19ab619e1ea66ef2b125101 (diff) | |
download | oslo-db-30433383c7042e1cab5df6edd7778ed0e0156b3b.tar.gz |
Ensure PostgreSQL connection errors are wrapped
Currently PostgreSQL connection errors are not wrapped with our
custom DBConnectionError and engine.connect() will raise
OperationalError instead.
Change-Id: Iefdb9a99ca0cbe982bf12cb7e1ac47996fc5a025
-rw-r--r-- | oslo_db/sqlalchemy/exc_filters.py | 1 | ||||
-rw-r--r-- | oslo_db/tests/sqlalchemy/test_exc_filters.py | 15 |
2 files changed, 16 insertions, 0 deletions
diff --git a/oslo_db/sqlalchemy/exc_filters.py b/oslo_db/sqlalchemy/exc_filters.py index efdbb2f..aa5b55a 100644 --- a/oslo_db/sqlalchemy/exc_filters.py +++ b/oslo_db/sqlalchemy/exc_filters.py @@ -270,6 +270,7 @@ def _raise_operational_errors_directly_filter(operational_error, @filters("mysql", sqla_exc.OperationalError, r".*\(.*(?:2002|2003|2006|2013)") +@filters("postgresql", sqla_exc.OperationalError, r".*could not connect to server") # noqa @filters("ibm_db_sa", sqla_exc.OperationalError, r".*(?:30081)") def _is_db_connection_error(operational_error, match, engine_name, is_disconnect): diff --git a/oslo_db/tests/sqlalchemy/test_exc_filters.py b/oslo_db/tests/sqlalchemy/test_exc_filters.py index 157a183..b2845a2 100644 --- a/oslo_db/tests/sqlalchemy/test_exc_filters.py +++ b/oslo_db/tests/sqlalchemy/test_exc_filters.py @@ -745,6 +745,21 @@ class TestDBDisconnected(TestsExceptionFilter): is_disconnect=False ) + def test_postgresql_ping_listener_disconnected(self): + self._test_ping_listener_disconnected( + "postgresql", + self.OperationalError( + "could not connect to server: Connection refused"), + ) + + def test_postgresql_ping_listener_disconnected_regex_only(self): + self._test_ping_listener_disconnected( + "postgresql", + self.OperationalError( + "could not connect to server: Connection refused"), + is_disconnect=False + ) + class TestDBConnectRetry(TestsExceptionFilter): |