Custom actions can cause database errors if they pass the result class objects
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mistral |
Fix Released
|
Medium
|
Dougal Matthews |
Bug Description
When a custom Mistral action returns mistral.
For example:
return Result(
During serialisation this is then converted to an empty dict and it is attempted to be inserted into the database where a string is required. This is an example log line which demonstrates the error:
2016-11-28 09:43:02.283 19586 ERROR oslo_db.
Note the in the parameters being passed to the SQL - 'state_info': {}
More details to come as I work on this.
Changed in mistral: | |
milestone: | ocata-2 → ocata-3 |
Changed in mistral: | |
importance: | Critical → Medium |
Changed in mistral: | |
status: | In Progress → Fix Released |
Full traceback of the error from the engine log:
2016-11-28 09:43:02.283 19586 ERROR oslo_db. sqlalchemy. exc_filters [-] DBAPIError exception wrapped from (pymysql. err.Programming Error) (1064, u"You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '}, processed=1 WHERE task_executions _v2.id = 'e4bb9204- 7706-47c6- a742-b29d964c01 ' at line 1") [SQL: u'UPDATE task_executions_v2 SET updated_ at=%(updated_ at)s, state=%(state)s, state_info= %(state_ info)s, processed= %(processed) s WHERE task_executions _v2.id = %(task_ executions_ v2_id)s' ] [parameters: {'state_info': {}, 'state': 'ERROR', 'processed': 1, 'updated_at': datetime. datetime( 2016, 11, 28, 9, 43, 2, 283039), 'task_execution s_v2_id' : u'e4bb9204- 7706-47c6- a742-b29d964c01 c3'}] sqlalchemy. exc_filters Traceback (most recent call last): sqlalchemy. exc_filters File "/usr/lib64/ python2. 7/site- packages/ sqlalchemy/ engine/ base.py" , line 1139, in _execute_context sqlalchemy. exc_filters context) sqlalchemy. exc_filters File "/usr/lib64/ python2. 7/site- packages/ sqlalchemy/ engine/ default. py", line 450, in do_execute sqlalchemy. exc_filters cursor. execute( statement, parameters) sqlalchemy. exc_filters File "/usr/lib/ python2. 7/site- packages/ pymysql/ cursors. py", line 166, in execute sqlalchemy. exc_filters result = self._query(query) sqlalchemy. exc_filters File "/usr/lib/ python2. 7/site- packages/ pymysql/ cursors. py", line 322, in _query sqlalchemy. exc_filters conn.query(q) sqlalchemy. exc_filters File "/usr/lib/ python2. 7/site- packages/ pymysql/ connections. py", line 841, in query sqlalchemy. exc_filters self._affected_rows = self._read_ query_result( unbuffered= unbuffered) sqlalchemy. exc_filters File "/usr/lib/ python2. 7/site- packages/ pymysql/ connections. py", line 1029, in _read_query_result sqlalchemy. exc_filters result.read() sqlalchemy. exc_filters File "/usr/lib/ python2. 7/site- packages/ pymysql/ connections. py", line 1312, in read sqlalchemy. exc_filters first_packet = self.connection ._read_ packet( ) sqlalchemy. exc_filters File "/usr/lib/ python2. 7/site- packages/ pymysql/ connections. py", line 991, in _read_packet sqlalchemy. exc_filters packet. check_error( ) sqlalchemy. exc_filters File "/usr/lib/ python2. 7/site- packages/ pymysql/ connections. py", line 393, in check_error sqlalchemy. ..
2016-11-28 09:43:02.283 19586 ERROR oslo_db.
2016-11-28 09:43:02.283 19586 ERROR oslo_db.
2016-11-28 09:43:02.283 19586 ERROR oslo_db.
2016-11-28 09:43:02.283 19586 ERROR oslo_db.
2016-11-28 09:43:02.283 19586 ERROR oslo_db.
2016-11-28 09:43:02.283 19586 ERROR oslo_db.
2016-11-28 09:43:02.283 19586 ERROR oslo_db.
2016-11-28 09:43:02.283 19586 ERROR oslo_db.
2016-11-28 09:43:02.283 19586 ERROR oslo_db.
2016-11-28 09:43:02.283 19586 ERROR oslo_db.
2016-11-28 09:43:02.283 19586 ERROR oslo_db.
2016-11-28 09:43:02.283 19586 ERROR oslo_db.
2016-11-28 09:43:02.283 19586 ERROR oslo_db.
2016-11-28 09:43:02.283 19586 ERROR oslo_db.
2016-11-28 09:43:02.283 19586 ERROR oslo_db.
2016-11-28 09:43:02.283 19586 ERROR oslo_db.
2016-11-28 09:43:02.283 19586 ERROR oslo_db.
2016-11-28 09:43:02.283 19586 ERROR oslo_db.
2016-11-28 09:43:02.283 19586 ERROR oslo_db.