diff --git a/oslo_db/sqlalchemy/exc_filters.py b/oslo_db/sqlalchemy/exc_filters.py index efdbb2f7..aa5b55a7 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 157a183e..b2845a22 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):