diff --git a/neutron/db/api.py b/neutron/db/api.py index d85fdcbae5a..513b04ab232 100644 --- a/neutron/db/api.py +++ b/neutron/db/api.py @@ -39,6 +39,7 @@ MAX_RETRIES = 10 def is_retriable(e): if _is_nested_instance(e, (db_exc.DBDeadlock, exc.StaleDataError, + db_exc.DBConnectionError, db_exc.DBDuplicateEntry, db_exc.RetryRequest)): return True # looking savepoints mangled by deadlocks. see bug/1590298 for details. diff --git a/neutron/tests/unit/db/test_api.py b/neutron/tests/unit/db/test_api.py index f22e53491e2..abb318de97f 100644 --- a/neutron/tests/unit/db/test_api.py +++ b/neutron/tests/unit/db/test_api.py @@ -69,6 +69,10 @@ class TestDeadLockDecorator(base.BaseTestCase): e = exc.StaleDataError() self.assertIsNone(self._decorated_function(1, e)) + def test_dbconnection_error_caught(self): + e = db_exc.DBConnectionError() + self.assertIsNone(self._decorated_function(1, e)) + def test_multi_exception_contains_retry(self): e = exceptions.MultipleExceptions( [ValueError(), db_exc.RetryRequest(TypeError())])