Reviewed:  https://review.openstack.org/367331
Committed: 
https://git.openstack.org/cgit/openstack/neutron/commit/?id=b91fbdea73afc2a8f0234077d65308864d4737c0
Submitter: Jenkins
Branch:    master

commit b91fbdea73afc2a8f0234077d65308864d4737c0
Author: Kevin Benton <ke...@benton.pub>
Date:   Wed Sep 7 22:07:41 2016 -0700

    Detect DBReferenceError when deleting flavor
    
    The flavor framework currently has a TODO where the logic
    to ensure the flavor isn't in use should be. Implementing
    this logic will be a bit complicated this late in the cycle
    since many different services can depend on the flavor.
    
    For now we can at least catch the DBReferenceError when trying
    to delete the flavor and convert it into the FlavorInUse
    exception.
    
    This leaves some notes inline about how we might go about
    implemented the _ensure_flavor_not_inuse function.
    
    Change-Id: I6bfe61645c6cee002020a507e489c3535d5026ab
    Closes-Bug: #1621281


** 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/1621281

Title:
  500 when deleting a flavor associated to an existing router

Status in neutron:
  Fix Released

Bug description:
  2016-09-07 17:17:36.330 DEBUG neutron.wsgi [-] (11553) accepted 
('192.168.56.101', 44115) from (pid=11553) server 
/usr/local/lib/python2.7/dist-packages/eventlet/wsgi.py:868
  2016-09-07 17:17:36.331 INFO neutron.wsgi 
[req-9325d159-689c-4eec-a2f2-09a3cd2cdd5d 
tempest-RoutersFlavorTestCase-2139645665 a20e05e7617e4a0c99fb4b4c28ca018f] 
192.168.56.101 - - [07/Sep/2016 17:17:36] "DE
  LETE 
/v2.0/flavors/343b36ce-d64f-4cb4-ae2c-23afae44eabf/service_profiles/1bf3da54-b456-4cd5-93b1-a27e4fb3508e
 HTTP/1.1" 204 168 0.2158262016-09-07 17:17:36.555 ERROR 
neutron.api.v2.resource [req-2b12a1f1-8b6a-4bea-9878-efb9f352f4b4 
tempest-RoutersFlavorTestCase-2139645665 a20e05e7617e4a0c99fb4b4c28ca018f] 
delete failed: No details.
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource Traceback (most recent 
call last):
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/opt/stack/neutron/neutron/api/v2/resource.py", line 79, in resource
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     result = 
method(request=request, **args)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/opt/stack/neutron/neutron/api/v2/base.py", line 526, in delete
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     return 
self._delete(request, id, **kwargs)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 151, in wrapper
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     ectxt.value = 
e.inner_exc
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in 
__exit__
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     self.force_reraise()
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in 
force_reraise
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     
six.reraise(self.type_, self.value, self.tb)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 139, in wrapper
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     return f(*args, 
**kwargs)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/opt/stack/neutron/neutron/db/api.py", line 82, in wrapped
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     
traceback.format_exc())
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in 
__exit__
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     self.force_reraise()
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in 
force_reraise
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     
six.reraise(self.type_, self.value, self.tb)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/opt/stack/neutron/neutron/db/api.py", line 77, in wrapped
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     return f(*args, 
**kwargs)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/opt/stack/neutron/neutron/api/v2/base.py", line 548, in _delete
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     
obj_deleter(request.context, id, **kwargs)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/opt/stack/neutron/neutron/db/flavors_db.py", line 153, in delete_flavor
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     
context.session.delete(fl_db)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 490, 
in __exit__
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     self.rollback()
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 
60, in __exit__
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     
compat.reraise(exc_type, exc_value, exc_tb)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 487, 
in __exit__
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     self.commit()
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 392, 
in commit
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     self._prepare_impl()
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 372, 
in _prepare_impl
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     self.session.flush()
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2019, 
in flush
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     self._flush(objects)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2137, 
in _flush
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     
transaction.rollback(_capture_exception=True)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 
60, in __exit__
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     
compat.reraise(exc_type, exc_value, exc_tb)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2101, 
in _flush
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     
flush_context.execute()
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 
373, in execute
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     rec.execute(self)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 
561, in execute
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     uow
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 
249, in delete_obj
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     cached_connections, 
mapper, table, delete)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 
892, in _emit_delete_statements
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     c = 
connection.execute(statement, del_objects)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 914, 
in execute
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     return meth(self, 
multiparams, params)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py", line 323, 
in _execute_on_connection
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     return 
connection._execute_clauseelement(self, multiparams, params)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1010, 
in _execute_clauseelement
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     compiled_sql, 
distilled_params
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1146, 
in _execute_context
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     context)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1337, 
in _handle_dbapi_exception
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     
util.raise_from_cause(newraise, exc_info)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 202, 
in raise_from_cause
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     
reraise(type(exception), exception, tb=exc_tb, cause=cause)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1139, 
in _execute_context
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     context)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 
450, in do_execute
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     
cursor.execute(statement, parameters)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 167, in 
execute
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     result = 
self._query(query)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 323, in _query
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     conn.query(q)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 836, in 
query
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     self._affected_rows 
= self._read_query_result(unbuffered=unbuffered)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1020, in 
_read_query_result
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     result.read()
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1303, in 
read
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     first_packet = 
self.connection._read_packet()
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 982, in 
_read_packet
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     packet.check_error()
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 394, in 
check_error
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     
err.raise_mysql_exception(self._data)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/err.py", line 120, in 
raise_mysql_exception
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     
_check_mysql_exception(errinfo)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/err.py", line 112, in 
_check_mysql_exception
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource     raise 
errorclass(errno, errorvalue)
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource DBReferenceError: 
(pymysql.err.IntegrityError) (1451, u'Cannot delete or update a parent row: a 
foreign key constraint fails (`neutron`.`routers`, CON
  STRAINT `routers_ibfk_3` FOREIGN KEY (`flavor_id`) REFERENCES `flavors` 
(`id`))') [SQL: u'DELETE FROM flavors WHERE flavors.id = %(id)s'] [parameters: 
{'id': u'343b36ce-d64f-4cb4-ae2c-23afae44eabf'}]
  2016-09-07 17:17:36.555 TRACE neutron.api.v2.resource

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1621281/+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

Reply via email to