Public bug reported: If user passes member as Unicode character while creating member for image then he will get HTTP 500 error.
Steps to reproduce: 1. Create image 2. Assign member to image using $ glance member-create e64f4347-51d6-4f97-8b6e-02e40c7ecb30 𠜎 or using curl $ curl -g -i -X POST http://10.232.48.198:9292/v2/images/e64f4347-51d6-4f97-8b6e-02e40c7ecb30/members -H "User-Agent: python-glanceclient" -H "Content-Type: application/json" -H "X-Auth-Token: gAAAAABZCs01HPjCjKDkYnWQECtu9dYOxySXXrMH-lH4xO9xZBtl4MXNIPbTwkuCWSQ4EOh0tKvOPz55DmMdyOM0RYziM-qNE2Jikncq2oExZvf6k8OZYj_Vad5Q04p_uCU0Rg-9b94mVFfv_HaImCnT9ofO6RQZyNLOf1zc-AOzQPOMnjv9e4g" -d '{"member": "𠜎"}' Output: <html> <head> <title>500 Internal Server Error</title> </head> <body> <h1>500 Internal Server Error</h1> The server has either erred or is incapable of performing the requested operation.<br /><br /> </body> </html> API Logs: 500 Internal Server Error: The server has either erred or is incapable of performing the requested operation. (HTTP 500) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi self._flush(objects) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2259, in _flush 2017-05-04 12:18:14.460 TRACE glance.common.wsgi transaction.rollback(_capture_exception=True) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__ 2017-05-04 12:18:14.460 TRACE glance.common.wsgi compat.reraise(exc_type, exc_value, exc_tb) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2223, in _flush 2017-05-04 12:18:14.460 TRACE glance.common.wsgi flush_context.execute() 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 389, in execute 2017-05-04 12:18:14.460 TRACE glance.common.wsgi rec.execute(self) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 548, in execute 2017-05-04 12:18:14.460 TRACE glance.common.wsgi uow 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj 2017-05-04 12:18:14.460 TRACE glance.common.wsgi mapper, table, insert) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 835, in _emit_insert_statements 2017-05-04 12:18:14.460 TRACE glance.common.wsgi execute(statement, params) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 945, in execute 2017-05-04 12:18:14.460 TRACE glance.common.wsgi return meth(self, multiparams, params) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py", line 263, in _execute_on_connection 2017-05-04 12:18:14.460 TRACE glance.common.wsgi return connection._execute_clauseelement(self, multiparams, params) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1053, in _execute_clauseelement 2017-05-04 12:18:14.460 TRACE glance.common.wsgi compiled_sql, distilled_params 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1189, in _execute_context 2017-05-04 12:18:14.460 TRACE glance.common.wsgi context) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1398, in _handle_dbapi_exception 2017-05-04 12:18:14.460 TRACE glance.common.wsgi util.raise_from_cause(newraise, exc_info) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 203, in raise_from_cause 2017-05-04 12:18:14.460 TRACE glance.common.wsgi reraise(type(exception), exception, tb=exc_tb, cause=cause) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1182, in _execute_context 2017-05-04 12:18:14.460 TRACE glance.common.wsgi context) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 470, in do_execute 2017-05-04 12:18:14.460 TRACE glance.common.wsgi cursor.execute(statement, parameters) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 166, in execute 2017-05-04 12:18:14.460 TRACE glance.common.wsgi result = self._query(query) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 322, in _query 2017-05-04 12:18:14.460 TRACE glance.common.wsgi conn.query(q) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 856, in query 2017-05-04 12:18:14.460 TRACE glance.common.wsgi self._affected_rows = self._read_query_result(unbuffered=unbuffered) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1057, in _read_query_result 2017-05-04 12:18:14.460 TRACE glance.common.wsgi result.read() 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1340, in read 2017-05-04 12:18:14.460 TRACE glance.common.wsgi first_packet = self.connection._read_packet() 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1014, in _read_packet 2017-05-04 12:18:14.460 TRACE glance.common.wsgi packet.check_error() 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 393, in check_error 2017-05-04 12:18:14.460 TRACE glance.common.wsgi err.raise_mysql_exception(self._data) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/pymysql/err.py", line 107, in raise_mysql_exception 2017-05-04 12:18:14.460 TRACE glance.common.wsgi raise errorclass(errno, errval) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi DBDataError: (pymysql.err.InternalError) (1366, u"Incorrect string value: '\\xF0\\xA0\\x9C\\x8E' for column 'member' at row 1") [SQL: u'INSERT INTO image_members (created_at, updated_at, deleted_at, deleted, image_id, member, can_share, status) VALUES (%(created_at)s, %(updated_at)s, %(deleted_at)s, %(deleted)s, %(image_id)s, %(member)s, %(can_share)s, %(status)s)'] [parameters: {'status': 'pending', 'deleted': 0, 'created_at': datetime.datetime(2017, 5, 4, 6, 48, 14, 458976), 'updated_at': datetime.datetime(2017, 5, 4, 6, 48, 14, 458985), 'member': u'\U0002070e', 'image_id': u'e64f4347-51d6-4f97-8b6e-02e40c7ecb30', 'can_share': 0, 'deleted_at': None}] ** Affects: glance Importance: Undecided Assignee: Neha Pandey (nehapandey) Status: New -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to Glance. https://bugs.launchpad.net/bugs/1688189 Title: Member create raises 500 error for unicode charater values Status in Glance: New Bug description: If user passes member as Unicode character while creating member for image then he will get HTTP 500 error. Steps to reproduce: 1. Create image 2. Assign member to image using $ glance member-create e64f4347-51d6-4f97-8b6e-02e40c7ecb30 𠜎 or using curl $ curl -g -i -X POST http://10.232.48.198:9292/v2/images/e64f4347-51d6-4f97-8b6e-02e40c7ecb30/members -H "User-Agent: python-glanceclient" -H "Content-Type: application/json" -H "X-Auth-Token: gAAAAABZCs01HPjCjKDkYnWQECtu9dYOxySXXrMH-lH4xO9xZBtl4MXNIPbTwkuCWSQ4EOh0tKvOPz55DmMdyOM0RYziM-qNE2Jikncq2oExZvf6k8OZYj_Vad5Q04p_uCU0Rg-9b94mVFfv_HaImCnT9ofO6RQZyNLOf1zc-AOzQPOMnjv9e4g" -d '{"member": "𠜎"}' Output: <html> <head> <title>500 Internal Server Error</title> </head> <body> <h1>500 Internal Server Error</h1> The server has either erred or is incapable of performing the requested operation.<br /><br /> </body> </html> API Logs: 500 Internal Server Error: The server has either erred or is incapable of performing the requested operation. (HTTP 500) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi self._flush(objects) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2259, in _flush 2017-05-04 12:18:14.460 TRACE glance.common.wsgi transaction.rollback(_capture_exception=True) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__ 2017-05-04 12:18:14.460 TRACE glance.common.wsgi compat.reraise(exc_type, exc_value, exc_tb) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2223, in _flush 2017-05-04 12:18:14.460 TRACE glance.common.wsgi flush_context.execute() 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 389, in execute 2017-05-04 12:18:14.460 TRACE glance.common.wsgi rec.execute(self) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 548, in execute 2017-05-04 12:18:14.460 TRACE glance.common.wsgi uow 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj 2017-05-04 12:18:14.460 TRACE glance.common.wsgi mapper, table, insert) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 835, in _emit_insert_statements 2017-05-04 12:18:14.460 TRACE glance.common.wsgi execute(statement, params) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 945, in execute 2017-05-04 12:18:14.460 TRACE glance.common.wsgi return meth(self, multiparams, params) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py", line 263, in _execute_on_connection 2017-05-04 12:18:14.460 TRACE glance.common.wsgi return connection._execute_clauseelement(self, multiparams, params) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1053, in _execute_clauseelement 2017-05-04 12:18:14.460 TRACE glance.common.wsgi compiled_sql, distilled_params 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1189, in _execute_context 2017-05-04 12:18:14.460 TRACE glance.common.wsgi context) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1398, in _handle_dbapi_exception 2017-05-04 12:18:14.460 TRACE glance.common.wsgi util.raise_from_cause(newraise, exc_info) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 203, in raise_from_cause 2017-05-04 12:18:14.460 TRACE glance.common.wsgi reraise(type(exception), exception, tb=exc_tb, cause=cause) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1182, in _execute_context 2017-05-04 12:18:14.460 TRACE glance.common.wsgi context) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 470, in do_execute 2017-05-04 12:18:14.460 TRACE glance.common.wsgi cursor.execute(statement, parameters) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 166, in execute 2017-05-04 12:18:14.460 TRACE glance.common.wsgi result = self._query(query) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 322, in _query 2017-05-04 12:18:14.460 TRACE glance.common.wsgi conn.query(q) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 856, in query 2017-05-04 12:18:14.460 TRACE glance.common.wsgi self._affected_rows = self._read_query_result(unbuffered=unbuffered) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1057, in _read_query_result 2017-05-04 12:18:14.460 TRACE glance.common.wsgi result.read() 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1340, in read 2017-05-04 12:18:14.460 TRACE glance.common.wsgi first_packet = self.connection._read_packet() 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1014, in _read_packet 2017-05-04 12:18:14.460 TRACE glance.common.wsgi packet.check_error() 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 393, in check_error 2017-05-04 12:18:14.460 TRACE glance.common.wsgi err.raise_mysql_exception(self._data) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/pymysql/err.py", line 107, in raise_mysql_exception 2017-05-04 12:18:14.460 TRACE glance.common.wsgi raise errorclass(errno, errval) 2017-05-04 12:18:14.460 TRACE glance.common.wsgi DBDataError: (pymysql.err.InternalError) (1366, u"Incorrect string value: '\\xF0\\xA0\\x9C\\x8E' for column 'member' at row 1") [SQL: u'INSERT INTO image_members (created_at, updated_at, deleted_at, deleted, image_id, member, can_share, status) VALUES (%(created_at)s, %(updated_at)s, %(deleted_at)s, %(deleted)s, %(image_id)s, %(member)s, %(can_share)s, %(status)s)'] [parameters: {'status': 'pending', 'deleted': 0, 'created_at': datetime.datetime(2017, 5, 4, 6, 48, 14, 458976), 'updated_at': datetime.datetime(2017, 5, 4, 6, 48, 14, 458985), 'member': u'\U0002070e', 'image_id': u'e64f4347-51d6-4f97-8b6e-02e40c7ecb30', 'can_share': 0, 'deleted_at': None}] To manage notifications about this bug go to: https://bugs.launchpad.net/glance/+bug/1688189/+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