Public bug reported:

We have a lot of filters are pattern match.

There is list for exact match
https://github.com/openstack/nova/blob/df2fd4a252cecc1e1ef471c071e57526ddf65499/nova/db/sqlalchemy/api.py#L2221

Out of that list will be pattern match
https://github.com/openstack/nova/blob/df2fd4a252cecc1e1ef471c071e57526ddf65499/nova/db/sqlalchemy/api.py#L2231

When I input a invalid regex pattern, I will get 500 returned.

For example:

curl -g -i -X GET http://hp-pc:8774/v2.1/servers?node=[[[ -H "OpenStack-
API-Version: compute 2.39" -H "User-Agent: python-novaclient" -H
"Accept: application/json" -H "X-OpenStack-Nova-API-Version: 2.39" -H "X
-Auth-Token:
gAAAAABYbKbto9BeEG31MtaiSCtIc43YKQCclVRJBklKMTv010fyB9jUgjmgvFSLCj8TyYfwJyIKiMduDesKNweCqnjcfLNlkMOsiNsHb4AyYrk0OlvZMwJ5I2rS1x_3kjyP2zbEUEJEKU1WrIY7QvjRBXQ7-r8AoI2QBCqolZjhtm2ckfoULTA"

There is traceback in the log:

2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters Traceback (most 
recent call last):
2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1139, 
in _execute_context
2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters     context)
2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 
450, in do_execute
2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters     
cursor.execute(statement, parameters)
2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 166, in 
execute
2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters     result = 
self._query(query)
2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 322, in _query
2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters     conn.query(q)
2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 835, in 
query
2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters     
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1019, in 
_read_query_result
2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters     result.read()
2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1302, in 
read
2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters     first_packet = 
self.connection._read_packet()
2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 981, in 
_read_packet
2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters     
packet.check_error()
2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 393, in 
check_error
2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters     
err.raise_mysql_exception(self._data)
2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/err.py", line 107, in 
raise_mysql_exception
2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters     raise 
errorclass(errno, errval)
2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters InternalError: 
(1139, u"Got error 'brackets ([ ]) not balanced' from regexp"

** Affects: nova
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1653899

Title:
  The 500 returns for invalid regex in the pattern match query
  parameters

Status in OpenStack Compute (nova):
  New

Bug description:
  We have a lot of filters are pattern match.

  There is list for exact match
  
https://github.com/openstack/nova/blob/df2fd4a252cecc1e1ef471c071e57526ddf65499/nova/db/sqlalchemy/api.py#L2221

  Out of that list will be pattern match
  
https://github.com/openstack/nova/blob/df2fd4a252cecc1e1ef471c071e57526ddf65499/nova/db/sqlalchemy/api.py#L2231

  When I input a invalid regex pattern, I will get 500 returned.

  For example:

  curl -g -i -X GET http://hp-pc:8774/v2.1/servers?node=[[[ -H
  "OpenStack-API-Version: compute 2.39" -H "User-Agent: python-
  novaclient" -H "Accept: application/json" -H "X-OpenStack-Nova-API-
  Version: 2.39" -H "X-Auth-Token:
  
gAAAAABYbKbto9BeEG31MtaiSCtIc43YKQCclVRJBklKMTv010fyB9jUgjmgvFSLCj8TyYfwJyIKiMduDesKNweCqnjcfLNlkMOsiNsHb4AyYrk0OlvZMwJ5I2rS1x_3kjyP2zbEUEJEKU1WrIY7QvjRBXQ7-r8AoI2QBCqolZjhtm2ckfoULTA"

  There is traceback in the log:

  2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters Traceback (most 
recent call last):
  2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1139, 
in _execute_context
  2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters     context)
  2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 
450, in do_execute
  2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters     
cursor.execute(statement, parameters)
  2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 166, in 
execute
  2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters     result = 
self._query(query)
  2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 322, in _query
  2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters     conn.query(q)
  2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 835, in 
query
  2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters     
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1019, in 
_read_query_result
  2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters     result.read()
  2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1302, in 
read
  2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters     first_packet 
= self.connection._read_packet()
  2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 981, in 
_read_packet
  2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters     
packet.check_error()
  2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 393, in 
check_error
  2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters     
err.raise_mysql_exception(self._data)
  2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/err.py", line 107, in 
raise_mysql_exception
  2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters     raise 
errorclass(errno, errval)
  2017-01-04 15:43:49.113 TRACE oslo_db.sqlalchemy.exc_filters InternalError: 
(1139, u"Got error 'brackets ([ ]) not balanced' from regexp"

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