summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre-Samuel Le Stang <pierre-samuel.le-stang@corp.ovh.com>2019-02-08 16:46:21 +0100
committerDaniel Pawlik <daniel.pawlik@corp.ovh.com>2019-03-22 14:39:11 +0000
commitc114b932dbc7a2fe446b57bd08308fa85007c59f (patch)
tree1db9ec40f592074b7b41716d2080c357877bd009
parent0602eb60a79a1affda9ccf46423e20333baeaf3c (diff)
downloadoslo-db-c114b932dbc7a2fe446b57bd08308fa85007c59f.tar.gz
exc_filters: fix deadlock detection for MariaDB/Galera cluster
MariasDB/Galera cluster server produces an error like: (1213, u'Deadlock: wsrep aborted transaction') which is currently not detected properly and, thus, not retried. Change-Id: Ifb4a81d50e490e734e12986e51efd6bd3c339c31 Signed-off-by: Pierre-Samuel Le Stang <pierre-samuel.le-stang@corp.ovh.com> (cherry picked from commit ae227eb3b9adb430cf6aa5a4f46f846e964fff91)
-rw-r--r--oslo_db/sqlalchemy/exc_filters.py2
-rw-r--r--oslo_db/tests/sqlalchemy/test_exc_filters.py6
2 files changed, 8 insertions, 0 deletions
diff --git a/oslo_db/sqlalchemy/exc_filters.py b/oslo_db/sqlalchemy/exc_filters.py
index e42718b..6c12f59 100644
--- a/oslo_db/sqlalchemy/exc_filters.py
+++ b/oslo_db/sqlalchemy/exc_filters.py
@@ -63,6 +63,8 @@ def filters(dbname, exception_type, regex):
@filters("mysql", sqla_exc.InternalError, r"^.*\b1213\b.*Deadlock found.*")
@filters("mysql", sqla_exc.InternalError,
r"^.*\b1213\b.*detected deadlock/conflict.*")
+@filters("mysql", sqla_exc.InternalError,
+ r"^.*\b1213\b.*Deadlock: wsrep aborted.*")
@filters("postgresql", sqla_exc.OperationalError, r"^.*deadlock detected.*")
@filters("postgresql", sqla_exc.DBAPIError, r"^.*deadlock detected.*")
@filters("ibm_db_sa", sqla_exc.DBAPIError, r"^.*SQL0911N.*")
diff --git a/oslo_db/tests/sqlalchemy/test_exc_filters.py b/oslo_db/tests/sqlalchemy/test_exc_filters.py
index 9c2b417..62b71a6 100644
--- a/oslo_db/tests/sqlalchemy/test_exc_filters.py
+++ b/oslo_db/tests/sqlalchemy/test_exc_filters.py
@@ -995,6 +995,12 @@ class TestDeadlock(TestsExceptionFilter):
orig_exception_cls=self.InternalError
)
+ self._run_deadlock_detect_test(
+ "mysql",
+ "(1213, 'Deadlock: wsrep aborted transaction')",
+ orig_exception_cls=self.InternalError
+ )
+
def test_mysql_pymysql_galera_deadlock(self):
self._run_deadlock_detect_test(
"mysql",