Public bug reported: DetachedInstanceError occures when logging "dhcp port was deleted concurrently" and accessing db object while it was already expunged from session. Code in question:
def _delete_ports(self, context, ports): for port in ports: try: self.delete_port(context, port.id) except (exc.PortNotFound, sa_exc.ObjectDeletedError): context.session.expunge(port) # concurrent port deletion can be performed by # release_dhcp_port caused by concurrent subnet_delete LOG.info(_LI("Port %s was deleted concurrently"), port.id) Traceback: 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource Traceback (most recent call last): 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/neutron/api/v2/resource.py", line 83, in resource 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource result = method(request=request, **args) 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/neutron/api/v2/base.py", line 490, in delete 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource obj_deleter(request.context, id, **kwargs) 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/neutron/plugins/ml2/plugin.py", line 775, in delete_network 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource self._delete_ports(context, ports) 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/neutron/plugins/ml2/plugin.py", line 686, in _delete_ports 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource LOG.info(_LI("Port %s was deleted concurrently"), port.id) 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/attributes.py", line 239, in __get__ 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource return self.impl.get(instance_state(instance), dict_) 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/attributes.py", line 589, in get 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource value = callable_(state, passive) 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/state.py", line 424, in __call__ 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource self.manager.deferred_scalar_loader(self, toload) 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/loading.py", line 563, in load_scalar_attributes 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource (state_str(state))) 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource DetachedInstanceError: Instance <Port at 0x7f8f7d544dd0> is not bound to a Session; attribute refresh operation cannot proceed 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource 2015-08-12T09:26:42.990805+00:00 info: 2015-08-12 09:26:42.987 4250 INFO neutron.wsgi [req-2bbc2b06-40f1-41e7-a230-3026ea94414d ] 10.109.2.3 - - [12/Aug/2015 09:26:42] "DELETE /v2.0/networks/a3322fce-2fc9-4be3-88d7-ba1d4f4294df.json HTTP/1.1" 500 378 0.938119 ** Affects: neutron Importance: High Assignee: Oleg Bondarev (obondarev) Status: Confirmed -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to neutron. https://bugs.launchpad.net/bugs/1484135 Title: DetachedInstanceError on network delete Status in neutron: Confirmed Bug description: DetachedInstanceError occures when logging "dhcp port was deleted concurrently" and accessing db object while it was already expunged from session. Code in question: def _delete_ports(self, context, ports): for port in ports: try: self.delete_port(context, port.id) except (exc.PortNotFound, sa_exc.ObjectDeletedError): context.session.expunge(port) # concurrent port deletion can be performed by # release_dhcp_port caused by concurrent subnet_delete LOG.info(_LI("Port %s was deleted concurrently"), port.id) Traceback: 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource Traceback (most recent call last): 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/neutron/api/v2/resource.py", line 83, in resource 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource result = method(request=request, **args) 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/neutron/api/v2/base.py", line 490, in delete 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource obj_deleter(request.context, id, **kwargs) 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/neutron/plugins/ml2/plugin.py", line 775, in delete_network 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource self._delete_ports(context, ports) 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/neutron/plugins/ml2/plugin.py", line 686, in _delete_ports 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource LOG.info(_LI("Port %s was deleted concurrently"), port.id) 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/attributes.py", line 239, in __get__ 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource return self.impl.get(instance_state(instance), dict_) 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/attributes.py", line 589, in get 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource value = callable_(state, passive) 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/state.py", line 424, in __call__ 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource self.manager.deferred_scalar_loader(self, toload) 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/loading.py", line 563, in load_scalar_attributes 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource (state_str(state))) 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource DetachedInstanceError: Instance <Port at 0x7f8f7d544dd0> is not bound to a Session; attribute refresh operation cannot proceed 2015-08-12 09:26:42.976 4250 TRACE neutron.api.v2.resource 2015-08-12T09:26:42.990805+00:00 info: 2015-08-12 09:26:42.987 4250 INFO neutron.wsgi [req-2bbc2b06-40f1-41e7-a230-3026ea94414d ] 10.109.2.3 - - [12/Aug/2015 09:26:42] "DELETE /v2.0/networks/a3322fce-2fc9-4be3-88d7-ba1d4f4294df.json HTTP/1.1" 500 378 0.938119 To manage notifications about this bug go to: https://bugs.launchpad.net/neutron/+bug/1484135/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp