diff options
author | Pierre-Samuel Le Stang <pierre-samuel.le-stang@corp.ovh.com> | 2019-02-08 16:46:21 +0100 |
---|---|---|
committer | Daniel Pawlik <daniel.pawlik@corp.ovh.com> | 2019-03-22 14:39:11 +0000 |
commit | c114b932dbc7a2fe446b57bd08308fa85007c59f (patch) | |
tree | 1db9ec40f592074b7b41716d2080c357877bd009 | |
parent | 0602eb60a79a1affda9ccf46423e20333baeaf3c (diff) | |
download | oslo-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.py | 2 | ||||
-rw-r--r-- | oslo_db/tests/sqlalchemy/test_exc_filters.py | 6 |
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", |