From 7e699606bb30422c87cf554470b6c98cfe183417 Mon Sep 17 00:00:00 2001 From: Kevin Benton Date: Sun, 16 Aug 2015 02:32:39 -0700 Subject: [PATCH] Get rid of exception converter in db/api.py The exception converter was necessary because the exceptions the oslo db decorator looked for before were statically defined. The retry decorator now accepts an exception_checker argument that takes a function to call on exceptions to determine if they should be caught. This patch gets rid of the converted and replaces the one use case with the new exception_checker argument. Closes-Bug: #1485819 Change-Id: Ic619b03737cbf51276f87c4458ecc4183424731c --- neutron/db/api.py | 21 --------------------- neutron/plugins/ml2/plugin.py | 9 +++++---- 2 files changed, 5 insertions(+), 25 deletions(-) diff --git a/neutron/db/api.py b/neutron/db/api.py index b4384eec0..53ef51b95 100644 --- a/neutron/db/api.py +++ b/neutron/db/api.py @@ -14,15 +14,12 @@ # under the License. import contextlib -import six from oslo_config import cfg from oslo_db import api as oslo_db_api -from oslo_db import exception as os_db_exception from oslo_db.sqlalchemy import session from oslo_utils import uuidutils from sqlalchemy import exc -from sqlalchemy import orm from neutron.common import exceptions as n_exc from neutron.db import common_db_mixin @@ -76,24 +73,6 @@ def autonested_transaction(sess): yield tx -class convert_db_exception_to_retry(object): - """Converts other types of DB exceptions into RetryRequests.""" - - def __init__(self, stale_data=False): - self.to_catch = () - if stale_data: - self.to_catch += (orm.exc.StaleDataError, ) - - def __call__(self, f): - @six.wraps(f) - def wrapper(*args, **kwargs): - try: - return f(*args, **kwargs) - except self.to_catch as e: - raise os_db_exception.RetryRequest(e) - return wrapper - - # Common database operation implementations def get_object(context, model, **kwargs): with context.session.begin(subtransactions=True): diff --git a/neutron/plugins/ml2/plugin.py b/neutron/plugins/ml2/plugin.py index 48d5241d0..904abe9c1 100644 --- a/neutron/plugins/ml2/plugin.py +++ b/neutron/plugins/ml2/plugin.py @@ -1419,10 +1419,11 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2, return self._bind_port_if_needed(port_context) - @oslo_db_api.wrap_db_retry(max_retries=db_api.MAX_RETRIES, - retry_on_deadlock=True, - retry_on_request=True) - @db_api.convert_db_exception_to_retry(stale_data=True) + @oslo_db_api.wrap_db_retry( + max_retries=db_api.MAX_RETRIES, + retry_on_deadlock=True, retry_on_request=True, + exception_checker=lambda e: isinstance(e, sa_exc.StaleDataError) + ) def update_port_status(self, context, port_id, status, host=None, network=None): """ -- 2.45.2