From d97cce0403eb0ca10fb26ba23facb37c86934835 Mon Sep 17 00:00:00 2001 From: Manjeet Singh Bhatia Date: Thu, 21 Jun 2018 18:17:41 +0000 Subject: [PATCH] Add missing transaction in driver_controller. All the operations related to router associations (add/del) were executed under transactions, there was a case 'get_provider_for_router' doing add_resource_association out of db transaction, luckily due to autocommit there were no issues but this patch adds the missing transaction. Closes-Bug: #1778118 Change-Id: Iaec9a40614c7e6ce1120e9fa7ef3a4fdb4d59963 --- .../service_providers/driver_controller.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/neutron/services/l3_router/service_providers/driver_controller.py b/neutron/services/l3_router/service_providers/driver_controller.py index e2e501e04a3..6bbd4aa2ded 100644 --- a/neutron/services/l3_router/service_providers/driver_controller.py +++ b/neutron/services/l3_router/service_providers/driver_controller.py @@ -180,12 +180,15 @@ class DriverController(object): router = self.l3_plugin.get_router(context, router_id) driver = self._attrs_to_driver(router) driver_name = driver.name - self._stm.add_resource_association(context, plugin_constants.L3, - driver_name, router_id) - registry.notify( - resources.ROUTER_CONTROLLER, events.PRECOMMIT_ADD_ASSOCIATION, - self, context=context, router_id=router_id, - router=router, old_driver=None, new_driver=driver) + with context.session.begin(subtransactions=True): + self._stm.add_resource_association( + context, plugin_constants.L3, + driver_name, router_id) + registry.notify( + resources.ROUTER_CONTROLLER, + events.PRECOMMIT_ADD_ASSOCIATION, + self, context=context, router_id=router_id, + router=router, old_driver=None, new_driver=driver) return self.drivers[driver_name] def _get_provider_for_create(self, context, router):