)]}'
{"swift/container/auditor.py":[{"author":{"_account_id":7479,"name":"paul luse","email":"paul.e.luse@intel.com","username":"peluse"},"change_message_id":"7d042e3a8882ebbdc34972f66a2fac90a2bc391f","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                conn.execute(\u0027\u0027\u0027SELECT storage_policy_index"},{"line_number":135,"context_line":"                                FROM container_stat\u0027\u0027\u0027)"},{"line_number":136,"context_line":"            except BaseException as err:"},{"line_number":137,"context_line":"                if \u0027no such column: storage_policy_index\u0027 in str(err):"},{"line_number":138,"context_line":"                    broker.set_storage_policy_index(0)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2Bbsc%3D","line":137,"updated":"2014-03-26 20:03:48.000000000","message":"do you know this line shows up at yellow in coverage (partial)?  I double checked and your test does indeed exercise this path","commit_id":"83ce3fc4804c106ac6a150793913e28e57213685"}],"swift/container/backend.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"081d4464e82cec68c4bea2cfe7a3e416afa4a0d0","unresolved":false,"context_lines":[{"line_number":292,"context_line":"                    if \u0027no such column: x_container_sync_point\u0027 in str(err):"},{"line_number":293,"context_line":"                        if do_migrations:"},{"line_number":294,"context_line":"                            self._migrate_add_container_sync_points(conn)"},{"line_number":295,"context_line":"                            continue"},{"line_number":296,"context_line":"                        trailing_sync \u003d \u0027-1 AS x_container_sync_point1, \u0027 \\"},{"line_number":297,"context_line":"                                        \u0027-1 AS x_container_sync_point2\u0027"},{"line_number":298,"context_line":"                    elif \u0027no such column: storage_policy_index\u0027 in str(err):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAW3%2F%2F%2Fe8%3D","line":295,"updated":"2014-04-09 00:38:33.000000000","message":"I guess i\u0027m worried that this could end up an infinite loop.  I mean it *can\u0027t* - but it sorta feels like it could.\n\nI should probably say \"if do_migrations and migration_attempts \u003c XXX\" meh, but then you wanna like log the error, sigh.\n\nI guess what I really want is for it to attempt the migration, but if that doesn\u0027t prevent the next iteration of the loop from hitting that block raising the error out to the caller.","commit_id":"dee7573085f2e16649acb067369504f308935da1"},{"author":{"_account_id":7479,"name":"paul luse","email":"paul.e.luse@intel.com","username":"peluse"},"change_message_id":"4918fcd2c068cf5951e3308c028a0a999ab12a66","unresolved":false,"context_lines":[{"line_number":292,"context_line":"                    if \u0027no such column: x_container_sync_point\u0027 in str(err):"},{"line_number":293,"context_line":"                        if do_migrations:"},{"line_number":294,"context_line":"                            self._migrate_add_container_sync_points(conn)"},{"line_number":295,"context_line":"                            continue"},{"line_number":296,"context_line":"                        trailing_sync \u003d \u0027-1 AS x_container_sync_point1, \u0027 \\"},{"line_number":297,"context_line":"                                        \u0027-1 AS x_container_sync_point2\u0027"},{"line_number":298,"context_line":"                    elif \u0027no such column: storage_policy_index\u0027 in str(err):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAW3%2F%2F4b8%3D","line":295,"in_reply_to":"AAAAW3%2F%2F%2Fe8%3D","updated":"2014-04-09 17:55:50.000000000","message":"So w\u0027re not in a try/except on the alteration of the container_stat table so if it failed, which would be why we might get here again, wouldn\u0027t we raise here?","commit_id":"dee7573085f2e16649acb067369504f308935da1"},{"author":{"_account_id":7479,"name":"paul luse","email":"paul.e.luse@intel.com","username":"peluse"},"change_message_id":"043abb9c9fe451efbdcf8207340d795346882ef2","unresolved":false,"context_lines":[{"line_number":292,"context_line":"                    if \u0027no such column: x_container_sync_point\u0027 in str(err):"},{"line_number":293,"context_line":"                        if do_migrations:"},{"line_number":294,"context_line":"                            self._migrate_add_container_sync_points(conn)"},{"line_number":295,"context_line":"                            continue"},{"line_number":296,"context_line":"                        trailing_sync \u003d \u0027-1 AS x_container_sync_point1, \u0027 \\"},{"line_number":297,"context_line":"                                        \u0027-1 AS x_container_sync_point2\u0027"},{"line_number":298,"context_line":"                    elif \u0027no such column: storage_policy_index\u0027 in str(err):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAW3%2F%2Ftbk%3D","line":295,"in_reply_to":"AAAAW3%2F%2F4U4%3D","updated":"2014-04-10 23:30:21.000000000","message":"cool enough","commit_id":"dee7573085f2e16649acb067369504f308935da1"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"3fbaeb1b1577b90cc034642b7b215e698619fb15","unresolved":false,"context_lines":[{"line_number":292,"context_line":"                    if \u0027no such column: x_container_sync_point\u0027 in str(err):"},{"line_number":293,"context_line":"                        if do_migrations:"},{"line_number":294,"context_line":"                            self._migrate_add_container_sync_points(conn)"},{"line_number":295,"context_line":"                            continue"},{"line_number":296,"context_line":"                        trailing_sync \u003d \u0027-1 AS x_container_sync_point1, \u0027 \\"},{"line_number":297,"context_line":"                                        \u0027-1 AS x_container_sync_point2\u0027"},{"line_number":298,"context_line":"                    elif \u0027no such column: storage_policy_index\u0027 in str(err):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAW3%2F%2F4U4%3D","line":295,"in_reply_to":"AAAAW3%2F%2F4b8%3D","updated":"2014-04-09 18:08:28.000000000","message":"yeah yeah yeah, it *can\u0027t* happen, but for the same reason it feels overly trusting to write:\n\n    i \u003d 0\n    while True:\n        i +\u003d 1\n        if i \u003d\u003d 3:\n            break\n\ninstead of \"i \u003e\u003d 3\" I think it\u0027d be worth adding the explicit guard against an infinite loop.\n\nMaybe i\u0027m overly paranoid, but if there was a bug in the migrate code so that it executed but returned early and didn\u0027t actually perform the migration we\u0027d just do it over and over and over and over again.  It could even be one of those things where it works on in-memory databases, but then when it hits a real database outside of unittests.   Maybe I\u0027m overly paranoid...  I\u0027ll add it - I think it\u0027ll be ok.","commit_id":"dee7573085f2e16649acb067369504f308935da1"}]}
