)]}'
{"nova/objects/request_spec.py":[{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"efef88d2e1130c97be1b58808b95ca22b1a86eca","unresolved":false,"context_lines":[{"line_number":706,"context_line":"                                                    marker\u003dmarker,"},{"line_number":707,"context_line":"                                                    expected_attrs\u003dattrs)"},{"line_number":708,"context_line":"    except exception.MarkerNotFound:"},{"line_number":709,"context_line":"        # Instance referenced by marker may have been purged."},{"line_number":710,"context_line":"        # Try again but get all instances."},{"line_number":711,"context_line":"        instances \u003d objects.InstanceList.get_by_filters(context,"},{"line_number":712,"context_line":"                                                    filters\u003d{\u0027deleted\u0027: False},"},{"line_number":713,"context_line":"                                                    sort_key\u003d\u0027created_at\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_f60a3177","line":710,"range":{"start_line":709,"start_character":0,"end_line":710,"end_character":42},"updated":"2018-09-27 17:03:39.000000000","message":"Maybe add a comment saying that since stable/pike this shouldn\u0027t cause a problem anymore since the DB purge will also delete the request_specs entry?\n\nPresumably once stable/pike is the oldest supported version we could remove this workaround.","commit_id":"b9fb739927f86aa5a8344eb373347f3c608ad2db"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"1493572822267d6b51e5085faef5bb48b3990f5e","unresolved":false,"context_lines":[{"line_number":706,"context_line":"                                                    marker\u003dmarker,"},{"line_number":707,"context_line":"                                                    expected_attrs\u003dattrs)"},{"line_number":708,"context_line":"    except exception.MarkerNotFound:"},{"line_number":709,"context_line":"        # Instance referenced by marker may have been purged."},{"line_number":710,"context_line":"        # Try again but get all instances."},{"line_number":711,"context_line":"        instances \u003d objects.InstanceList.get_by_filters(context,"},{"line_number":712,"context_line":"                                                    filters\u003d{\u0027deleted\u0027: False},"},{"line_number":713,"context_line":"                                                    sort_key\u003d\u0027created_at\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_63f65393","line":710,"range":{"start_line":709,"start_character":0,"end_line":710,"end_character":42},"in_reply_to":"3f79a3b5_f60a3177","updated":"2018-09-28 11:01:48.000000000","message":"No, I think this will always be relevant. The problem is if the instance we were using as a marker is deleted. I don\u0027t see how this problem can ever go away as long as we\u0027re using the marker the way we do.","commit_id":"b9fb739927f86aa5a8344eb373347f3c608ad2db"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"44293c3ffb840c476b09e01ed3a93ed0264f4cd8","unresolved":false,"context_lines":[{"line_number":699,"context_line":"             \u0027availability_zone\u0027]"},{"line_number":700,"context_line":"    try:"},{"line_number":701,"context_line":"        instances \u003d objects.InstanceList.get_by_filters(context,"},{"line_number":702,"context_line":"                                                    filters\u003d{\u0027deleted\u0027: False},"},{"line_number":703,"context_line":"                                                    sort_key\u003d\u0027created_at\u0027,"},{"line_number":704,"context_line":"                                                    sort_dir\u003d\u0027asc\u0027,"},{"line_number":705,"context_line":"                                                    limit\u003dmax_count,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_6e92854c","line":702,"updated":"2018-10-02 00:03:02.000000000","message":"nit: redo the alignment on the parameters (just wrap them).","commit_id":"7b1693072344b1b57a18f5d5780c1b11cdc10a78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"44293c3ffb840c476b09e01ed3a93ed0264f4cd8","unresolved":false,"context_lines":[{"line_number":709,"context_line":"        # Instance referenced by marker may have been purged."},{"line_number":710,"context_line":"        # Try again but get all instances."},{"line_number":711,"context_line":"        instances \u003d objects.InstanceList.get_by_filters(context,"},{"line_number":712,"context_line":"                                                    filters\u003d{\u0027deleted\u0027: False},"},{"line_number":713,"context_line":"                                                    sort_key\u003d\u0027created_at\u0027,"},{"line_number":714,"context_line":"                                                    sort_dir\u003d\u0027asc\u0027,"},{"line_number":715,"context_line":"                                                    limit\u003dmax_count,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_8e97e139","line":712,"updated":"2018-10-02 00:03:02.000000000","message":"same","commit_id":"7b1693072344b1b57a18f5d5780c1b11cdc10a78"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"33069cba4e52accc21cf8d467802114fd0993092","unresolved":false,"context_lines":[{"line_number":702,"context_line":"            context, filters\u003d{\u0027deleted\u0027: False}, sort_key\u003d\u0027created_at\u0027,"},{"line_number":703,"context_line":"            sort_dir\u003d\u0027asc\u0027, limit\u003dmax_count, marker\u003dmarker,"},{"line_number":704,"context_line":"            expected_attrs\u003dattrs)"},{"line_number":705,"context_line":"    except exception.MarkerNotFound:"},{"line_number":706,"context_line":"        # Instance referenced by marker may have been purged."},{"line_number":707,"context_line":"        # Try again but get all instances."},{"line_number":708,"context_line":"        instances \u003d objects.InstanceList.get_by_filters("},{"line_number":709,"context_line":"            context, filters\u003d{\u0027deleted\u0027: False}, sort_key\u003d\u0027created_at\u0027,"},{"line_number":710,"context_line":"            sort_dir\u003d\u0027asc\u0027, limit\u003dmax_count, expected_attrs\u003dattrs)"},{"line_number":711,"context_line":"    count_all \u003d len(instances)"},{"line_number":712,"context_line":"    count_hit \u003d 0"},{"line_number":713,"context_line":"    for instance in instances:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_e7f3019e","line":710,"range":{"start_line":705,"start_character":0,"end_line":710,"end_character":66},"updated":"2018-10-02 18:06:38.000000000","message":"This change doesn\u0027t add anything special (like log outputting, and so on) related to nonexistent marker situation.\nSo why don\u0027t we just drop specifying the marker without trying again?","commit_id":"de70d8d08a9bd8467684fdef4293f30bcae03019"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"79c5c6ed94fb8753716f1daa6c239d6774b5ddd6","unresolved":false,"context_lines":[{"line_number":702,"context_line":"            context, filters\u003d{\u0027deleted\u0027: False}, sort_key\u003d\u0027created_at\u0027,"},{"line_number":703,"context_line":"            sort_dir\u003d\u0027asc\u0027, limit\u003dmax_count, marker\u003dmarker,"},{"line_number":704,"context_line":"            expected_attrs\u003dattrs)"},{"line_number":705,"context_line":"    except exception.MarkerNotFound:"},{"line_number":706,"context_line":"        # Instance referenced by marker may have been purged."},{"line_number":707,"context_line":"        # Try again but get all instances."},{"line_number":708,"context_line":"        instances \u003d objects.InstanceList.get_by_filters("},{"line_number":709,"context_line":"            context, filters\u003d{\u0027deleted\u0027: False}, sort_key\u003d\u0027created_at\u0027,"},{"line_number":710,"context_line":"            sort_dir\u003d\u0027asc\u0027, limit\u003dmax_count, expected_attrs\u003dattrs)"},{"line_number":711,"context_line":"    count_all \u003d len(instances)"},{"line_number":712,"context_line":"    count_hit \u003d 0"},{"line_number":713,"context_line":"    for instance in instances:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_fd2f10f2","line":710,"range":{"start_line":705,"start_character":0,"end_line":710,"end_character":66},"in_reply_to":"3f79a3b5_e7f3019e","updated":"2018-10-02 19:46:57.000000000","message":"If we just drop the marker and return zero for count_all, it could potentially result in nova.cmd.manage.DbCommands.online_data_migrations() bailing out early leaving un-migrated data in the database.","commit_id":"de70d8d08a9bd8467684fdef4293f30bcae03019"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"60804bb894c465ce4c905bb5e073edd381e30a92","unresolved":false,"context_lines":[{"line_number":702,"context_line":"            context, filters\u003d{\u0027deleted\u0027: False}, sort_key\u003d\u0027created_at\u0027,"},{"line_number":703,"context_line":"            sort_dir\u003d\u0027asc\u0027, limit\u003dmax_count, marker\u003dmarker,"},{"line_number":704,"context_line":"            expected_attrs\u003dattrs)"},{"line_number":705,"context_line":"    except exception.MarkerNotFound:"},{"line_number":706,"context_line":"        # Instance referenced by marker may have been purged."},{"line_number":707,"context_line":"        # Try again but get all instances."},{"line_number":708,"context_line":"        instances \u003d objects.InstanceList.get_by_filters("},{"line_number":709,"context_line":"            context, filters\u003d{\u0027deleted\u0027: False}, sort_key\u003d\u0027created_at\u0027,"},{"line_number":710,"context_line":"            sort_dir\u003d\u0027asc\u0027, limit\u003dmax_count, expected_attrs\u003dattrs)"},{"line_number":711,"context_line":"    count_all \u003d len(instances)"},{"line_number":712,"context_line":"    count_hit \u003d 0"},{"line_number":713,"context_line":"    for instance in instances:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_6654b3c6","line":710,"range":{"start_line":705,"start_character":0,"end_line":710,"end_character":66},"in_reply_to":"3f79a3b5_fd2f10f2","updated":"2018-10-03 21:58:28.000000000","message":"Ah, I see. Thanks for your explanation, Chris :)","commit_id":"de70d8d08a9bd8467684fdef4293f30bcae03019"}],"nova/tests/functional/db/test_request_spec.py":[{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"1493572822267d6b51e5085faef5bb48b3990f5e","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        # in the latter session."},{"line_number":182,"context_line":"        self.api.delete_server(self.instances[1].uuid)"},{"line_number":183,"context_line":"        db.archive_deleted_rows(max_rows\u003d100)"},{"line_number":184,"context_line":"        admin_context \u003d context.get_admin_context()"},{"line_number":185,"context_line":"        db.purge_shadow_tables(admin_context, None)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        # Run again the migration call for making sure that we don\u0027t check"},{"line_number":188,"context_line":"        # again the same instances"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_c39e4705","line":185,"range":{"start_line":184,"start_character":0,"end_line":185,"end_character":51},"updated":"2018-09-28 11:01:48.000000000","message":"This isn\u0027t required for the test. All that\u0027s required is that the marker can\u0027t be fetched by the regular db query.","commit_id":"b9fb739927f86aa5a8344eb373347f3c608ad2db"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"14788866824645c789290d0f8e80b9ca272a9df7","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        # in the latter session."},{"line_number":182,"context_line":"        self.api.delete_server(self.instances[1].uuid)"},{"line_number":183,"context_line":"        db.archive_deleted_rows(max_rows\u003d100)"},{"line_number":184,"context_line":"        admin_context \u003d context.get_admin_context()"},{"line_number":185,"context_line":"        db.purge_shadow_tables(admin_context, None)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        # Run again the migration call for making sure that we don\u0027t check"},{"line_number":188,"context_line":"        # again the same instances"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_8bd7fe4f","line":185,"range":{"start_line":184,"start_character":0,"end_line":185,"end_character":51},"in_reply_to":"3f79a3b5_c39e4705","updated":"2018-09-28 17:19:59.000000000","message":"Done","commit_id":"b9fb739927f86aa5a8344eb373347f3c608ad2db"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"efef88d2e1130c97be1b58808b95ca22b1a86eca","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        # Make sure we ran over all the instances"},{"line_number":195,"context_line":"        match, done \u003d request_spec.migrate_instances_add_request_spec("},{"line_number":196,"context_line":"            self.context, 50)"},{"line_number":197,"context_line":"        self.assertEqual(1, match)"},{"line_number":198,"context_line":"        self.assertEqual(0, done)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        # Make sure all instances have now a related RequestSpec"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_764ce1c7","line":197,"range":{"start_line":197,"start_character":24,"end_line":197,"end_character":33},"updated":"2018-09-27 17:03:39.000000000","message":"shouldn\u0027t this be 0 if we\u0027ve processed all the instances?","commit_id":"b9fb739927f86aa5a8344eb373347f3c608ad2db"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"1493572822267d6b51e5085faef5bb48b3990f5e","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        # Make sure we ran over all the instances"},{"line_number":195,"context_line":"        match, done \u003d request_spec.migrate_instances_add_request_spec("},{"line_number":196,"context_line":"            self.context, 50)"},{"line_number":197,"context_line":"        self.assertEqual(1, match)"},{"line_number":198,"context_line":"        self.assertEqual(0, done)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        # Make sure all instances have now a related RequestSpec"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_8357ef27","line":197,"range":{"start_line":197,"start_character":24,"end_line":197,"end_character":33},"in_reply_to":"3f79a3b5_764ce1c7","updated":"2018-09-28 11:01:48.000000000","message":"No, because we restarted. The progression is:\n\n# old, old, new, new, new\n\nrequest_spec.migrate_instances_add_request_spec(2)\n\n# upgraded, upgraded\u003cMARKER\u003e, new, new, new\n\ndelete(marker)\n\n# upgraded, new, new, new\n\nrequest_spec.migrate_instances_add_request_spec(3)\n- We deleted the marker, so (3) starts again from the beginning\n\n# upgraded, new, new\u003cMARKER\u003e, new\n\nrequest_spec.migrate_instances_add_request_spec(50)\n- There\u0027s only one left, and it\u0027s already new\n\n# upgraded, new, new, new\u003cMARKER\u003e","commit_id":"b9fb739927f86aa5a8344eb373347f3c608ad2db"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"dbc0e01f1a594b2824756897185e2b8a1206ae18","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        # Make sure we ran over all the instances"},{"line_number":195,"context_line":"        match, done \u003d request_spec.migrate_instances_add_request_spec("},{"line_number":196,"context_line":"            self.context, 50)"},{"line_number":197,"context_line":"        self.assertEqual(1, match)"},{"line_number":198,"context_line":"        self.assertEqual(0, done)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        # Make sure all instances have now a related RequestSpec"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_cb5896fa","line":197,"range":{"start_line":197,"start_character":24,"end_line":197,"end_character":33},"in_reply_to":"3f79a3b5_8357ef27","updated":"2018-09-28 16:48:15.000000000","message":"Okay, makes sense.  But this isn\u0027t necessary for the testcase.  Arguably it\u0027d be clearer to change line 190 from 3 to 50, and change line 191 to specify 4, and change line 197 to specify 0.","commit_id":"b9fb739927f86aa5a8344eb373347f3c608ad2db"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"14788866824645c789290d0f8e80b9ca272a9df7","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        # Make sure we ran over all the instances"},{"line_number":195,"context_line":"        match, done \u003d request_spec.migrate_instances_add_request_spec("},{"line_number":196,"context_line":"            self.context, 50)"},{"line_number":197,"context_line":"        self.assertEqual(1, match)"},{"line_number":198,"context_line":"        self.assertEqual(0, done)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        # Make sure all instances have now a related RequestSpec"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_4b1806cc","line":197,"range":{"start_line":197,"start_character":24,"end_line":197,"end_character":33},"in_reply_to":"3f79a3b5_8357ef27","updated":"2018-09-28 17:19:59.000000000","message":"Well explained, thanks. I added some comments in the code according to your explanation.","commit_id":"b9fb739927f86aa5a8344eb373347f3c608ad2db"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"14788866824645c789290d0f8e80b9ca272a9df7","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        # Make sure we ran over all the instances"},{"line_number":195,"context_line":"        match, done \u003d request_spec.migrate_instances_add_request_spec("},{"line_number":196,"context_line":"            self.context, 50)"},{"line_number":197,"context_line":"        self.assertEqual(1, match)"},{"line_number":198,"context_line":"        self.assertEqual(0, done)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        # Make sure all instances have now a related RequestSpec"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_cb9df609","line":197,"range":{"start_line":197,"start_character":24,"end_line":197,"end_character":33},"in_reply_to":"3f79a3b5_cb5896fa","updated":"2018-09-28 17:19:59.000000000","message":"Done","commit_id":"b9fb739927f86aa5a8344eb373347f3c608ad2db"}]}
