Set DB retry for quota_enforcement pecan_wsgi hook

The hook starts a DB transaction and should be covered with
DB retry decorator.

For Rocky backport had to import neutron_lib.db for retry_db_errors.

Closes-Bug: #1777965
Closes-Bug: #1771293
Change-Id: I044980a98845edc7b0a02e3323a1e62eb54c10c7
(cherry picked from commit ab286bcdac)
(cherry picked from commit 3ec7aed8a3)
(cherry picked from commit 22250e783b)
This commit is contained in:
Oleg Bondarev 2019-09-19 16:11:06 +04:00 committed by Darragh O'Reilly
parent 982cf62717
commit 2084585b81
2 changed files with 1 additions and 5 deletions

View File

@ -61,6 +61,7 @@ class QuotaEnforcementHook(hooks.PecanHook):
# retrieved in the 'after' hook # retrieved in the 'after' hook
state.request.context['reservations'] = reservations state.request.context['reservations'] = reservations
@db_api.retry_db_errors
def after(self, state): def after(self, state):
neutron_context = state.request.context.get('neutron_context') neutron_context = state.request.context.get('neutron_context')
if not neutron_context: if not neutron_context:

View File

@ -61,11 +61,6 @@ def set_resources_dirty(context):
dirty status is True, sets the dirty bit to True in the database dirty status is True, sets the dirty bit to True in the database
for the appropriate tenants. for the appropriate tenants.
Please note that this routine begins a nested transaction, and it
is not recommended that this transaction begins within another
transaction. For this reason the function will raise a SqlAlchemy
exception if such an attempt is made.
:param context: a Neutron request context with a DB session :param context: a Neutron request context with a DB session
""" """
if not cfg.CONF.QUOTAS.track_quota_usage: if not cfg.CONF.QUOTAS.track_quota_usage: