← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1184497] Re: Midonet plugin deletes port even when deletion of Quantum port fails

 

[Expired for neutron because there has been no activity for 60 days.]

** Changed in: neutron
       Status: Incomplete => Expired

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1184497

Title:
  Midonet plugin deletes port even when deletion of Quantum port fails

Status in OpenStack Neutron (virtual network service):
  Expired

Bug description:
  Context: Using midonet as the plugin for quantum with a grizzly OS deployment, we have a VM instance with a floating ip associated through the horizon dashboard.
  When terminating this VM instance without first disassociation of the floating ip, the delete_port() in quantum API call fails because of the floating ip association still there.

  In this situation, the corresponding midonet port is nevertheless
  deleted by the midonet plugin although it should not. This creates
  inconsistency of state and induces errors when the dashboard tries to
  retrieve the floating IPs.

  
  2013-05-27 12:33:11    DEBUG [midonetclient.api_lib] do_request: content=
  2013-05-27 12:33:11    DEBUG [quantum.db.db_base_plugin_v2] Recycle 10.0.0.6
  2013-05-27 12:33:11    DEBUG [quantum.db.db_base_plugin_v2] Recycle: first match for 10.0.0.7-10.0.0.254
  2013-05-27 12:33:11    DEBUG [quantum.db.db_base_plugin_v2] Recycle: last match for 10.0.0.5-10.0.0.5
  2013-05-27 12:33:11    DEBUG [quantum.db.db_base_plugin_v2] Recycle: merged 10.0.0.5-10.0.0.5 and 10.0.0.7-10.0.0.254
  2013-05-27 12:33:11    DEBUG [quantum.db.db_base_plugin_v2] Delete allocated IP 10.0.0.6 (80689f94-a474-486a-bcf5-ef877cb6877e/38fd3e94-7a05-4453-9bf7-2c39e0b72c2c)
  2013-05-27 12:33:11    ERROR [quantum.api.v2.resource] delete failed
  Traceback (most recent call last):
    File "/usr/lib/python2.7/dist-packages/quantum/api/v2/resource.py", line 82, in resource
      result = method(request=request, **args)
    File "/usr/lib/python2.7/dist-packages/quantum/api/v2/base.py", line 395, in delete
      obj_deleter(request.context, id, **kwargs)
    File "/usr/lib/python2.7/dist-packages/quantum/plugins/midonet/plugin.py", line 516, in delete_port
      return super(MidonetPluginV2, self).delete_port(context, id)
    File "/usr/lib/python2.7/dist-packages/quantum/db/db_base_plugin_v2.py", line 1359, in delete_port
      self._delete_port(context, id)
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 449, in __exit__
      self.commit()
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 361, in commit
      self._prepare_impl()
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 340, in _prepare_impl
      self.session.flush()
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1718, in flush
      self._flush(objects)
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1789, in _flush
      flush_context.execute()
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 331, in execute
      rec.execute(self)
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 498, in execute
      uow
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 115, in delete_obj
      cached_connections, mapper, table, delete)
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 671, in _emit_delete_statements
      connection.execute(statement, del_objects)
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1449, in execute
      params)
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1584, in _execute_clauseelement
      compiled_sql, distilled_params
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1698, in _execute_context
      context)
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1691, in _execute_context
      context)
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 331, in do_execute
      cursor.execute(statement, parameters)
    File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute
      self.errorhandler(self, exc, value)
    File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
      raise errorclass, errorvalue
  IntegrityError: (IntegrityError) (1451, 'Cannot delete or update a parent row: a foreign key constraint fails (`quantum`.`floatingips`, CONSTRAINT `floatingips_ibfk_2` FOREIGN KEY (`fixed_port_id`) REFERENCES `ports` (`id`))') 'DELETE FROM ports WHERE ports.id = %s' ('11cfa
  808-bf86-463d-93ab-d6f16587c6a1',)

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1184497/+subscriptions