)]}'
{"oslo/db/sqlalchemy/session.py":[{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"fed77f0ead6a1a21b02e7af8ff79ea6e77a9f30f","unresolved":false,"context_lines":[{"line_number":465,"context_line":"            # under postgresql. The original exception thrown from postgresql"},{"line_number":466,"context_line":"            # is TransactionRollbackError, it\u0027s not included in the sqlalchemy."},{"line_number":467,"context_line":"            # Moreover, DBAPIError is the base class of OperationalError"},{"line_number":468,"context_line":"            # and IntegrityError, so we catch it on the end of the process."},{"line_number":469,"context_line":"            _raise_if_db_connection_lost(e, self.bind)"},{"line_number":470,"context_line":"            _raise_if_deadlock_error(e, self.bind.dialect.name)"},{"line_number":471,"context_line":"            LOG.exception(_LE(\u0027DBAPIError exception wrapped from %s\u0027 % e))"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_b76b4584","line":468,"updated":"2014-05-22 07:35:01.000000000","message":"why can\u0027t we catch OperationalError here?","commit_id":"ac9c022fb26b7f4d9bbb8f35ad57b9517665cd0e"},{"author":{"_account_id":8021,"name":"wingwj","email":"wingwj@gmail.com","username":"wingwj"},"change_message_id":"504b96adfee3784e665943b3c338ce75b90b63f8","unresolved":false,"context_lines":[{"line_number":465,"context_line":"            # under postgresql. The original exception thrown from postgresql"},{"line_number":466,"context_line":"            # is TransactionRollbackError, it\u0027s not included in the sqlalchemy."},{"line_number":467,"context_line":"            # Moreover, DBAPIError is the base class of OperationalError"},{"line_number":468,"context_line":"            # and IntegrityError, so we catch it on the end of the process."},{"line_number":469,"context_line":"            _raise_if_db_connection_lost(e, self.bind)"},{"line_number":470,"context_line":"            _raise_if_deadlock_error(e, self.bind.dialect.name)"},{"line_number":471,"context_line":"            LOG.exception(_LE(\u0027DBAPIError exception wrapped from %s\u0027 % e))"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_174bd12b","line":468,"in_reply_to":"1ae5cdf2_5db4b7d0","updated":"2014-06-11 02:36:50.000000000","message":"Hi Doug \u0026 Mike,\n\nIMO we still need this fix until we update the version of sqlalchemy to one higher bug-fixed version. But now this issue isn\u0027t merged in sqlalchemy, and we can\u0027t determine which version we need to expect here.\n\nSo, is it a good idea to add some comments above the codes to explain the situation we met here firstly?","commit_id":"ac9c022fb26b7f4d9bbb8f35ad57b9517665cd0e"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"42944070d1325cbfef548f06f16d3527bab08ff7","unresolved":false,"context_lines":[{"line_number":465,"context_line":"            # under postgresql. The original exception thrown from postgresql"},{"line_number":466,"context_line":"            # is TransactionRollbackError, it\u0027s not included in the sqlalchemy."},{"line_number":467,"context_line":"            # Moreover, DBAPIError is the base class of OperationalError"},{"line_number":468,"context_line":"            # and IntegrityError, so we catch it on the end of the process."},{"line_number":469,"context_line":"            _raise_if_db_connection_lost(e, self.bind)"},{"line_number":470,"context_line":"            _raise_if_deadlock_error(e, self.bind.dialect.name)"},{"line_number":471,"context_line":"            LOG.exception(_LE(\u0027DBAPIError exception wrapped from %s\u0027 % e))"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_5db4b7d0","line":468,"in_reply_to":"1ae5cdf2_a0ab02d5","updated":"2014-06-10 13:46:37.000000000","message":"Thanks, Mike, good point.\n\nVictor \u0026 wingwj, if the exception type is fixed in sqlalchemy, do we still need a fix here for older versions of the library? What are our plans for supporting versions of sqlalchemy?","commit_id":"ac9c022fb26b7f4d9bbb8f35ad57b9517665cd0e"},{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"78a92fbc040a9a60c894585d6fda488a0a199a8b","unresolved":false,"context_lines":[{"line_number":465,"context_line":"            # under postgresql. The original exception thrown from postgresql"},{"line_number":466,"context_line":"            # is TransactionRollbackError, it\u0027s not included in the sqlalchemy."},{"line_number":467,"context_line":"            # Moreover, DBAPIError is the base class of OperationalError"},{"line_number":468,"context_line":"            # and IntegrityError, so we catch it on the end of the process."},{"line_number":469,"context_line":"            _raise_if_db_connection_lost(e, self.bind)"},{"line_number":470,"context_line":"            _raise_if_deadlock_error(e, self.bind.dialect.name)"},{"line_number":471,"context_line":"            LOG.exception(_LE(\u0027DBAPIError exception wrapped from %s\u0027 % e))"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_a0ab02d5","line":468,"in_reply_to":"7adec928_56267cbb","updated":"2014-06-09 14:48:05.000000000","message":"Please report issues like these to SQLAlchemy.   I\u0027ve never been made aware of psycopg2\u0027s non-standard TransactionRollbackError before, and this should be reported as a sqlalchemy.exc.OperationalError.  https://bitbucket.org/zzzeek/sqlalchemy/issue/3075/support-non-standard-dbapi-exception is added for this issue.","commit_id":"ac9c022fb26b7f4d9bbb8f35ad57b9517665cd0e"},{"author":{"_account_id":8021,"name":"wingwj","email":"wingwj@gmail.com","username":"wingwj"},"change_message_id":"fc772496e61b6f5f0629f5020acb575c9045de2c","unresolved":false,"context_lines":[{"line_number":465,"context_line":"            # under postgresql. The original exception thrown from postgresql"},{"line_number":466,"context_line":"            # is TransactionRollbackError, it\u0027s not included in the sqlalchemy."},{"line_number":467,"context_line":"            # Moreover, DBAPIError is the base class of OperationalError"},{"line_number":468,"context_line":"            # and IntegrityError, so we catch it on the end of the process."},{"line_number":469,"context_line":"            _raise_if_db_connection_lost(e, self.bind)"},{"line_number":470,"context_line":"            _raise_if_deadlock_error(e, self.bind.dialect.name)"},{"line_number":471,"context_line":"            LOG.exception(_LE(\u0027DBAPIError exception wrapped from %s\u0027 % e))"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_56267cbb","line":468,"in_reply_to":"7adec928_b76b4584","updated":"2014-05-22 12:24:14.000000000","message":"Because the \u0027TransactionRollbackError\u0027 thrown from postgresql will be converted to the \u0027DBAPIError\u0027 in sqlalchemy.\n\nPlease check the original log for detail:\nhttp://paste.openstack.org/show/61534/\n--\"DBAPIError: (TransactionRollbackError) deadlock detected\"","commit_id":"ac9c022fb26b7f4d9bbb8f35ad57b9517665cd0e"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"42944070d1325cbfef548f06f16d3527bab08ff7","unresolved":false,"context_lines":[{"line_number":468,"context_line":"            # and IntegrityError, so we catch it on the end of the process."},{"line_number":469,"context_line":"            _raise_if_db_connection_lost(e, self.bind)"},{"line_number":470,"context_line":"            _raise_if_deadlock_error(e, self.bind.dialect.name)"},{"line_number":471,"context_line":"            LOG.exception(_LE(\u0027DBAPIError exception wrapped from %s\u0027 % e))"},{"line_number":472,"context_line":"            raise exception.DBError(e)"},{"line_number":473,"context_line":"        except Exception as e:"},{"line_number":474,"context_line":"            LOG.exception(_LE(\u0027DB exception wrapped.\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_bdf21b98","line":471,"updated":"2014-06-10 13:46:37.000000000","message":"This is not the correct use of a translation function. The string passed to the function should *always* be a literal, so that it will be the same as the value that appears in the message catalog.\n\n  LOG.exception(_LE(\u0027DBAPIError exception wrapped from %s\u0027) % e)\n\n(note the different location of the \"% e\" part of the expression)","commit_id":"ac9c022fb26b7f4d9bbb8f35ad57b9517665cd0e"},{"author":{"_account_id":8021,"name":"wingwj","email":"wingwj@gmail.com","username":"wingwj"},"change_message_id":"504b96adfee3784e665943b3c338ce75b90b63f8","unresolved":false,"context_lines":[{"line_number":468,"context_line":"            # and IntegrityError, so we catch it on the end of the process."},{"line_number":469,"context_line":"            _raise_if_db_connection_lost(e, self.bind)"},{"line_number":470,"context_line":"            _raise_if_deadlock_error(e, self.bind.dialect.name)"},{"line_number":471,"context_line":"            LOG.exception(_LE(\u0027DBAPIError exception wrapped from %s\u0027 % e))"},{"line_number":472,"context_line":"            raise exception.DBError(e)"},{"line_number":473,"context_line":"        except Exception as e:"},{"line_number":474,"context_line":"            LOG.exception(_LE(\u0027DB exception wrapped.\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_7c531a39","line":471,"in_reply_to":"1ae5cdf2_bdf21b98","updated":"2014-06-11 02:36:50.000000000","message":"Done","commit_id":"ac9c022fb26b7f4d9bbb8f35ad57b9517665cd0e"}]}
