oslo.db doesn't handle sqlite dupe key error correctly

Bug #1386145 reported by Oleksii Chuprykov
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
oslo.db
Fix Released
Medium
Oleksii Chuprykov

Bug Description

Steps to reproduce:
target platform: cent os 6.5

>>> from oslo.db.sqlalchemy import session
>>> eng = session.create_engine('sqlite://')
>>> eng.execute('create table t(a integer primary key)')
<sqlalchemy.engine.result.ResultProxy object at 0x1dbe1d0>
>>> eng.execute('insert into t values(10)')
<sqlalchemy.engine.result.ResultProxy object at 0x1dbe850>
>>> eng.execute('insert into t values(10)')
No handlers could be found for logger "oslo.db.sqlalchemy.exc_filters"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/base.py", line 1751, in execute
    return connection.execute(statement, *multiparams, **params)
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/base.py", line 721, in execute
    return self._execute_text(object, multiparams, params)
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/base.py", line 870, in _execute_text
    statement, parameters
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/base.py", line 958, in _execute_context
    context)
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/base.py", line 1155, in _handle_dbapi_exception
    util.raise_from_cause(newraise, exc_info)
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/util/compat.py", line 199, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/base.py", line 951, in _execute_context
    context)
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/default.py", line 436, in do_execute
    cursor.execute(statement, parameters)
oslo.db.exception.DBError: (IntegrityError) PRIMARY KEY must be unique 'insert into t values(10)' ()

We get exception.DBError instead of exception.DBDuplicateEntry
http://logs.openstack.org/69/128669/1/check/gate-cinder-python26/0180d83/testr_results.html.gz

Changed in oslo.db:
assignee: nobody → Oleksii Chuprykov (ochuprykov)
Changed in oslo.db:
status: New → Incomplete
status: Incomplete → New
Revision history for this message
Roman Podoliaka (rpodolyaka) wrote :
Changed in oslo.db:
status: New → Triaged
importance: Undecided → Medium
milestone: none → next-kilo
status: Triaged → Fix Committed
Changed in oslo.db:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.