** Changed in: neutron
Status: In Progress => Invalid
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1366067
Title:
Neutron internal error on empty port update
Status in OpenStack Neutron (virtual network service):
Invalid
Bug description:
PUTting an empty update object to neutron port-update call will cause
an internal server error:
$ curl -H 'Content-Type: application/json' -H 'X-Auth-Token: ...' -v -i -X
PUT -d '{"port": {}}'
'http://127.0.1.1:9696/v2.0/ports/fc092916-c766-4e70-8788-b9b3edcd4c22'
* Hostname was NOT found in DNS cache
* Trying 127.0.1.1...
* Connected to 127.0.1.1 (127.0.1.1) port 9696 (#0)
> PUT /v2.0/ports/fc092916-c766-4e70-8788-b9b3edcd4c22 HTTP/1.1
> User-Agent: curl/7.35.0
> Host: 127.0.1.1:9696
> Accept: */*
> Content-Type: application/json
> X-Auth-Token: ...
> Content-Length: 12
>
* upload completely sent off: 12 out of 12 bytes
< HTTP/1.1 500 Internal Server Error
HTTP/1.1 500 Internal Server Error
< Content-Type: application/json; charset=UTF-8
Content-Type: application/json; charset=UTF-8
< Content-Length: 88
Content-Length: 88
< X-Openstack-Request-Id: req-97b2b096-263d-466c-9349-b45b135db499
X-Openstack-Request-Id: req-97b2b096-263d-466c-9349-b45b135db499
< Date: Fri, 05 Sep 2014 14:43:28 GMT
Date: Fri, 05 Sep 2014 14:43:28 GMT
<
* Connection #0 to host 127.0.1.1 left intact
{"NeutronError": "Request Failed: internal server error while processing your
request."}
The neutron log shows an invalid update SQL command:
2014-09-05 14:43:28.751 2487 INFO neutron.wsgi [-] (2487) accepted
('127.0.0.1', 53273)
2014-09-05 14:43:28.812 2487 ERROR
neutron.openstack.common.db.sqlalchemy.session [-] DB exception wrapped.
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session Traceback (most recent call
last):
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session File
"/usr/lib/python2.7/dist-packages/neutron/openstack/common/db/sqlalchemy/session.py",
line 597, in _wrap
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session return f(*args, **kwargs)
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session File
"/usr/lib/python2.7/dist-packages/neutron/openstack/common/db/sqlalchemy/session.py",
line 836, in flush
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session return super(Session,
self).flush(*args, **kwargs)
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session File
"/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1818, in
flush
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session self._flush(objects)
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session File
"/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1936, in
_flush
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session
transaction.rollback(_capture_exception=True)
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session File
"/usr/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 58, in
__exit__
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session compat.reraise(exc_type,
exc_value, exc_tb)
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session File
"/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1900, in
_flush
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session flush_context.execute()
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session File
"/usr/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 372, in
execute
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session rec.execute(self)
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session File
"/usr/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 525, in
execute
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session uow
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session File
"/usr/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 59, in
save_obj
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session mapper, table, update)
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session File
"/usr/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 495, in
_emit_update_statements
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session execute(statement, params)
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session File
"/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in
execute
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session params)
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session File
"/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 761, in
_execute_clauseelement
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session compiled_sql,
distilled_params
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session File
"/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in
_execute_context
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session context)
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session File
"/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in
_handle_dbapi_exception
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session exc_info
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session File
"/usr/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in
raise_from_cause
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session reraise(type(exception),
exception, tb=exc_tb)
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session File
"/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in
_execute_context
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session context)
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session File
"/usr/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in
do_execute
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session cursor.execute(statement,
parameters)
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session File
"/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session self.errorhandler(self, exc,
value)
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session File
"/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in
defaulterrorhandler
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session raise errorclass, errorvalue
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session ProgrammingError:
(ProgrammingError) (1064, "You have an error in your SQL syntax; check the
manual that corresponds to your MySQL server version for the right syntax to
use near '}, vnic_type={}, vif_type='unbound', vif_details='', driver=NULL,
segment=NULL W' at line 1") 'UPDATE ml2_port_bindings SET host=%s,
vnic_type=%s, vif_type=%s, vif_details=%s, driver=%s, segment=%s WHERE
ml2_port_bindings.port_id = %s' ({}, {}, 'unbound', '', None, None,
'fc092916-c766-4e70-8788-b9b3edcd4c22')
2014-09-05 14:43:28.812 2487 TRACE
neutron.openstack.common.db.sqlalchemy.session
2014-09-05 14:43:28.815 2487 ERROR neutron.api.v2.resource
[req-97b2b096-263d-466c-9349-b45b135db499 None] update failed
2014-09-05 14:43:28.815 2487 TRACE neutron.api.v2.resource Traceback (most
recent call last):
2014-09-05 14:43:28.815 2487 TRACE neutron.api.v2.resource File
"/usr/lib/python2.7/dist-packages/neutron/api/v2/resource.py", line 87, in
resource
2014-09-05 14:43:28.815 2487 TRACE neutron.api.v2.resource result =
method(request=request, **args)
2014-09-05 14:43:28.815 2487 TRACE neutron.api.v2.resource File
"/usr/lib/python2.7/dist-packages/neutron/api/v2/base.py", line 505, in update
2014-09-05 14:43:28.815 2487 TRACE neutron.api.v2.resource obj =
obj_updater(request.context, id, **kwargs)
2014-09-05 14:43:28.815 2487 TRACE neutron.api.v2.resource File
"/usr/lib/python2.7/dist-packages/neutron/plugins/ml2/plugin.py", line 690, in
update_port
2014-09-05 14:43:28.815 2487 TRACE neutron.api.v2.resource
self.mechanism_manager.update_port_precommit(mech_context)
2014-09-05 14:43:28.815 2487 TRACE neutron.api.v2.resource File
"/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 447, in
__exit__
2014-09-05 14:43:28.815 2487 TRACE neutron.api.v2.resource self.rollback()
2014-09-05 14:43:28.815 2487 TRACE neutron.api.v2.resource File
"/usr/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 58, in
__exit__
2014-09-05 14:43:28.815 2487 TRACE neutron.api.v2.resource
compat.reraise(exc_type, exc_value, exc_tb)
2014-09-05 14:43:28.815 2487 TRACE neutron.api.v2.resource File
"/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 444, in
__exit__
2014-09-05 14:43:28.815 2487 TRACE neutron.api.v2.resource self.commit()
2014-09-05 14:43:28.815 2487 TRACE neutron.api.v2.resource File
"/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 354, in
commit
2014-09-05 14:43:28.815 2487 TRACE neutron.api.v2.resource
self._prepare_impl()
2014-09-05 14:43:28.815 2487 TRACE neutron.api.v2.resource File
"/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 334, in
_prepare_impl
2014-09-05 14:43:28.815 2487 TRACE neutron.api.v2.resource
self.session.flush()
2014-09-05 14:43:28.815 2487 TRACE neutron.api.v2.resource File
"/usr/lib/python2.7/dist-packages/neutron/openstack/common/db/sqlalchemy/session.py",
line 619, in _wrap
2014-09-05 14:43:28.815 2487 TRACE neutron.api.v2.resource raise
exception.DBError(e)
2014-09-05 14:43:28.815 2487 TRACE neutron.api.v2.resource DBError:
(ProgrammingError) (1064, "You have an error in your SQL syntax; check the
manual that corresponds to your MySQL server version for the right syntax to
use near '}, vnic_type={}, vif_type='unbound', vif_details='', driver=NULL,
segment=NULL W' at line 1") 'UPDATE ml2_port_bindings SET host=%s,
vnic_type=%s, vif_type=%s, vif_details=%s, driver=%s, segment=%s WHERE
ml2_port_bindings.port_id = %s' ({}, {}, 'unbound', '', None, None,
'fc092916-c766-4e70-8788-b9b3edcd4c22')
2014-09-05 14:43:28.815 2487 TRACE neutron.api.v2.resource
2014-09-05 14:43:28.818 2487 INFO neutron.wsgi
[req-97b2b096-263d-466c-9349-b45b135db499 None] 127.0.0.1 - - [05/Sep/2014
14:43:28] "PUT /v2.0/ports/fc092916-c766-4e70-8788-b9b3edcd4c22 HTTP/1.1" 500
296 0.066101
To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1366067/+subscriptions
--
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to : [email protected]
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help : https://help.launchpad.net/ListHelp