yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #56444
[Bug 1622824] Re: l3 dvr code passing ip allocation objects to update_port
Reviewed: https://review.openstack.org/369134
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=d223bef22449db3752d57a9eb6b4915074004e32
Submitter: Jenkins
Branch: master
commit d223bef22449db3752d57a9eb6b4915074004e32
Author: Kevin Benton <kevin@xxxxxxxxxx>
Date: Mon Sep 12 18:59:30 2016 -0700
Don't work with native DB port objects in DVR code
Passing around native DB records into core plugin operations
as part of the call arguments can result in detached session
errors. It's also just bad practice since the core plugin API
is expected to take regular dictionaries containing strings.
Closes-Bug: #1622824
Change-Id: I0d33c6ac9a9ceeebbd5c1179eb41aec6c991a2bf
** Changed in: neutron
Status: In Progress => Fix Released
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1622824
Title:
l3 dvr code passing ip allocation objects to update_port
Status in neutron:
Fix Released
Bug description:
The l3 dvr code is passing IP allocation objects to update_port, which
is not supported by the retry decorator protecting update_port. This
results in the following exception:
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource [req-347d1015-bdce-4e58-8179-68ff758b62f4 tempest-TestGettingAddress-1311327307 -] add_router_interface failed: No details.
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource Traceback (most recent call last):
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/api/v2/resource.py", line 79, in resource
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource result = method(request=request, **args)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/db/api.py", line 87, in wrapped
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource setattr(e, '_RETRY_EXCEEDED', True)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource self.force_reraise()
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/db/api.py", line 83, in wrapped
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource return f(*args, **kwargs)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 151, in wrapper
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource ectxt.value = e.inner_exc
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource self.force_reraise()
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 139, in wrapper
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource return f(*args, **kwargs)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/db/api.py", line 123, in wrapped
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource traceback.format_exc())
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource self.force_reraise()
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/db/api.py", line 118, in wrapped
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource return f(*dup_args, **dup_kwargs)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/api/v2/base.py", line 221, in _handle_action
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource ret_value = getattr(self._plugin, name)(*arg_list, **kwargs)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/db/api.py", line 155, in wrapped
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource return method(*args, **kwargs)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/db/api.py", line 87, in wrapped
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource setattr(e, '_RETRY_EXCEEDED', True)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource self.force_reraise()
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/db/api.py", line 83, in wrapped
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource return f(*args, **kwargs)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 151, in wrapper
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource ectxt.value = e.inner_exc
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource self.force_reraise()
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 139, in wrapper
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource return f(*args, **kwargs)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/db/api.py", line 123, in wrapped
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource traceback.format_exc())
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource self.force_reraise()
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/db/api.py", line 118, in wrapped
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource return f(*dup_args, **dup_kwargs)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/db/l3_dvr_db.py", line 415, in add_router_interface
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource port['id'])
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource self.force_reraise()
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/db/l3_dvr_db.py", line 385, in add_router_interface
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource {'port': {'fixed_ips': fixed_ips}})
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/common/utils.py", line 618, in inner
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource return f(self, context, *args, **kwargs)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/db/api.py", line 155, in wrapped
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource return method(*args, **kwargs)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/db/api.py", line 87, in wrapped
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource setattr(e, '_RETRY_EXCEEDED', True)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource self.force_reraise()
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/db/api.py", line 83, in wrapped
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource return f(*args, **kwargs)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 151, in wrapper
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource ectxt.value = e.inner_exc
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource self.force_reraise()
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 139, in wrapper
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource return f(*args, **kwargs)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/db/api.py", line 123, in wrapped
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource traceback.format_exc())
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource self.force_reraise()
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/db/api.py", line 118, in wrapped
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource return f(*dup_args, **dup_kwargs)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/plugins/ml2/plugin.py", line 1383, in update_port
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource port)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/db/api.py", line 155, in wrapped
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource return method(*args, **kwargs)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/db/db_base_plugin_v2.py", line 1221, in update_port
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource new_port=new_port)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/db/ipam_backend_mixin.py", line 724, in update_port
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource new_port.get('mac_address'))
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/db/ipam_pluggable_backend.py", line 329, in update_port_with_ips
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource new_mac)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/db/ipam_pluggable_backend.py", line 282, in _update_ips_for_port
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource context, original_ips, new_ips, port['device_owner'])
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/opt/stack/new/neutron/neutron/db/ipam_backend_mixin.py", line 424, in _get_changed_ips_for_port
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource if ip.get('subnet_id') not in delete_subnet_ids]
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/models.py", line 68, in get
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource return getattr(self, key, default)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/attributes.py", line 237, in __get__
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource return self.impl.get(instance_state(instance), dict_)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/attributes.py", line 578, in get
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource value = state._load_expired(state, passive)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/state.py", line 474, in _load_expired
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource self.manager.deferred_scalar_loader(self, toload)
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/loading.py", line 610, in load_scalar_attributes
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource (state_str(state)))
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource DetachedInstanceError: Instance <IPAllocation at 0x7f8f2191ccd0> is not bound to a Session; attribute refresh operation cannot proceed
2016-09-13 00:26:29.206 13801 ERROR neutron.api.v2.resource
http://logs.openstack.org/33/367333/5/gate/gate-tempest-dsvm-neutron-
dvr-ubuntu-
xenial/b8f08fe/logs/screen-q-svc.txt.gz?level=TRACE#_2016-09-13_00_26_29_206
To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1622824/+subscriptions
References