)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"ca81a220bc27ab93353d35342eb6b3906ec4ed0c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Currently, deadlock is only checked for in mysql and postgresql."},{"line_number":10,"context_line":"This adds a check for db2 deadlock"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Fixes bug #1340793"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Icef725ed75929ff13234ea58026e6bf0f2e2c852"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"baada198_4cdc3147","line":12,"updated":"2014-07-16 16:09:59.000000000","message":"Closes-Bug: #1234567 is the preferred way to do this now: https://wiki.openstack.org/wiki/GitCommitMessages#Including_external_references","commit_id":"7d78e3e1be7b4e45aedb3279caeeb457946c5d1a"}],"oslo/db/sqlalchemy/session.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fd34495a82d22465a52a8e9e8d7acdd186224a85","unresolved":false,"context_lines":[{"line_number":413,"context_line":"_DEADLOCK_RE_DB \u003d {"},{"line_number":414,"context_line":"    \"mysql\": re.compile(r\"^.*\\(1213, \u0027Deadlock.*\"),"},{"line_number":415,"context_line":"    \"postgresql\": re.compile(r\"^.*deadlock detected.*\"),"},{"line_number":416,"context_line":"    \"db2\": re.compile(r\"^.*SQL0911N.*\")"},{"line_number":417,"context_line":"}"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_f532bd0e","line":416,"updated":"2014-07-11 19:37:57.000000000","message":"The engine name is \u0027ibm_db_sa\u0027 here.  See line 349.","commit_id":"0b6f5816cc9d541290ef2cc974c58fc2520fd321"},{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"01695aceff349545cec2294f7a36e45edfd5c57c","unresolved":false,"context_lines":[{"line_number":408,"context_line":"# (TransactionRollbackError) deadlock detected \u003cdeadlock_details\u003e"},{"line_number":409,"context_line":"#"},{"line_number":410,"context_line":"# ibm_db_sa:"},{"line_number":411,"context_line":"# SQL0911N The current transaction has been rolled back because of a deadlock"},{"line_number":412,"context_line":"#          or timeout \u003cdeadlock details\u003e"},{"line_number":413,"context_line":"_DEADLOCK_RE_DB \u003d {"},{"line_number":414,"context_line":"    \"mysql\": re.compile(r\"^.*\\(1213, \u0027Deadlock.*\"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_6044adb7","line":411,"updated":"2014-07-16 09:08:30.000000000","message":"it\u0027s would be nice to add a link to the documentation here","commit_id":"0b93b056e9ec4a72b7e5591e36f6d983b6f25010"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dd1a9b4bbb33fbc2f03b31f92cc011f1862512e7","unresolved":false,"context_lines":[{"line_number":408,"context_line":"# (TransactionRollbackError) deadlock detected \u003cdeadlock_details\u003e"},{"line_number":409,"context_line":"#"},{"line_number":410,"context_line":"# ibm_db_sa:"},{"line_number":411,"context_line":"# SQL0911N The current transaction has been rolled back because of a deadlock"},{"line_number":412,"context_line":"#          or timeout \u003cdeadlock details\u003e"},{"line_number":413,"context_line":"_DEADLOCK_RE_DB \u003d {"},{"line_number":414,"context_line":"    \"mysql\": re.compile(r\"^.*\\(1213, \u0027Deadlock.*\"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_662af42d","line":411,"in_reply_to":"baada198_6044adb7","updated":"2014-07-16 15:25:49.000000000","message":"It\u0027s in the bug, plus we don\u0027t have doc links for the other engine failures in the code, and the doc link will probably expire at some point when whatever version of DB2 you\u0027re linking to goes out of service.","commit_id":"0b93b056e9ec4a72b7e5591e36f6d983b6f25010"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"50de6b740f30eb2f2227bf2701ee46f7e288b780","unresolved":false,"context_lines":[{"line_number":408,"context_line":"# (TransactionRollbackError) deadlock detected \u003cdeadlock_details\u003e"},{"line_number":409,"context_line":"#"},{"line_number":410,"context_line":"# ibm_db_sa:"},{"line_number":411,"context_line":"# SQL0911N The current transaction has been rolled back because of a deadlock"},{"line_number":412,"context_line":"#          or timeout \u003cdeadlock details\u003e"},{"line_number":413,"context_line":"_DEADLOCK_RE_DB \u003d {"},{"line_number":414,"context_line":"    \"mysql\": re.compile(r\"^.*\\(1213, \u0027Deadlock.*\"),"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_17cb8b1e","line":411,"updated":"2014-07-26 19:15:55.000000000","message":"Looks like this is actually a ProgrammingError, so we could technically catch that separately in _wrap_db_error, but the except sqla_exc.DBAPIError will handle it so maybe not worth changing.","commit_id":"7d78e3e1be7b4e45aedb3279caeeb457946c5d1a"}],"tests/sqlalchemy/test_sqlalchemy.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fd34495a82d22465a52a8e9e8d7acdd186224a85","unresolved":false,"context_lines":[{"line_number":346,"context_line":"        self.assertRaises(db_exc.DBDeadlock,"},{"line_number":347,"context_line":"                          session._raise_if_deadlock_error,"},{"line_number":348,"context_line":"                          deadlock_error,"},{"line_number":349,"context_line":"                          \u0027db2\u0027)"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"    def test_mysql_fail_without_deadlock(self):"},{"line_number":352,"context_line":"        statement \u003d (\u0027SELECT quota_usages.created_at AS \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_f519dd88","line":349,"updated":"2014-07-11 19:37:57.000000000","message":"Should be \u0027ibm_db_sa\u0027.","commit_id":"0b6f5816cc9d541290ef2cc974c58fc2520fd321"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fd34495a82d22465a52a8e9e8d7acdd186224a85","unresolved":false,"context_lines":[{"line_number":421,"context_line":"        orig \u003d sqla_exc.SQLAlchemyError(\u0027Other error occurred.\u0027)"},{"line_number":422,"context_line":"        dbapi_error \u003d sqla_exc.DBAPIError(statement, params, orig)"},{"line_number":423,"context_line":"        self.assertIsNone(session._raise_if_deadlock_error(dbapi_error,"},{"line_number":424,"context_line":"                                                           \u0027db2\u0027))"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"class MySQLModeTestCase(test_base.MySQLOpportunisticTestCase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_950a6124","line":424,"updated":"2014-07-11 19:37:57.000000000","message":"ibm_db_sa","commit_id":"0b6f5816cc9d541290ef2cc974c58fc2520fd321"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"748264c59fb57446f2d82a15b241a6be11a4c337","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        params \u003d {\u0027project_id_1\u0027: u\u00278891d4478bbf48ad992f050cdf55e9b5\u0027,"},{"line_number":340,"context_line":"                  \u0027user_id_1\u0027: u\u002722b6a9fe91b349639ce39146274a25ba\u0027,"},{"line_number":341,"context_line":"                  \u0027deleted_1\u0027: 0}"},{"line_number":342,"context_line":"        orig \u003d sqla_exc.SQLAlchemyError(\" SQL0911N The current transaction \""},{"line_number":343,"context_line":"                                        \" has been rolled back because of a \""},{"line_number":344,"context_line":"                                        \" deadlock or timeout\")"},{"line_number":345,"context_line":"        deadlock_error \u003d sqla_exc.DBAPIError(statement, params, orig)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_71bda8b0","line":342,"updated":"2014-07-14 18:27:27.000000000","message":"Why are there spaces between each line here?","commit_id":"e379520dececf8532565a32fe8b49cada195c6f6"},{"author":{"_account_id":11832,"name":"Bryan Jones","email":"jonesbr@us.ibm.com","username":"jonesbr"},"change_message_id":"46c7148400fb97fa921fc5052ec1d3d50acb9362","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        params \u003d {\u0027project_id_1\u0027: u\u00278891d4478bbf48ad992f050cdf55e9b5\u0027,"},{"line_number":340,"context_line":"                  \u0027user_id_1\u0027: u\u002722b6a9fe91b349639ce39146274a25ba\u0027,"},{"line_number":341,"context_line":"                  \u0027deleted_1\u0027: 0}"},{"line_number":342,"context_line":"        orig \u003d sqla_exc.SQLAlchemyError(\" SQL0911N The current transaction \""},{"line_number":343,"context_line":"                                        \" has been rolled back because of a \""},{"line_number":344,"context_line":"                                        \" deadlock or timeout\")"},{"line_number":345,"context_line":"        deadlock_error \u003d sqla_exc.DBAPIError(statement, params, orig)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_bf1aa67a","line":342,"in_reply_to":"baada198_71bda8b0","updated":"2014-07-14 20:55:16.000000000","message":"Done","commit_id":"e379520dececf8532565a32fe8b49cada195c6f6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e1f80c3d9568cecfa835e4114d4cab250a7da3b9","unresolved":false,"context_lines":[{"line_number":398,"context_line":"        self.assertIsNone(session._raise_if_deadlock_error(dbapi_error,"},{"line_number":399,"context_line":"                                                           \u0027postgresql\u0027))"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"    def test_ibm_db_sa_fail_without_deadlock(self):"},{"line_number":402,"context_line":"        statement \u003d (\u0027SELECT quota_usages.created_at AS \u0027"},{"line_number":403,"context_line":"                     \u0027quota_usages_created_at, quota_usages.updated_at AS \u0027"},{"line_number":404,"context_line":"                     \u0027quota_usages_updated_at, quota_usages.deleted_at AS \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_a97082dd","line":401,"updated":"2014-07-15 22:29:01.000000000","message":"We could create a private test method for all 3 engines and just pass in the engine key and the error message, then have 3 engine-specific public tests call the private method with their values, then we don\u0027t need all of this duplicated code in the 3 tests.  But that could be a follow on cleanup patch.","commit_id":"0b93b056e9ec4a72b7e5591e36f6d983b6f25010"},{"author":{"_account_id":11832,"name":"Bryan Jones","email":"jonesbr@us.ibm.com","username":"jonesbr"},"change_message_id":"748f0d9af9f3c8c37a84df1e5a115876c876c834","unresolved":false,"context_lines":[{"line_number":398,"context_line":"        self.assertIsNone(session._raise_if_deadlock_error(dbapi_error,"},{"line_number":399,"context_line":"                                                           \u0027postgresql\u0027))"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"    def test_ibm_db_sa_fail_without_deadlock(self):"},{"line_number":402,"context_line":"        statement \u003d (\u0027SELECT quota_usages.created_at AS \u0027"},{"line_number":403,"context_line":"                     \u0027quota_usages_created_at, quota_usages.updated_at AS \u0027"},{"line_number":404,"context_line":"                     \u0027quota_usages_updated_at, quota_usages.deleted_at AS \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_8624680f","line":401,"in_reply_to":"baada198_8010e1ac","updated":"2014-07-16 15:32:19.000000000","message":"Done","commit_id":"0b93b056e9ec4a72b7e5591e36f6d983b6f25010"},{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"01695aceff349545cec2294f7a36e45edfd5c57c","unresolved":false,"context_lines":[{"line_number":398,"context_line":"        self.assertIsNone(session._raise_if_deadlock_error(dbapi_error,"},{"line_number":399,"context_line":"                                                           \u0027postgresql\u0027))"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"    def test_ibm_db_sa_fail_without_deadlock(self):"},{"line_number":402,"context_line":"        statement \u003d (\u0027SELECT quota_usages.created_at AS \u0027"},{"line_number":403,"context_line":"                     \u0027quota_usages_created_at, quota_usages.updated_at AS \u0027"},{"line_number":404,"context_line":"                     \u0027quota_usages_updated_at, quota_usages.deleted_at AS \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_8010e1ac","line":401,"in_reply_to":"baada198_a97082dd","updated":"2014-07-16 09:08:30.000000000","message":"agreed","commit_id":"0b93b056e9ec4a72b7e5591e36f6d983b6f25010"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"6e48d4cd7e19db696bd8dad5668942efbc7750f2","unresolved":false,"context_lines":[{"line_number":292,"context_line":"    def test_mysql_deadlock(self):"},{"line_number":293,"context_line":"        self._test_db_deadlock(\"mysql\","},{"line_number":294,"context_line":"                               \"(1213, \u0027Deadlock found when trying to get \""},{"line_number":295,"context_line":"                               \" lock; try restarting transaction\u0027)\")"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    def test_postgresql_deadlock(self):"},{"line_number":298,"context_line":"        self._test_db_deadlock(\"postgresql\","}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_0c36b9b4","line":295,"updated":"2014-07-16 16:08:40.000000000","message":"You have a leading space on this line, and a trailing one on the previous line.  Shouldn\u0027t matter, but it might be nice to fix that.","commit_id":"7d78e3e1be7b4e45aedb3279caeeb457946c5d1a"}]}
