)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d44e5bbc5dea4e40b427ddc3bd29136126caa3e1","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"More precisely a server whose vm_state is shelved_offloaded but its"},{"line_number":10,"context_line":"task_state is spawning."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I8c9944810c09d501a6d3f60f095d9817b756872d"},{"line_number":13,"context_line":"Closes-Bug: #2025480"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"930f1200_ca65da11","line":11,"updated":"2023-08-15 10:00:51.000000000","message":"Please describe the race as we know now what happened.\n\n1) a VM is being unshelved and the compute manager set the task_state to spawning, claimed resource of the VM and then called driver.spawn(). So the instance is in vm_state SHELVE_OFFLOADED, task_state spawning\n2) a new update_available_resource periodic is run and collected all the instances assigned to the node to calculate resource usage. However the calculation assumed that a VM in SHELVE_OFFLOADED state does not need resource allocation on the node (probably being removed from the node as it is offloaded) and deleted the resource claim.\n3) the VM is spawned successfully but now lost the resource claim on the node.","commit_id":"6dfd9d587457e993f63cc2e5fa7adc6bc84ba4a7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"f88c59d4fd90d7bd4dc601d070487cf1e3d4a959","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"More precisely a server whose vm_state is shelved_offloaded but its"},{"line_number":10,"context_line":"task_state is spawning."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I8c9944810c09d501a6d3f60f095d9817b756872d"},{"line_number":13,"context_line":"Closes-Bug: #2025480"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bb934469_16d34014","line":11,"in_reply_to":"930f1200_ca65da11","updated":"2023-08-15 13:33:25.000000000","message":"Done","commit_id":"6dfd9d587457e993f63cc2e5fa7adc6bc84ba4a7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0a2721e1a89f0d4396391025d6fc725597d6176d","unresolved":true,"context_lines":[{"line_number":24,"context_line":"This patch changes what we do in vm_state SHELVED_OFFLOADED, task_state"},{"line_number":25,"context_line":"spawning. We no longer delete the resource claim in this state and"},{"line_number":26,"context_line":"keep tracking the resource in stats."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Change-Id: I8c9944810c09d501a6d3f60f095d9817b756872d"},{"line_number":29,"context_line":"Closes-Bug: #2025480"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ec4b213c_ad058f9a","line":27,"updated":"2023-12-05 09:44:11.000000000","message":"this should be partly mitigated by the placement alloctions preventing over subscription but this is still good to fix. nicely done this is a good commit message.","commit_id":"f1dc4ec39bcfda1bd4b97e233a9da498b6378c4f"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"af769973d066931ab0e23a4fd0f5a2657503bbf3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"4a6905fb_43f4781f","updated":"2023-08-03 11:43:36.000000000","message":"I\u0027m new to proposing bugfixes in nova. If something is missing (like tests) please give me some hints, where and what...","commit_id":"2881ff936c336f49c4c27f7a763710bfd34edffa"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"b6e7e83064d87f76ac87c7a549a5c5289a4b49cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"b90574ad_4f42b71f","updated":"2023-08-07 08:06:32.000000000","message":"recheck unrelated ssh timeout","commit_id":"2881ff936c336f49c4c27f7a763710bfd34edffa"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"5ad7d047daf1420daa7ad203b2f9c319165f8dcf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"0f5a0bbc_fcc2718c","updated":"2023-08-03 13:56:35.000000000","message":"recheck unrelated ssh timeouts and errors to acquire tokens, let\u0027s see which failures repeat","commit_id":"2881ff936c336f49c4c27f7a763710bfd34edffa"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ac73835dc0d70f9c41fc88bb4ade6faee3c189e5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"2b72bbde_72c35a3f","updated":"2023-08-16 08:29:11.000000000","message":"I would like to see one more unit test case of the stats change but otherwise this looks good to me.","commit_id":"d6fc990338788f11e7f5493b066ff31c35456eb1"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"e6b597e2d14b4d0ba311455559531194db286206","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b4bb6349_1cc2f380","updated":"2023-08-16 07:59:01.000000000","message":"recheck \"no space left on device\" in zuul job","commit_id":"d6fc990338788f11e7f5493b066ff31c35456eb1"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"627d5fd60d9814106a804745ca5f146abbf18e54","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8d82924f_e7ca5c23","updated":"2023-12-05 10:49:06.000000000","message":"I\u0027m cool with that, thanks for the fix !","commit_id":"f1dc4ec39bcfda1bd4b97e233a9da498b6378c4f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"929a81cd9a6d653c032f59e649584375d3262c70","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1364dd22_ca54c269","updated":"2023-08-21 08:13:06.000000000","message":"Looks good. Thanks!","commit_id":"f1dc4ec39bcfda1bd4b97e233a9da498b6378c4f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0a2721e1a89f0d4396391025d6fc725597d6176d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"b7dc9d59_4bed0e1c","updated":"2023-12-05 09:44:11.000000000","message":"this wont merge until the repodcuer below but this looks correct to me so +2w","commit_id":"f1dc4ec39bcfda1bd4b97e233a9da498b6378c4f"}],"nova/compute/resource_tracker.py":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"af769973d066931ab0e23a4fd0f5a2657503bbf3","unresolved":true,"context_lines":[{"line_number":1670,"context_line":""},{"line_number":1671,"context_line":"        instance_by_uuid \u003d {}"},{"line_number":1672,"context_line":"        for instance in instances:"},{"line_number":1673,"context_line":"            if ((instance.vm_state not in vm_states.ALLOW_RESOURCE_REMOVAL) or"},{"line_number":1674,"context_line":"                    (instance.vm_state \u003d\u003d vm_states.SHELVED_OFFLOADED and"},{"line_number":1675,"context_line":"                        instance.task_state \u003d\u003d task_states.SPAWNING)):"},{"line_number":1676,"context_line":"                self._update_usage_from_instance(context, instance, nodename)"}],"source_content_type":"text/x-python","patch_set":1,"id":"2008d44b_9f596dcd","line":1673,"updated":"2023-08-03 11:43:36.000000000","message":"SHELVED_OFFLOADED is in the ALLOW_RESOURCE_REMOVAL list, so this condition could be formulated differently, but this formulation looked a bit clearer to me. As this patch shows I believe we should not allow resource removal based on just vm_state, but on the (vm_state, task_state) pair.","commit_id":"2881ff936c336f49c4c27f7a763710bfd34edffa"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d44e5bbc5dea4e40b427ddc3bd29136126caa3e1","unresolved":true,"context_lines":[{"line_number":1670,"context_line":""},{"line_number":1671,"context_line":"        instance_by_uuid \u003d {}"},{"line_number":1672,"context_line":"        for instance in instances:"},{"line_number":1673,"context_line":"            if ((instance.vm_state not in vm_states.ALLOW_RESOURCE_REMOVAL) or"},{"line_number":1674,"context_line":"                    (instance.vm_state \u003d\u003d vm_states.SHELVED_OFFLOADED and"},{"line_number":1675,"context_line":"                        instance.task_state \u003d\u003d task_states.SPAWNING)):"},{"line_number":1676,"context_line":"                self._update_usage_from_instance(context, instance, nodename)"}],"source_content_type":"text/x-python","patch_set":1,"id":"e5c1ead4_854a8a44","line":1673,"in_reply_to":"2008d44b_9f596dcd","updated":"2023-08-15 10:00:51.000000000","message":"I think ALLOW_RESOURCE_REMOVAL is intended to be use to decide if resource claim can be dropped for an instance. But now you added an extra condition to decide. So I wondering if other places where we use ALLOW_RESOURCE_REMOVAL needs to be adapted too. There is at least two other places using this constant. I feel (not verified) that we need the new logic in those places too. If we can verify that they need it too then I suggest to replace ALLOW_RESOURCE_REMOVAL with a function that can decide based on vm_state and task_state if the claim can be dropped or not and use that function in all the affected places.","commit_id":"2881ff936c336f49c4c27f7a763710bfd34edffa"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"f88c59d4fd90d7bd4dc601d070487cf1e3d4a959","unresolved":false,"context_lines":[{"line_number":1670,"context_line":""},{"line_number":1671,"context_line":"        instance_by_uuid \u003d {}"},{"line_number":1672,"context_line":"        for instance in instances:"},{"line_number":1673,"context_line":"            if ((instance.vm_state not in vm_states.ALLOW_RESOURCE_REMOVAL) or"},{"line_number":1674,"context_line":"                    (instance.vm_state \u003d\u003d vm_states.SHELVED_OFFLOADED and"},{"line_number":1675,"context_line":"                        instance.task_state \u003d\u003d task_states.SPAWNING)):"},{"line_number":1676,"context_line":"                self._update_usage_from_instance(context, instance, nodename)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f80bf7f_8d68eeb1","line":1673,"in_reply_to":"e5c1ead4_854a8a44","updated":"2023-08-15 13:33:25.000000000","message":"Done","commit_id":"2881ff936c336f49c4c27f7a763710bfd34edffa"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d44e5bbc5dea4e40b427ddc3bd29136126caa3e1","unresolved":true,"context_lines":[{"line_number":1672,"context_line":"        for instance in instances:"},{"line_number":1673,"context_line":"            if ((instance.vm_state not in vm_states.ALLOW_RESOURCE_REMOVAL) or"},{"line_number":1674,"context_line":"                    (instance.vm_state \u003d\u003d vm_states.SHELVED_OFFLOADED and"},{"line_number":1675,"context_line":"                        instance.task_state \u003d\u003d task_states.SPAWNING)):"},{"line_number":1676,"context_line":"                self._update_usage_from_instance(context, instance, nodename)"},{"line_number":1677,"context_line":"            instance_by_uuid[instance.uuid] \u003d instance"},{"line_number":1678,"context_line":"        return instance_by_uuid"}],"source_content_type":"text/x-python","patch_set":2,"id":"eb9b6439_65078afb","line":1675,"updated":"2023-08-15 10:00:51.000000000","message":"One can ask if other vm_state and task_state combinations are affected or not. The ALLOW_RESOURCE_REMOVAL only contains DELETED and SHELVE_OFFLOADED today. \n\nFor SHELVE_OFFLOADED we see that the spawning is set then resource is claimed [1] then driver.spawn() is called. Based on some grepping it seems that the virt drivers does not update the task_state expect during image upload while doing a snapshot. So during unshelve no other task_state is expected than spawning while the VM has resource claim. \n\nThe DELETED vm_state only set during delete instance and it is different from the value (SOFT_DELETED) for the case when the VM is still undeletable. So I don\u0027t see a case when a DELETED instance still need resource claim.\n\nSo I think the new logic is OK and does not need extra conditions for other states.\n\n[1]https://github.com/openstack/nova/blob/e8d7380759619871b7537d8c3010df31da9f3a4d/nova/compute/manager.py#L7029-L7075","commit_id":"6dfd9d587457e993f63cc2e5fa7adc6bc84ba4a7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"f88c59d4fd90d7bd4dc601d070487cf1e3d4a959","unresolved":false,"context_lines":[{"line_number":1672,"context_line":"        for instance in instances:"},{"line_number":1673,"context_line":"            if ((instance.vm_state not in vm_states.ALLOW_RESOURCE_REMOVAL) or"},{"line_number":1674,"context_line":"                    (instance.vm_state \u003d\u003d vm_states.SHELVED_OFFLOADED and"},{"line_number":1675,"context_line":"                        instance.task_state \u003d\u003d task_states.SPAWNING)):"},{"line_number":1676,"context_line":"                self._update_usage_from_instance(context, instance, nodename)"},{"line_number":1677,"context_line":"            instance_by_uuid[instance.uuid] \u003d instance"},{"line_number":1678,"context_line":"        return instance_by_uuid"}],"source_content_type":"text/x-python","patch_set":2,"id":"8b53e656_4865cac6","line":1675,"in_reply_to":"eb9b6439_65078afb","updated":"2023-08-15 13:33:25.000000000","message":"Ack","commit_id":"6dfd9d587457e993f63cc2e5fa7adc6bc84ba4a7"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"f88c59d4fd90d7bd4dc601d070487cf1e3d4a959","unresolved":true,"context_lines":[{"line_number":1608,"context_line":""},{"line_number":1609,"context_line":"        uuid \u003d instance[\u0027uuid\u0027]"},{"line_number":1610,"context_line":"        is_new_instance \u003d uuid not in self.tracked_instances"},{"line_number":1611,"context_line":"        # NOTE(sfinucan): Both brand new instances as well as instances that"},{"line_number":1612,"context_line":"        # are being unshelved will have is_new_instance \u003d\u003d True"},{"line_number":1613,"context_line":"        is_removed_instance \u003d not is_new_instance and (is_removed or"},{"line_number":1614,"context_line":"            vm_states.allow_resource_removal("},{"line_number":1615,"context_line":"                vm_state\u003dinstance[\u0027vm_state\u0027], task_state\u003dinstance.task_state))"},{"line_number":1616,"context_line":""},{"line_number":1617,"context_line":"        if is_new_instance:"},{"line_number":1618,"context_line":"            self.tracked_instances.add(uuid)"}],"source_content_type":"text/x-python","patch_set":3,"id":"c4b4d0b8_f33526a2","line":1615,"range":{"start_line":1611,"start_character":10,"end_line":1615,"end_character":79},"updated":"2023-08-15 13:33:25.000000000","message":"According to the comment above, this change is likely not needed, however I believe it also should not be a problem and it helps to completely replace ALLOW_RESOURCE_REMOVAL.","commit_id":"d6fc990338788f11e7f5493b066ff31c35456eb1"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"6c87dfc8df42381ea2a7a114b3c992a0d9a9581d","unresolved":false,"context_lines":[{"line_number":1608,"context_line":""},{"line_number":1609,"context_line":"        uuid \u003d instance[\u0027uuid\u0027]"},{"line_number":1610,"context_line":"        is_new_instance \u003d uuid not in self.tracked_instances"},{"line_number":1611,"context_line":"        # NOTE(sfinucan): Both brand new instances as well as instances that"},{"line_number":1612,"context_line":"        # are being unshelved will have is_new_instance \u003d\u003d True"},{"line_number":1613,"context_line":"        is_removed_instance \u003d not is_new_instance and (is_removed or"},{"line_number":1614,"context_line":"            vm_states.allow_resource_removal("},{"line_number":1615,"context_line":"                vm_state\u003dinstance[\u0027vm_state\u0027], task_state\u003dinstance.task_state))"},{"line_number":1616,"context_line":""},{"line_number":1617,"context_line":"        if is_new_instance:"},{"line_number":1618,"context_line":"            self.tracked_instances.add(uuid)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5e5a52dd_fa020984","line":1615,"range":{"start_line":1611,"start_character":10,"end_line":1615,"end_character":79},"in_reply_to":"09ff8d6a_1ca76963","updated":"2023-08-17 08:53:07.000000000","message":"Ack","commit_id":"d6fc990338788f11e7f5493b066ff31c35456eb1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ac73835dc0d70f9c41fc88bb4ade6faee3c189e5","unresolved":true,"context_lines":[{"line_number":1608,"context_line":""},{"line_number":1609,"context_line":"        uuid \u003d instance[\u0027uuid\u0027]"},{"line_number":1610,"context_line":"        is_new_instance \u003d uuid not in self.tracked_instances"},{"line_number":1611,"context_line":"        # NOTE(sfinucan): Both brand new instances as well as instances that"},{"line_number":1612,"context_line":"        # are being unshelved will have is_new_instance \u003d\u003d True"},{"line_number":1613,"context_line":"        is_removed_instance \u003d not is_new_instance and (is_removed or"},{"line_number":1614,"context_line":"            vm_states.allow_resource_removal("},{"line_number":1615,"context_line":"                vm_state\u003dinstance[\u0027vm_state\u0027], task_state\u003dinstance.task_state))"},{"line_number":1616,"context_line":""},{"line_number":1617,"context_line":"        if is_new_instance:"},{"line_number":1618,"context_line":"            self.tracked_instances.add(uuid)"}],"source_content_type":"text/x-python","patch_set":3,"id":"09ff8d6a_1ca76963","line":1615,"range":{"start_line":1611,"start_character":10,"end_line":1615,"end_character":79},"in_reply_to":"c4b4d0b8_f33526a2","updated":"2023-08-16 08:29:11.000000000","message":"I agree on both. This also means not having a new test case around this is OK.","commit_id":"d6fc990338788f11e7f5493b066ff31c35456eb1"}],"nova/compute/stats.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ac73835dc0d70f9c41fc88bb4ade6faee3c189e5","unresolved":true,"context_lines":[{"line_number":105,"context_line":"        (vm_state, task_state, os_type, project_id) \u003d \\"},{"line_number":106,"context_line":"                self._extract_state_from_instance(instance)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        if is_removed or vm_states.allow_resource_removal("},{"line_number":109,"context_line":"                vm_state\u003dvm_state, task_state\u003dtask_state):"},{"line_number":110,"context_line":"            self._decrement(\"num_instances\")"},{"line_number":111,"context_line":"            self.states.pop(uuid)"}],"source_content_type":"text/x-python","patch_set":3,"id":"617c4725_7a101b75","line":108,"updated":"2023-08-16 08:29:11.000000000","message":"I would add a new unit test case for this change similar to nova.tests.unit.compute.test_stats.StatsTestCase.test_update_stats_for_instance_offloaded","commit_id":"d6fc990338788f11e7f5493b066ff31c35456eb1"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"6c87dfc8df42381ea2a7a114b3c992a0d9a9581d","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        (vm_state, task_state, os_type, project_id) \u003d \\"},{"line_number":106,"context_line":"                self._extract_state_from_instance(instance)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        if is_removed or vm_states.allow_resource_removal("},{"line_number":109,"context_line":"                vm_state\u003dvm_state, task_state\u003dtask_state):"},{"line_number":110,"context_line":"            self._decrement(\"num_instances\")"},{"line_number":111,"context_line":"            self.states.pop(uuid)"}],"source_content_type":"text/x-python","patch_set":3,"id":"37dacb61_3c0edc50","line":108,"in_reply_to":"617c4725_7a101b75","updated":"2023-08-17 08:53:07.000000000","message":"Done","commit_id":"d6fc990338788f11e7f5493b066ff31c35456eb1"}],"nova/compute/vm_states.py":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"f88c59d4fd90d7bd4dc601d070487cf1e3d4a959","unresolved":true,"context_lines":[{"line_number":79,"context_line":"ALLOW_TARGET_STATES \u003d [STOPPED]"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"def allow_resource_removal(vm_state, task_state\u003dNone):"},{"line_number":83,"context_line":"    \"\"\"(vm_state, task_state) combinations we allow resources to be freed in\"\"\""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    return ("}],"source_content_type":"text/x-python","patch_set":3,"id":"c9ecbb18_86caed3a","line":82,"range":{"start_line":82,"start_character":37,"end_line":82,"end_character":47},"updated":"2023-08-15 13:33:25.000000000","message":"It is clearly not the nicest to have functions considering the task_state in a file called vm_state.py. If you know a better place for this, let me know please.","commit_id":"d6fc990338788f11e7f5493b066ff31c35456eb1"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"6c87dfc8df42381ea2a7a114b3c992a0d9a9581d","unresolved":false,"context_lines":[{"line_number":79,"context_line":"ALLOW_TARGET_STATES \u003d [STOPPED]"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"def allow_resource_removal(vm_state, task_state\u003dNone):"},{"line_number":83,"context_line":"    \"\"\"(vm_state, task_state) combinations we allow resources to be freed in\"\"\""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    return ("}],"source_content_type":"text/x-python","patch_set":3,"id":"05deda25_5b39d27b","line":82,"range":{"start_line":82,"start_character":37,"end_line":82,"end_character":47},"in_reply_to":"6f34a455_433e2411","updated":"2023-08-17 08:53:07.000000000","message":"Ack","commit_id":"d6fc990338788f11e7f5493b066ff31c35456eb1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ac73835dc0d70f9c41fc88bb4ade6faee3c189e5","unresolved":true,"context_lines":[{"line_number":79,"context_line":"ALLOW_TARGET_STATES \u003d [STOPPED]"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"def allow_resource_removal(vm_state, task_state\u003dNone):"},{"line_number":83,"context_line":"    \"\"\"(vm_state, task_state) combinations we allow resources to be freed in\"\"\""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    return ("}],"source_content_type":"text/x-python","patch_set":3,"id":"6f34a455_433e2411","line":82,"range":{"start_line":82,"start_character":37,"end_line":82,"end_character":47},"in_reply_to":"c9ecbb18_86caed3a","updated":"2023-08-16 08:29:11.000000000","message":"It is fine by me.","commit_id":"d6fc990338788f11e7f5493b066ff31c35456eb1"}]}
