)]}'
{"nova/cmd/manage.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"08ee2d437e25c878cf54c98b1560e92726b7a833","unresolved":false,"context_lines":[{"line_number":376,"context_line":""},{"line_number":377,"context_line":"    # NOTE(danms): These functions are called with a DB context and a"},{"line_number":378,"context_line":"    # count, which is the maximum batch size requested by the"},{"line_number":379,"context_line":"    # user. They must be idempotent. At most count records should be"},{"line_number":380,"context_line":"    # migrated. The function must return a tuple of (found, done). The"},{"line_number":381,"context_line":"    # found value indicates how many unmigrated records remain, and a"},{"line_number":382,"context_line":"    # nonzero value tells the user that there is still work to do. The"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_9e187dd3","line":379,"range":{"start_line":379,"start_character":45,"end_line":379,"end_character":50},"updated":"2018-06-11 14:53:46.000000000","message":"nit: $count\n\nJust to make it clear that count is being used as a variable in this sentence, which might otherwise be unclear.","commit_id":"7db00c02832740f516b6e800f0e92d1c22688901"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"08ee2d437e25c878cf54c98b1560e92726b7a833","unresolved":false,"context_lines":[{"line_number":384,"context_line":"    # migrated by the funtion. Thus if both (found, done) are nonzero,"},{"line_number":385,"context_line":"    # work was done and some work remains. If found is nonzero and"},{"line_number":386,"context_line":"    # done is zero, some records are not migratable, but all"},{"line_number":387,"context_line":"    # migrations that can complete have finished. The done value may"},{"line_number":388,"context_line":"    # be capped at the limit, especially if it is expensive to count"},{"line_number":389,"context_line":"    # all remaining unmigrated records; the important signal is when"},{"line_number":390,"context_line":"    # it is nonzero."}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_be71b90f","line":387,"range":{"start_line":387,"start_character":54,"end_line":387,"end_character":58},"updated":"2018-06-11 14:53:46.000000000","message":"I think you mean \"found value\" here, since that\u0027s what prompted the need for this comment.","commit_id":"7db00c02832740f516b6e800f0e92d1c22688901"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"08ee2d437e25c878cf54c98b1560e92726b7a833","unresolved":false,"context_lines":[{"line_number":382,"context_line":"    # nonzero value tells the user that there is still work to do. The"},{"line_number":383,"context_line":"    # done value indicates whether or not any records were actually"},{"line_number":384,"context_line":"    # migrated by the funtion. Thus if both (found, done) are nonzero,"},{"line_number":385,"context_line":"    # work was done and some work remains. If found is nonzero and"},{"line_number":386,"context_line":"    # done is zero, some records are not migratable, but all"},{"line_number":387,"context_line":"    # migrations that can complete have finished. The done value may"},{"line_number":388,"context_line":"    # be capped at the limit, especially if it is expensive to count"},{"line_number":389,"context_line":"    # all remaining unmigrated records; the important signal is when"},{"line_number":390,"context_line":"    # it is nonzero."}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_5e46657d","line":387,"range":{"start_line":385,"start_character":43,"end_line":387,"end_character":49},"updated":"2018-06-11 14:53:46.000000000","message":"This threw me at first, but if I\u0027m understanding correctly, this is the logic that makes this statement true:\n\n        ran \u003d None\n        migration_info \u003d {}\n        while ran is None or ran !\u003d 0:\n            migrations \u003d self._run_migration(ctxt, max_count)\n            migration_info.update(migrations)\n            ran \u003d sum([done for found, done in migrations.values()])\n            if not unlimited:\n                break","commit_id":"7db00c02832740f516b6e800f0e92d1c22688901"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2cb35a6d1c11fe47579f3b6ad15b4b16411c323b","unresolved":false,"context_lines":[{"line_number":384,"context_line":"    # migrated by the funtion. Thus if both (found, done) are nonzero,"},{"line_number":385,"context_line":"    # work was done and some work remains. If found is nonzero and"},{"line_number":386,"context_line":"    # done is zero, some records are not migratable, but all"},{"line_number":387,"context_line":"    # migrations that can complete have finished. The done value may"},{"line_number":388,"context_line":"    # be capped at the limit, especially if it is expensive to count"},{"line_number":389,"context_line":"    # all remaining unmigrated records; the important signal is when"},{"line_number":390,"context_line":"    # it is nonzero."}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_32707da4","line":387,"range":{"start_line":387,"start_character":54,"end_line":387,"end_character":58},"in_reply_to":"5f7c97a3_be71b90f","updated":"2018-06-11 14:58:26.000000000","message":"Yes.","commit_id":"7db00c02832740f516b6e800f0e92d1c22688901"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b9551e01c996ff0f65c35471cecdc4a5bae68c7a","unresolved":false,"context_lines":[{"line_number":378,"context_line":"    # count, which is the maximum batch size requested by the"},{"line_number":379,"context_line":"    # user. They must be idempotent. At most $count records should be"},{"line_number":380,"context_line":"    # migrated. The function must return a tuple of (found, done). The"},{"line_number":381,"context_line":"    # found value indicates how many unmigrated records remain, and a"},{"line_number":382,"context_line":"    # nonzero value tells the user that there is still work to do. The"},{"line_number":383,"context_line":"    # done value indicates whether or not any records were actually"},{"line_number":384,"context_line":"    # migrated by the funtion. Thus if both (found, done) are nonzero,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_12c7819a","line":381,"range":{"start_line":381,"start_character":56,"end_line":381,"end_character":62},"updated":"2018-06-11 15:08:52.000000000","message":"remain (after this batch), or remained (before this batch)?","commit_id":"0c831e851d074e8538be12a2980466a84fae32d8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b9551e01c996ff0f65c35471cecdc4a5bae68c7a","unresolved":false,"context_lines":[{"line_number":379,"context_line":"    # user. They must be idempotent. At most $count records should be"},{"line_number":380,"context_line":"    # migrated. The function must return a tuple of (found, done). The"},{"line_number":381,"context_line":"    # found value indicates how many unmigrated records remain, and a"},{"line_number":382,"context_line":"    # nonzero value tells the user that there is still work to do. The"},{"line_number":383,"context_line":"    # done value indicates whether or not any records were actually"},{"line_number":384,"context_line":"    # migrated by the funtion. Thus if both (found, done) are nonzero,"},{"line_number":385,"context_line":"    # work was done and some work remains. If found is nonzero and"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_d2c4a994","line":382,"range":{"start_line":382,"start_character":6,"end_line":382,"end_character":19},"updated":"2018-06-11 15:08:52.000000000","message":"for which, found or done?","commit_id":"0c831e851d074e8538be12a2980466a84fae32d8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"dc339b3254ddae61626dbe88f39c61c9a9cf87f4","unresolved":false,"context_lines":[{"line_number":379,"context_line":"    # user. They must be idempotent. At most $count records should be"},{"line_number":380,"context_line":"    # migrated. The function must return a tuple of (found, done). The"},{"line_number":381,"context_line":"    # found value indicates how many unmigrated records remain, and a"},{"line_number":382,"context_line":"    # nonzero value tells the user that there is still work to do. The"},{"line_number":383,"context_line":"    # done value indicates whether or not any records were actually"},{"line_number":384,"context_line":"    # migrated by the funtion. Thus if both (found, done) are nonzero,"},{"line_number":385,"context_line":"    # work was done and some work remains. If found is nonzero and"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_55d16356","line":382,"range":{"start_line":382,"start_character":6,"end_line":382,"end_character":19},"in_reply_to":"5f7c97a3_12a6a1c1","updated":"2018-06-11 15:49:54.000000000","message":"sorry, yeah, I misread","commit_id":"0c831e851d074e8538be12a2980466a84fae32d8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3d3eb19a8dfd2d4241e077fa379171f2163c248d","unresolved":false,"context_lines":[{"line_number":379,"context_line":"    # user. They must be idempotent. At most $count records should be"},{"line_number":380,"context_line":"    # migrated. The function must return a tuple of (found, done). The"},{"line_number":381,"context_line":"    # found value indicates how many unmigrated records remain, and a"},{"line_number":382,"context_line":"    # nonzero value tells the user that there is still work to do. The"},{"line_number":383,"context_line":"    # done value indicates whether or not any records were actually"},{"line_number":384,"context_line":"    # migrated by the funtion. Thus if both (found, done) are nonzero,"},{"line_number":385,"context_line":"    # work was done and some work remains. If found is nonzero and"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_12a6a1c1","line":382,"range":{"start_line":382,"start_character":6,"end_line":382,"end_character":19},"in_reply_to":"5f7c97a3_d2c4a994","updated":"2018-06-11 15:12:13.000000000","message":"I thought it was clear that it was found, given this sentence is about found.","commit_id":"0c831e851d074e8538be12a2980466a84fae32d8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b9551e01c996ff0f65c35471cecdc4a5bae68c7a","unresolved":false,"context_lines":[{"line_number":381,"context_line":"    # found value indicates how many unmigrated records remain, and a"},{"line_number":382,"context_line":"    # nonzero value tells the user that there is still work to do. The"},{"line_number":383,"context_line":"    # done value indicates whether or not any records were actually"},{"line_number":384,"context_line":"    # migrated by the funtion. Thus if both (found, done) are nonzero,"},{"line_number":385,"context_line":"    # work was done and some work remains. If found is nonzero and"},{"line_number":386,"context_line":"    # done is zero, some records are not migratable, but all"},{"line_number":387,"context_line":"    # migrations that can complete have finished. The found value may"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_92bab108","line":384,"range":{"start_line":384,"start_character":22,"end_line":384,"end_character":29},"updated":"2018-06-11 15:08:52.000000000","message":"function","commit_id":"0c831e851d074e8538be12a2980466a84fae32d8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b9551e01c996ff0f65c35471cecdc4a5bae68c7a","unresolved":false,"context_lines":[{"line_number":386,"context_line":"    # done is zero, some records are not migratable, but all"},{"line_number":387,"context_line":"    # migrations that can complete have finished. The found value may"},{"line_number":388,"context_line":"    # be capped at the limit, especially if it is expensive to count"},{"line_number":389,"context_line":"    # all remaining unmigrated records; the important signal is when"},{"line_number":390,"context_line":"    # it is nonzero."},{"line_number":391,"context_line":"    online_migrations \u003d ("},{"line_number":392,"context_line":"        # Added in Newton"},{"line_number":393,"context_line":"        request_spec.migrate_instances_add_request_spec,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_320f1de1","line":390,"range":{"start_line":389,"start_character":40,"end_line":390,"end_character":20},"updated":"2018-06-11 15:08:52.000000000","message":"Important how?\n\nWhen found !\u003d 0, if done \u003d\u003d 0, at least `found` records are not migratable.  What is a guy supposed to do at that point?","commit_id":"0c831e851d074e8538be12a2980466a84fae32d8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3d3eb19a8dfd2d4241e077fa379171f2163c248d","unresolved":false,"context_lines":[{"line_number":386,"context_line":"    # done is zero, some records are not migratable, but all"},{"line_number":387,"context_line":"    # migrations that can complete have finished. The found value may"},{"line_number":388,"context_line":"    # be capped at the limit, especially if it is expensive to count"},{"line_number":389,"context_line":"    # all remaining unmigrated records; the important signal is when"},{"line_number":390,"context_line":"    # it is nonzero."},{"line_number":391,"context_line":"    online_migrations \u003d ("},{"line_number":392,"context_line":"        # Added in Newton"},{"line_number":393,"context_line":"        request_spec.migrate_instances_add_request_spec,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_b296cd48","line":390,"range":{"start_line":389,"start_character":40,"end_line":390,"end_character":20},"in_reply_to":"5f7c97a3_320f1de1","updated":"2018-06-11 15:12:13.000000000","message":"I removed this by clarifying an earlier sentence.","commit_id":"0c831e851d074e8538be12a2980466a84fae32d8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"dc339b3254ddae61626dbe88f39c61c9a9cf87f4","unresolved":false,"context_lines":[{"line_number":384,"context_line":"    # that there is still work to do. The done value indicates whether"},{"line_number":385,"context_line":"    # or not any records were actually migrated by the function. Thus"},{"line_number":386,"context_line":"    # if both (found, done) are nonzero, work was done and some work"},{"line_number":387,"context_line":"    # remains. If found is nonzero and done is zero, some records are"},{"line_number":388,"context_line":"    # not migratable, but all migrations that can complete have"},{"line_number":389,"context_line":"    # finished."},{"line_number":390,"context_line":"    online_migrations \u003d ("},{"line_number":391,"context_line":"        # Added in Newton"},{"line_number":392,"context_line":"        request_spec.migrate_instances_add_request_spec,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_75181fd2","line":389,"range":{"start_line":387,"start_character":15,"end_line":389,"end_character":15},"updated":"2018-06-11 15:49:54.000000000","message":"Still confused about what this means overall.  Is it an unrecoverable error?  Something the user can take action to fix?  Or just a thing to note and ignore?\n\nFrom our IRC chat, it appears to mean you should repeat the nova-manage command until you get (0, 0).","commit_id":"3ca51310cba87c25d524820f7440fca4981d90ec"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2dcb33f0796b23a1c6373e3dcb49514893798dd6","unresolved":false,"context_lines":[{"line_number":721,"context_line":"            t.add_row([name, info[0], info[1]])"},{"line_number":722,"context_line":"        print(t)"},{"line_number":723,"context_line":""},{"line_number":724,"context_line":"        # TODO(mriedem): Potentially add another return code for"},{"line_number":725,"context_line":"        # \"there are more migrations, but not completable right now\""},{"line_number":726,"context_line":"        return ran and 1 or 0"},{"line_number":727,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_4878e6f6","line":724,"range":{"start_line":724,"start_character":15,"end_line":724,"end_character":22},"updated":"2018-06-11 16:20:29.000000000","message":"oh i see how it is","commit_id":"a4bc988e1cdb6da2e02d1ef613b7cce215ad687c"}]}
