)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"96a6f1447bcb8dde86fc44d0ce05d7f5b8902511","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2018-09-26 04:33:34 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"nova-manage - fix online_data_migrations counts"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ib616f2efb69baa16e18601d27b747220bbefeb16"},{"line_number":10,"context_line":"Closes-Bug: #1794364"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_324775a6","line":8,"updated":"2018-09-26 14:22:51.000000000","message":"Could we maybe get a little more explanation here? Maybe just the opening paragraph from the bug report?","commit_id":"0b8980fb0420ffebea34283df927157cc530f448"}],"nova/cmd/manage.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"96a6f1447bcb8dde86fc44d0ce05d7f5b8902511","unresolved":false,"context_lines":[{"line_number":686,"context_line":"                        \u0027migrated\u0027) % {\u0027total\u0027: found,"},{"line_number":687,"context_line":"                                       \u0027meth\u0027: name,"},{"line_number":688,"context_line":"                                       \u0027done\u0027: done})"},{"line_number":689,"context_line":"            migrations[name] \u003d (found, done)"},{"line_number":690,"context_line":"            if max_count is not None:"},{"line_number":691,"context_line":"                ran +\u003d done"},{"line_number":692,"context_line":"                if ran \u003e\u003d max_count:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_527a3125","line":689,"range":{"start_line":689,"start_character":31,"end_line":689,"end_character":44},"updated":"2018-09-26 14:22:51.000000000","message":"nit: parens redundant","commit_id":"0b8980fb0420ffebea34283df927157cc530f448"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9e13a5513d8e38827c7d2da03860d1bddda77141","unresolved":false,"context_lines":[{"line_number":686,"context_line":"                        \u0027migrated\u0027) % {\u0027total\u0027: found,"},{"line_number":687,"context_line":"                                       \u0027meth\u0027: name,"},{"line_number":688,"context_line":"                                       \u0027done\u0027: done})"},{"line_number":689,"context_line":"            migrations[name] \u003d found, done"},{"line_number":690,"context_line":"            if max_count is not None:"},{"line_number":691,"context_line":"                ran +\u003d done"},{"line_number":692,"context_line":"                if ran \u003e\u003d max_count:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_287aa176","line":689,"updated":"2018-09-26 21:05:07.000000000","message":"OK so this is the per-migration method result for this batch, and _run_migration will either continue or stop if up to this point we\u0027ve processed max_count of records across all migration methods.","commit_id":"c4c6dc736e084f2d919b9bcf93d26df87e0341c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9e13a5513d8e38827c7d2da03860d1bddda77141","unresolved":false,"context_lines":[{"line_number":716,"context_line":"        while ran is None or ran !\u003d 0:"},{"line_number":717,"context_line":"            migrations \u003d self._run_migration(ctxt, max_count)"},{"line_number":718,"context_line":"            ran \u003d 0"},{"line_number":719,"context_line":"            for name in migrations:"},{"line_number":720,"context_line":"                migration_info.setdefault(name, (0, 0))"},{"line_number":721,"context_line":"                migration_info[name] \u003d ("},{"line_number":722,"context_line":"                    migration_info[name][0] + migrations[name][0],"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_088fa576","line":719,"updated":"2018-09-26 21:05:07.000000000","message":"Some comments in this code could definitely be nice, since it\u0027s hard to grok how this works at first glance.","commit_id":"c4c6dc736e084f2d919b9bcf93d26df87e0341c9"},{"author":{"_account_id":23561,"name":"iain MacDonnell","email":"iain.macdonnell@oracle.com","username":"imacdonn"},"change_message_id":"687f2a4e40c99bbc32ac795f31974b36f33712b3","unresolved":false,"context_lines":[{"line_number":716,"context_line":"        while ran is None or ran !\u003d 0:"},{"line_number":717,"context_line":"            migrations \u003d self._run_migration(ctxt, max_count)"},{"line_number":718,"context_line":"            ran \u003d 0"},{"line_number":719,"context_line":"            for name in migrations:"},{"line_number":720,"context_line":"                migration_info.setdefault(name, (0, 0))"},{"line_number":721,"context_line":"                migration_info[name] \u003d ("},{"line_number":722,"context_line":"                    migration_info[name][0] + migrations[name][0],"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_d55061d8","line":719,"in_reply_to":"3f79a3b5_088fa576","updated":"2018-09-26 23:48:42.000000000","message":"No kidding!","commit_id":"c4c6dc736e084f2d919b9bcf93d26df87e0341c9"}],"nova/tests/unit/test_nova_manage.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9e13a5513d8e38827c7d2da03860d1bddda77141","unresolved":false,"context_lines":[{"line_number":785,"context_line":"        command.online_data_migrations(None)"},{"line_number":786,"context_line":"        expected \u003d \"\"\"\\"},{"line_number":787,"context_line":"Running batches of 50 until complete"},{"line_number":788,"context_line":"50 rows matched query fake_migration, 50 migrated"},{"line_number":789,"context_line":"40 rows matched query fake_migration, 40 migrated"},{"line_number":790,"context_line":"30 rows matched query fake_migration, 30 migrated"},{"line_number":791,"context_line":"+----------------+--------------+-----------+"},{"line_number":792,"context_line":"|   Migration    | Total Needed | Completed |"},{"line_number":793,"context_line":"+----------------+--------------+-----------+"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_a8e2312f","line":790,"range":{"start_line":788,"start_character":0,"end_line":790,"end_character":49},"updated":"2018-09-26 21:05:07.000000000","message":"Hmm, this is kind of weird. If we have 120 total to migrate, and we\u0027re doing them in batches of 50, why wouldn\u0027t we have something like:\n\n50 rows matched query fake_migration, 50 migrated\n50 rows matched query fake_migration, 50 migrated\n20 rows matched query fake_migration, 20 migrated\n\nIs that just an artifact of how fake_migration works? I guess so.","commit_id":"c4c6dc736e084f2d919b9bcf93d26df87e0341c9"},{"author":{"_account_id":23561,"name":"iain MacDonnell","email":"iain.macdonnell@oracle.com","username":"imacdonn"},"change_message_id":"687f2a4e40c99bbc32ac795f31974b36f33712b3","unresolved":false,"context_lines":[{"line_number":785,"context_line":"        command.online_data_migrations(None)"},{"line_number":786,"context_line":"        expected \u003d \"\"\"\\"},{"line_number":787,"context_line":"Running batches of 50 until complete"},{"line_number":788,"context_line":"50 rows matched query fake_migration, 50 migrated"},{"line_number":789,"context_line":"40 rows matched query fake_migration, 40 migrated"},{"line_number":790,"context_line":"30 rows matched query fake_migration, 30 migrated"},{"line_number":791,"context_line":"+----------------+--------------+-----------+"},{"line_number":792,"context_line":"|   Migration    | Total Needed | Completed |"},{"line_number":793,"context_line":"+----------------+--------------+-----------+"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_553d318c","line":790,"range":{"start_line":788,"start_character":0,"end_line":790,"end_character":49},"in_reply_to":"3f79a3b5_a8e2312f","updated":"2018-09-26 23:48:42.000000000","message":"The whole batch-handling thing is a bit weird, IMO - e.g. it\u0027s not clear to me what\u0027s supposed to happen if more than max-count rows are deemed \"unmigrateable\".\n\nAnyway, I\u0027ve updated the test based on my estimation of what it\u0027s trying to emulate, but there\u0027s some guessing involved in that. I could make it do batches of 50 the normal way instead....","commit_id":"c4c6dc736e084f2d919b9bcf93d26df87e0341c9"}]}
