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)
This commit is contained in:
Oleg Bondarev 2019-09-19 16:11:06 +04:00 committed by Darragh O'Reilly
parent 2a81f9879d
commit 22250e783b
2 changed files with 2 additions and 5 deletions

View File

@ -15,6 +15,7 @@
import collections
from neutron_lib.db import api as nlib_db_api
from oslo_log import log as logging
from pecan import hooks
@ -61,6 +62,7 @@ class QuotaEnforcementHook(hooks.PecanHook):
# retrieved in the 'after' hook
state.request.context['reservations'] = reservations
@nlib_db_api.retry_db_errors
def after(self, state):
neutron_context = state.request.context.get('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
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
"""
if not cfg.CONF.QUOTAS.track_quota_usage: