← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1749297] Re: list-tasks call 500s with postgresql

 

Reviewed:  https://review.openstack.org/544105
Committed: https://git.openstack.org/cgit/openstack/glance/commit/?id=bac4595e08c23859345e8c80af8db5dd36c269b9
Submitter: Zuul
Branch:    master

commit bac4595e08c23859345e8c80af8db5dd36c269b9
Author: Brian Rosmaita <rosmaita.fossdev@xxxxxxxxx>
Date:   Tue Feb 13 16:42:51 2018 -0500

    Use bool instead of int for boolean filter value
    
    At this layer, it's a boolean filter; we should let the ORM
    make the translation for whatever backend is in use.  MySQL
    didn't care, but PostgreSQL is a bit more picky.
    
    Co-authored-by: Scott McClymont <scott.mcclymont@xxxxxxxxxxxxxxxxxxx>
    Co-authored-by: Brian Rosmaita <rosmaita.fossdev@xxxxxxxxx>
    
    Change-Id: Id1e5d2cec3be48f6a5164582591f2fd2f565a96b
    Closes-bug: #1749297


** Changed in: glance
       Status: In Progress => Fix Released

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to Glance.
https://bugs.launchpad.net/bugs/1749297

Title:
  list-tasks call 500s with postgresql

Status in Glance:
  Fix Released

Bug description:
  Seeing this in the log when doing a list-tasks call with postgresql
  database:

  ERROR oslo_db.sqlalchemy.exc_filters [None req-6db7b718-f2db-4bea-a962-9d24f632bbfa admin admin] DBAPIError exception wrapped from (psycopg2.ProgrammingError) operator does not exist: boolean = integer
  LINE 1: ...66a90b2900405587821d90703fb926' AND tasks.deleted = 0 AND ta...
                                                               ^
  HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.
  [SQL: 'UPDATE tasks SET updated_at=%(updated_at)s, deleted_at=%(deleted_at)s, deleted=%(deleted)s WHERE tasks.owner = %(owner_1)s AND tasks.deleted = %(deleted_1)s AND tasks.expires_at <= %(expires_at_1)s'] [parameters: {'expires_at_1': datetime.datetime(2018, 2, 13, 14, 42, 18, 419244), 'deleted': True, 'updated_at': datetime.datetime(2018, 2, 13, 14, 42, 18, 422231), 'deleted_1': 0, 'owner_1': u'6b66a90b2900405587821d90703fb926', 'deleted_at': datetime.datetime(2018, 2, 13, 14, 42, 18, 419449)}] (Background on this error at: http://sqlalche.me/e/f405): ProgrammingError: operator does not exist: boolean = integer

  
  Looked at this with Scott McClymont, traced it back to Change-Id: I0bde982de948901f6bfbfab9e57cf84891c22052 that introduced the opportunistic soft-delete functionality into the image-list call; it uses 0 and 1 instead of boolean values.  MySQL doesn't care, but PostgreSQL is more picky.

To manage notifications about this bug go to:
https://bugs.launchpad.net/glance/+bug/1749297/+subscriptions


References