Unfortunately we didn't switch to the new sql driver until liberty so that probably wouldn't be a safe switch in Kilo.
Adding a retry will help, but unfortunately that will still block your call for 60 seconds with that driver until the timeout exception is triggered. We worked around this in ML2 by identifying the calls that could yield while holding a DB lock and then acquiring a semaphore before doing each one. You can see an example here: https://github.com/openstack/neutron/blob/363eeb06104662ee38aeed04af043899379f6ab8/neutron/plugins/ml2/plugin.py#L1074 On Tue, May 10, 2016 at 11:27 PM, Divya <[email protected]> wrote: > Thanks Mike for the response. I am part of Nuage openstack team. We are > looking in to the issue. > An extra delete_port call in NuagePlugin's add_router_interface triggers > db lockout when insert into routerport ( this is in core neutron ). > Are you suggesting NuagePlugin should retry in this case or should core > neutron, add-router_interface should retry?? > Will give it a try. > > > On Tue, May 10, 2016 at 4:54 PM, Mike Bayer <[email protected]> wrote: > >> >> >> On 05/10/2016 04:57 PM, Divya wrote: >> >>> Hi, >>> I am trying to run this rally test on stable/kilo >>> >>> https://github.com/openstack/rally/blob/master/samples/tasks/scenarios/neutron/create_and_delete_routers.json >>> >>> with concurrency 50 and iterations 2000. >>> >>> This test basically cretaes routers and subnets >>> and then calls >>> router-interface-add >>> router-interface-delete >>> >>> >>> And i am running this against 3rd party Nuage plugin. >>> >>> In the NuagePlugin: >>> >>> add_router_interface is something like this: >>> ---------------------------- >>> super().add_router_interface >>> try: >>> some calls to external rest server >>> super().delete_port >>> except: >>> >>> remove_router_interface: >>> ----------------------------------- >>> super().remove_router_interface >>> some calls to external rest server >>> super().create_port() >>> some calls to external rest server >>> >>> >>> If i comment delete_port in the add_router_interface, i am not hitting >>> the db lockout issue. >>> delete_port or any other operations are not within any transaction. >>> So not sure, why this is leading to db lock timeouts in insert to >>> routerport >>> >>> error trace >>> http://paste.openstack.org/show/496626/ >>> >>> >>> >>> Really appreciate any help on this. >>> >> >> >> I'm not on the Neutron team, but in general, Openstack applications >> should be employing retry logic internally which anticipates database >> deadlocks like these and retries the operation. I'd report this stack >> trace (especially if it is reproducible) as a bug to this plugin's >> launchpad project. >> >> >> >> >>> Thanks, >>> Divya >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> __________________________________________________________________________ >>> OpenStack Development Mailing List (not for usage questions) >>> Unsubscribe: >>> [email protected]?subject:unsubscribe >>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>> >>> >> __________________________________________________________________________ >> OpenStack Development Mailing List (not for usage questions) >> Unsubscribe: >> [email protected]?subject:unsubscribe >> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >> > > > __________________________________________________________________________ > OpenStack Development Mailing List (not for usage questions) > Unsubscribe: [email protected]?subject:unsubscribe > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev > >
__________________________________________________________________________ OpenStack Development Mailing List (not for usage questions) Unsubscribe: [email protected]?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
