)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"75d5723072811b74d0fb8ee4f240c3d04d40a678","unresolved":false,"context_lines":[{"line_number":7,"context_line":"cleanup evacuated instances not on hypervisor"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When the compute host recovers from a failure the compute manager"},{"line_number":10,"context_line":"destorys instances that were evacuated from the host while it was down."},{"line_number":11,"context_line":"However these code path only consider evacuated instances that are"},{"line_number":12,"context_line":"still reported by the hypervisor. This means that if the compute"},{"line_number":13,"context_line":"host is recovered in a way that the hypervisor lost the definition"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3f4b6375_187c9cb3","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":8},"updated":"2017-10-23 17:12:33.000000000","message":"destroys","commit_id":"de3a6a14d841da2635ecbb73ca648e81e01a42a3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8610cd8ebe971ea81ed60dbadbb42c5f3b971b09","unresolved":false,"context_lines":[{"line_number":7,"context_line":"cleanup evacuated instances not on hypervisor"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When the compute host recovers from a failure the compute manager"},{"line_number":10,"context_line":"destorys instances that were evacuated from the host while it was down."},{"line_number":11,"context_line":"However these code path only consider evacuated instances that are"},{"line_number":12,"context_line":"still reported by the hypervisor. This means that if the compute"},{"line_number":13,"context_line":"host is recovered in a way that the hypervisor lost the definition"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5f93b717_960e5030","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":8},"in_reply_to":"3f4b6375_187c9cb3","updated":"2018-01-29 16:29:18.000000000","message":"Done","commit_id":"de3a6a14d841da2635ecbb73ca648e81e01a42a3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4f3445dba3c055342ef710a67006f1659410fe0f","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When the compute host recovers from a failure the compute manager"},{"line_number":10,"context_line":"destroys instances that were evacuated from the host while it was down."},{"line_number":11,"context_line":"However these code path only consider evacuated instances that are"},{"line_number":12,"context_line":"still reported by the hypervisor. This means that if the compute"},{"line_number":13,"context_line":"host is recovered in a way that the hypervisor lost the definition"},{"line_number":14,"context_line":"of the instances (for example the compute host was redeployed) then"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"9fdfeff1_9a3e11bf","line":11,"range":{"start_line":11,"start_character":19,"end_line":11,"end_character":23},"updated":"2019-01-30 18:10:09.000000000","message":"paths","commit_id":"ce09314403b0eccdef12c95d604bfccaa372d382"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8a1a6b955bb4a2288b06bf75e76d374f9addfc23","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When the compute host recovers from a failure the compute manager"},{"line_number":10,"context_line":"destroys instances that were evacuated from the host while it was down."},{"line_number":11,"context_line":"However these code path only consider evacuated instances that are"},{"line_number":12,"context_line":"still reported by the hypervisor. This means that if the compute"},{"line_number":13,"context_line":"host is recovered in a way that the hypervisor lost the definition"},{"line_number":14,"context_line":"of the instances (for example the compute host was redeployed) then"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"ffb9cba7_75b81de4","line":11,"range":{"start_line":11,"start_character":19,"end_line":11,"end_character":23},"in_reply_to":"9fdfeff1_9a3e11bf","updated":"2019-05-01 23:21:12.000000000","message":"Done","commit_id":"ce09314403b0eccdef12c95d604bfccaa372d382"}],"nova/compute/manager.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"75d5723072811b74d0fb8ee4f240c3d04d40a678","unresolved":false,"context_lines":[{"line_number":632,"context_line":"        (accepted) or complete (done). From those migration records, local"},{"line_number":633,"context_line":"        instances reported by the hypervisor are compared to the instances"},{"line_number":634,"context_line":"        for the migration records and those local guests are destroyed."},{"line_number":635,"context_line":"        Then allocation is removed from Placement for every instance that is"},{"line_number":636,"context_line":"        evacuated from this host regardless if the instance is reported by the"},{"line_number":637,"context_line":"        hypervisor or not."},{"line_number":638,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_1855bc1d","line":635,"range":{"start_line":635,"start_character":13,"end_line":635,"end_character":34},"updated":"2017-10-23 17:12:33.000000000","message":"allocations are removed","commit_id":"de3a6a14d841da2635ecbb73ca648e81e01a42a3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8610cd8ebe971ea81ed60dbadbb42c5f3b971b09","unresolved":false,"context_lines":[{"line_number":632,"context_line":"        (accepted) or complete (done). From those migration records, local"},{"line_number":633,"context_line":"        instances reported by the hypervisor are compared to the instances"},{"line_number":634,"context_line":"        for the migration records and those local guests are destroyed."},{"line_number":635,"context_line":"        Then allocation is removed from Placement for every instance that is"},{"line_number":636,"context_line":"        evacuated from this host regardless if the instance is reported by the"},{"line_number":637,"context_line":"        hypervisor or not."},{"line_number":638,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f93b717_f6ff94fe","line":635,"range":{"start_line":635,"start_character":13,"end_line":635,"end_character":34},"in_reply_to":"3f4b6375_1855bc1d","updated":"2018-01-29 16:29:18.000000000","message":"Done","commit_id":"de3a6a14d841da2635ecbb73ca648e81e01a42a3"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"2ba160ea862342320eae308ddc676d21a40779f5","unresolved":false,"context_lines":[{"line_number":621,"context_line":"            local_instances.append(instance)"},{"line_number":622,"context_line":"        return local_instances"},{"line_number":623,"context_line":""},{"line_number":624,"context_line":"    def _destroy_evacuated_instances(self, context):"},{"line_number":625,"context_line":"        \"\"\"Destroys evacuated instances."},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"        While nova-compute was down, the instances running on it could be"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_958ce9d7","line":624,"updated":"2018-05-28 11:33:10.000000000","message":"You are inspecting instances from driver and instances from unfinished migrations from that host, right?\n\nDon\u0027t you need to inspect instances in nova db also?\nI mean the case than we don\u0027t need VMs on particular failed host. We merely redeploy it without evacuation but VMs are still in DB.","commit_id":"d28afd84ac39e9b5aca43059e03448c1f181bed4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ec46baea03faa67720652ede7642270643eb454e","unresolved":false,"context_lines":[{"line_number":621,"context_line":"            local_instances.append(instance)"},{"line_number":622,"context_line":"        return local_instances"},{"line_number":623,"context_line":""},{"line_number":624,"context_line":"    def _destroy_evacuated_instances(self, context):"},{"line_number":625,"context_line":"        \"\"\"Destroys evacuated instances."},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"        While nova-compute was down, the instances running on it could be"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_29284383","line":624,"in_reply_to":"5f7c97a3_958ce9d7","updated":"2018-07-03 12:21:18.000000000","message":"If you redeploy a host but a VM is still assigned to that host in the DB then when you delete such VM via the REST API the placement resource will be released. Alternatively you can call rebuild on the REST API for this VM to start it again on the redeployed host. So removing allocation for such VM would be a bad idea.","commit_id":"d28afd84ac39e9b5aca43059e03448c1f181bed4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4f3445dba3c055342ef710a67006f1659410fe0f","unresolved":false,"context_lines":[{"line_number":638,"context_line":"        compared to the instances for the migration records and those local"},{"line_number":639,"context_line":"        guests are destroyed, along with instance allocation records in"},{"line_number":640,"context_line":"        Placement for this node."},{"line_number":641,"context_line":"        Then allocation are removed from Placement for every instance that is"},{"line_number":642,"context_line":"        evacuated from this host regardless if the instance is reported by the"},{"line_number":643,"context_line":"        hypervisor or not."},{"line_number":644,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_1a50e10a","line":641,"range":{"start_line":641,"start_character":13,"end_line":641,"end_character":23},"updated":"2019-01-30 18:10:09.000000000","message":"allocations","commit_id":"ce09314403b0eccdef12c95d604bfccaa372d382"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8a1a6b955bb4a2288b06bf75e76d374f9addfc23","unresolved":false,"context_lines":[{"line_number":638,"context_line":"        compared to the instances for the migration records and those local"},{"line_number":639,"context_line":"        guests are destroyed, along with instance allocation records in"},{"line_number":640,"context_line":"        Placement for this node."},{"line_number":641,"context_line":"        Then allocation are removed from Placement for every instance that is"},{"line_number":642,"context_line":"        evacuated from this host regardless if the instance is reported by the"},{"line_number":643,"context_line":"        hypervisor or not."},{"line_number":644,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"ffb9cba7_f5c3ad55","line":641,"range":{"start_line":641,"start_character":13,"end_line":641,"end_character":23},"in_reply_to":"9fdfeff1_1a50e10a","updated":"2019-05-01 23:21:12.000000000","message":"Done","commit_id":"ce09314403b0eccdef12c95d604bfccaa372d382"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4f3445dba3c055342ef710a67006f1659410fe0f","unresolved":false,"context_lines":[{"line_number":697,"context_line":"        # we cannot rely on the resource tracker here."},{"line_number":698,"context_line":"        compute_nodes \u003d {}"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"        for instance_uuid in evacuations:"},{"line_number":701,"context_line":"            migration \u003d evacuations[instance_uuid]"},{"line_number":702,"context_line":"            try:"},{"line_number":703,"context_line":"                if instance_uuid in evacuated_local_instances:"},{"line_number":704,"context_line":"                    # Avoid the db call if we already have the instance loaded"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_77282896","line":701,"range":{"start_line":700,"start_character":0,"end_line":701,"end_character":50},"updated":"2019-01-30 18:10:09.000000000","message":"or\n\n for instance_uuid, migration in evacuations.items():","commit_id":"ce09314403b0eccdef12c95d604bfccaa372d382"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8a1a6b955bb4a2288b06bf75e76d374f9addfc23","unresolved":false,"context_lines":[{"line_number":697,"context_line":"        # we cannot rely on the resource tracker here."},{"line_number":698,"context_line":"        compute_nodes \u003d {}"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"        for instance_uuid in evacuations:"},{"line_number":701,"context_line":"            migration \u003d evacuations[instance_uuid]"},{"line_number":702,"context_line":"            try:"},{"line_number":703,"context_line":"                if instance_uuid in evacuated_local_instances:"},{"line_number":704,"context_line":"                    # Avoid the db call if we already have the instance loaded"}],"source_content_type":"text/x-python","patch_set":11,"id":"ffb9cba7_55a8798a","line":701,"range":{"start_line":700,"start_character":0,"end_line":701,"end_character":50},"in_reply_to":"9fdfeff1_77282896","updated":"2019-05-01 23:21:12.000000000","message":"Done","commit_id":"ce09314403b0eccdef12c95d604bfccaa372d382"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a8fd9a3fedbb3e1e3a1d694cedb4efd13686aa9d","unresolved":false,"context_lines":[{"line_number":700,"context_line":"                    # above"},{"line_number":701,"context_line":"                    instance \u003d evacuated_local_instances[instance_uuid]"},{"line_number":702,"context_line":"                else:"},{"line_number":703,"context_line":"                    instance \u003d objects.Instance.get_by_uuid("},{"line_number":704,"context_line":"                        context, instance_uuid)"},{"line_number":705,"context_line":"            except exception.InstanceNotFound:"},{"line_number":706,"context_line":"                # The instance already deleted so we expect that every"},{"line_number":707,"context_line":"                # allocation of that instance has already been cleaned up"}],"source_content_type":"text/x-python","patch_set":12,"id":"bfb3d3c7_ea04c7c8","line":704,"range":{"start_line":703,"start_character":20,"end_line":704,"end_character":47},"updated":"2019-05-20 07:15:42.000000000","message":"So this can be an instance already evacuate to another host, but we get that from the migration records(migration.source_compute\u003dthis_host, migration.status\u003ddone)?","commit_id":"5c3063e44a16dcb5c11be01e313fdb5f78954eb7"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d325fc63415428babce7e7a7e520400933e96db9","unresolved":false,"context_lines":[{"line_number":700,"context_line":"                    # above"},{"line_number":701,"context_line":"                    instance \u003d evacuated_local_instances[instance_uuid]"},{"line_number":702,"context_line":"                else:"},{"line_number":703,"context_line":"                    instance \u003d objects.Instance.get_by_uuid("},{"line_number":704,"context_line":"                        context, instance_uuid)"},{"line_number":705,"context_line":"            except exception.InstanceNotFound:"},{"line_number":706,"context_line":"                # The instance already deleted so we expect that every"},{"line_number":707,"context_line":"                # allocation of that instance has already been cleaned up"}],"source_content_type":"text/x-python","patch_set":12,"id":"bfb3d3c7_ca2c6349","line":704,"range":{"start_line":703,"start_character":20,"end_line":704,"end_character":47},"in_reply_to":"bfb3d3c7_ea04c7c8","updated":"2019-05-20 07:18:23.000000000","message":"oops, ignore this. This is what we are fixing","commit_id":"5c3063e44a16dcb5c11be01e313fdb5f78954eb7"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"274981335f27d7410a18fe0d9dd7411da68138aa","unresolved":false,"context_lines":[{"line_number":2369,"context_line":""},{"line_number":2370,"context_line":"        # restart the source compute"},{"line_number":2371,"context_line":"        self.compute1 \u003d self.restart_compute_service("},{"line_number":2372,"context_line":"            self.compute1, keep_hypervisor_state\u003dnot clean_hypervisor)"},{"line_number":2373,"context_line":"        self.admin_api.put_service("},{"line_number":2374,"context_line":"            source_compute_id, {\u0027forced_down\u0027: \u0027false\u0027})"},{"line_number":2375,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bfb3d3c7_78d622f4","line":2372,"range":{"start_line":2372,"start_character":49,"end_line":2372,"end_character":69},"updated":"2019-05-23 12:02:41.000000000","message":"nit - couldn\u0027t we keep things simple and pass keep_hypervisor_state here?","commit_id":"1dfb9a3ef44fbab7ff04d3b1e85a87403485fac4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"902d3c6ecf6faae2bf9abb8414b5f6f83003cbd9","unresolved":false,"context_lines":[{"line_number":2369,"context_line":""},{"line_number":2370,"context_line":"        # restart the source compute"},{"line_number":2371,"context_line":"        self.compute1 \u003d self.restart_compute_service("},{"line_number":2372,"context_line":"            self.compute1, keep_hypervisor_state\u003dnot clean_hypervisor)"},{"line_number":2373,"context_line":"        self.admin_api.put_service("},{"line_number":2374,"context_line":"            source_compute_id, {\u0027forced_down\u0027: \u0027false\u0027})"},{"line_number":2375,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bfb3d3c7_092c3baa","line":2372,"range":{"start_line":2372,"start_character":49,"end_line":2372,"end_character":69},"in_reply_to":"bfb3d3c7_78d622f4","updated":"2019-05-28 16:01:54.000000000","message":"yeah that would make a bit more sense.\nDone.","commit_id":"1dfb9a3ef44fbab7ff04d3b1e85a87403485fac4"}]}
