Bulk IPv6 subnet create: update port called within a transaction

Bug #1825521 reported by Oleg Bondarev
This bug report is a duplicate of:  Bug #1822582: Bulk IPv6 subnet create error. Edit Remove
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
neutron
In Progress
High
Oleg Bondarev

Bug Description

When bulk creating auto address IPv6 subnets, port update happens within a transaction:

2019-03-28 15:48:50.894 2377 ERROR neutron.pecan_wsgi.hooks.translation [req-e84aba73-3fc5-4b3f-bf41-a7e762af4bdf 166b7ed45cd6404e884ba63f89e88bf9 2ce6b2792eee4dc88639a3575f1ac7f0 - default default] POST failed.: RuntimeError: Method <function update_port at 0x7f72eb2fe8c0> cannot be called within a transaction.

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pecan/core.py", line 678, in __call__
    self.invoke_controller(controller, args, kwargs, state)
  File "/usr/lib/python2.7/dist-packages/pecan/core.py", line 569, in invoke_controller
    result = controller(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/neutron/db/api.py", line 93, in wrapped
    setattr(e, '_RETRY_EXCEEDED', True)
  File "/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
    self.force_reraise()
  File "/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
    six.reraise(self.type_, self.value, self.tb)
  File "/usr/lib/python2.7/dist-packages/neutron/db/api.py", line 89, in wrapped
    return f(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/oslo_db/api.py", line 150, in wrapper
    ectxt.value = e.inner_exc
  File "/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
    self.force_reraise()
  File "/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
    six.reraise(self.type_, self.value, self.tb)
  File "/usr/lib/python2.7/dist-packages/oslo_db/api.py", line 138, in wrapper
    return f(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/neutron/db/api.py", line 128, in wrapped
    LOG.debug("Retry wrapper got retriable exception: %s", e)
  File "/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
    self.force_reraise()
  File "/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
    six.reraise(self.type_, self.value, self.tb)
  File "/usr/lib/python2.7/dist-packages/neutron/db/api.py", line 124, in wrapped
    return f(*dup_args, **dup_kwargs)
  File "/usr/lib/python2.7/dist-packages/neutron/pecan_wsgi/controllers/utils.py", line 76, in wrapped
    return f(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/neutron/pecan_wsgi/controllers/resource.py", line 159, in post
    return self.create(resources)
  File "/usr/lib/python2.7/dist-packages/neutron/pecan_wsgi/controllers/resource.py", line 177, in create
    return {key: creator(*creator_args, **creator_kwargs)}
  File "/usr/lib/python2.7/dist-packages/neutron/common/utils.py", line 674, in inner
    return f(self, context, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/neutron/db/api.py", line 163, in wrapped
    return method(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/neutron/db/api.py", line 93, in wrapped
    setattr(e, '_RETRY_EXCEEDED', True)
  File "/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
    self.force_reraise()
  File "/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
    six.reraise(self.type_, self.value, self.tb)
  File "/usr/lib/python2.7/dist-packages/neutron/db/api.py", line 89, in wrapped
    return f(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/oslo_db/api.py", line 150, in wrapper
    ectxt.value = e.inner_exc
  File "/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
    self.force_reraise()
  File "/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
    six.reraise(self.type_, self.value, self.tb)
  File "/usr/lib/python2.7/dist-packages/oslo_db/api.py", line 138, in wrapper
    return f(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/neutron/db/api.py", line 128, in wrapped
    LOG.debug("Retry wrapper got retriable exception: %s", e)
  File "/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
    self.force_reraise()
  File "/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
    six.reraise(self.type_, self.value, self.tb)
  File "/usr/lib/python2.7/dist-packages/neutron/db/api.py", line 124, in wrapped
    return f(*dup_args, **dup_kwargs)
  File "/usr/lib/python2.7/dist-packages/neutron/plugins/ml2/plugin.py", line 1075, in create_subnet_bulk
    subnet_def.RESOURCE_NAME, context, subnets)
  File "/usr/lib/python2.7/dist-packages/neutron/plugins/ml2/plugin.py", line 716, in _create_bulk_ml2
    {'resource': resource, 'item': item})
  File "/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
    self.force_reraise()
  File "/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
    six.reraise(self.type_, self.value, self.tb)
  File "/usr/lib/python2.7/dist-packages/neutron/plugins/ml2/plugin.py", line 706, in _create_bulk_ml2
    result, mech_context = obj_creator(context, item)
  File "/usr/lib/python2.7/dist-packages/neutron/plugins/ml2/plugin.py", line 1048, in _create_subnet_db
    self._create_subnet_postcommit(context, result, net_db, ipam_sub)
  File "/usr/lib/python2.7/dist-packages/neutron/db/api.py", line 163, in wrapped
    return method(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/neutron/db/db_base_plugin_v2.py", line 716, in _create_subnet_postcommit
    self.update_port(context, port_id, port_info)
  File "/usr/lib/python2.7/dist-packages/neutron/common/utils.py", line 673, in inner
    "transaction.") % f)

RuntimeError: Method <function update_port at 0x7f72eb2fe8c0> cannot be called within a transaction.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron (master)

Fix proposed to branch: master
Review: https://review.openstack.org/653947

Changed in neutron:
status: New → In Progress
Revision history for this message
Bernard Cafarelli (bcafarel) wrote :

This was already reported a few weeks ago in bug #1822582 I will mark this one as duplicate (and reassign the older one to you as you already have patch in review)

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.