diff options
-rw-r--r-- | oslo.db/locale/fr/LC_MESSAGES/oslo.db-log-error.po | 18 | ||||
-rw-r--r-- | oslo_db/api.py | 15 | ||||
-rw-r--r-- | oslo_db/sqlalchemy/exc_filters.py | 2 | ||||
-rw-r--r-- | oslo_db/tests/test_api.py | 8 | ||||
-rw-r--r-- | requirements.txt | 2 |
5 files changed, 27 insertions, 18 deletions
diff --git a/oslo.db/locale/fr/LC_MESSAGES/oslo.db-log-error.po b/oslo.db/locale/fr/LC_MESSAGES/oslo.db-log-error.po index 61050f5..a227bb4 100644 --- a/oslo.db/locale/fr/LC_MESSAGES/oslo.db-log-error.po +++ b/oslo.db/locale/fr/LC_MESSAGES/oslo.db-log-error.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the oslo.db project. # # Translators: -# Maxime COQUEREL <max.coquerel@gmail.com>, 2014 +# Maxime COQUEREL <max.coquerel@gmail.com>, 2014-2015 msgid "" msgstr "" "Project-Id-Version: oslo.db\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2015-01-30 06:20+0000\n" -"PO-Revision-Date: 2015-01-27 15:33+0000\n" -"Last-Translator: openstackjenkins <jenkins@openstack.org>\n" +"POT-Creation-Date: 2015-02-18 06:01+0000\n" +"PO-Revision-Date: 2015-02-18 02:50+0000\n" +"Last-Translator: Maxime COQUEREL <max.coquerel@gmail.com>\n" "Language-Team: French (http://www.transifex.com/projects/p/oslodb/language/" "fr/)\n" "Language: fr\n" @@ -20,13 +20,13 @@ msgstr "" "Generated-By: Babel 1.3\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: oslo_db/api.py:120 +#: oslo_db/api.py:134 msgid "DB exceeded retry limit." msgstr "DB limite de tentatives dépassé." -#: oslo_db/api.py:124 +#: oslo_db/api.py:142 msgid "DB error." -msgstr "" +msgstr "Erreur DB." #: oslo_db/concurrency.py:64 msgid "'eventlet' is required for TpoolDbapiWrapper." @@ -41,12 +41,12 @@ msgstr "Exception DBAPIError enveloppé depuis %s" msgid "DB exception wrapped." msgstr "DB exception enveloppé." -#: oslo_db/sqlalchemy/test_migrations.py:272 +#: oslo_db/sqlalchemy/test_migrations.py:271 #, python-format msgid "Failed to migrate to version %(ver)s on engine %(eng)s" msgstr "Échec de migration de la version %(ver)s sur le moteur %(eng)s" -#: oslo_db/sqlalchemy/migration_cli/ext_migrate.py:61 +#: oslo_db/sqlalchemy/migration_cli/ext_migrate.py:59 msgid "" "Migration number for migrate plugin must be valid integer or empty, if you " "want to downgrade to initial state" diff --git a/oslo_db/api.py b/oslo_db/api.py index 98e4d75..616cac5 100644 --- a/oslo_db/api.py +++ b/oslo_db/api.py @@ -56,7 +56,7 @@ def safe_for_db_retry(f): :param f: database api method. :type f: function. """ - f.enable_retry_on_disconnect = True + f.__dict__['enable_retry_on_disconnect'] = True return f @@ -66,7 +66,7 @@ def retry_on_deadlock(f): wrap_db_entry will be applied to all db.api functions marked with this decorator. """ - f.enable_retry_on_deadlock = True + f.__dict__['enable_retry_on_deadlock'] = True return f @@ -76,7 +76,7 @@ def retry_on_request(f): wrap_db_entry will be applied to all db.api functions marked with this decorator. """ - f.enable_retry_on_request = True + f.__dict__['enable_retry_on_request'] = True return f @@ -225,10 +225,11 @@ class DBAPI(object): # NOTE(vsergeyev): If `use_db_reconnect` option is set to True, retry # DB API methods, decorated with @safe_for_db_retry # on disconnect. - retry_on_disconnect = self.use_db_reconnect and getattr( - attr, 'enable_retry_on_disconnect', False) - retry_on_deadlock = getattr(attr, 'enable_retry_on_deadlock', False) - retry_on_request = getattr(attr, 'enable_retry_on_request', False) + retry_on_disconnect = self.use_db_reconnect and attr.__dict__.get( + 'enable_retry_on_disconnect', False) + retry_on_deadlock = attr.__dict__.get('enable_retry_on_deadlock', + False) + retry_on_request = attr.__dict__.get('enable_retry_on_request', False) if retry_on_disconnect or retry_on_deadlock or retry_on_request: attr = wrap_db_retry( diff --git a/oslo_db/sqlalchemy/exc_filters.py b/oslo_db/sqlalchemy/exc_filters.py index 5df1eb7..777fda6 100644 --- a/oslo_db/sqlalchemy/exc_filters.py +++ b/oslo_db/sqlalchemy/exc_filters.py @@ -192,7 +192,7 @@ def _sqlite_dupe_key_error(integrity_error, match, engine_name, is_disconnect): "is not present in table " "\"(?P<key_table>[^\"]+)\".") @filters("mysql", sqla_exc.IntegrityError, - r".* 'Cannot add or update a child row: " + r".* u?'Cannot add or update a child row: " 'a foreign key constraint fails \([`"].+[`"]\.[`"](?P<table>.+)[`"], ' 'CONSTRAINT [`"](?P<constraint>.+)[`"] FOREIGN KEY ' '\([`"](?P<key>.+)[`"]\) REFERENCES [`"](?P<key_table>.+)[`"] ') diff --git a/oslo_db/tests/test_api.py b/oslo_db/tests/test_api.py index 18dc586..c784afe 100644 --- a/oslo_db/tests/test_api.py +++ b/oslo_db/tests/test_api.py @@ -196,3 +196,11 @@ class DBRetryRequestCase(DBAPITestCase): res = {'result': 0} self.assertRaises(ValueError, some_method, res) self.assertEqual(max_retries + 1, res['result']) + + @mock.patch.object(DBAPI, 'api_class_call1') + @mock.patch.object(api, 'wrap_db_retry') + def test_mocked_methods_are_not_wrapped(self, mocked_wrap, mocked_method): + dbapi = api.DBAPI('oslo_db.tests.test_api') + dbapi.api_class_call1() + + self.assertFalse(mocked_wrap.called) diff --git a/requirements.txt b/requirements.txt index 545d892..3e7a757 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,6 +12,6 @@ oslo.utils>=1.2.0 # Apache-2.0 SQLAlchemy>=0.9.7,<=0.9.99 sqlalchemy-migrate>=0.9.1,!=0.9.2 stevedore>=1.1.0 # Apache-2.0 -six>=1.7.0 +six>=1.9.0 testresources>=0.2.4 testscenarios>=0.4 |