summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Podoliaka <rpodolyaka@mirantis.com>2015-01-05 11:28:54 +0200
committerRoman Podoliaka <rpodolyaka@mirantis.com>2015-01-05 11:28:54 +0200
commit30433383c7042e1cab5df6edd7778ed0e0156b3b (patch)
treed1b53e8b0643c37fda4163274a8aa0690908df18
parent44c9c574bda9ef25b19ab619e1ea66ef2b125101 (diff)
downloadoslo-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.py1
-rw-r--r--oslo_db/tests/sqlalchemy/test_exc_filters.py15
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):