)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b040c778b255c48f6cabc8f41ef2cb3d30535484","unresolved":true,"context_lines":[{"line_number":16,"context_line":"finish_resize never runs and the instance goes back to ACTIVE on the"},{"line_number":17,"context_line":"source, revert_resize is not triggered either, so the destination keeps"},{"line_number":18,"context_line":"the PCI device marked as allocated to the instance. The"},{"line_number":19,"context_line":"update_available_resource periodic cannot heal this because the errored"},{"line_number":20,"context_line":"migration is filtered out once the instance is no longer in a resize"},{"line_number":21,"context_line":"state."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"a886c1e6_035bd645","line":19,"updated":"2026-09-17 09:32:39.000000000","message":"This is an obvious alternative direction to take. Figuring out a way to do the cleanup in a periodic in this case too. But, we moved a lot of the resource tracking out from periodics into in-line calls to keep things consistent. Here I think we can make that move too.","commit_id":"9cf2255eb1fcb787a84045445fb41479d4edec0a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"97ccd475d10c6689c0dfcacf56309efad65da0b3","unresolved":true,"context_lines":[{"line_number":16,"context_line":"finish_resize never runs and the instance goes back to ACTIVE on the"},{"line_number":17,"context_line":"source, revert_resize is not triggered either, so the destination keeps"},{"line_number":18,"context_line":"the PCI device marked as allocated to the instance. The"},{"line_number":19,"context_line":"update_available_resource periodic cannot heal this because the errored"},{"line_number":20,"context_line":"migration is filtered out once the instance is no longer in a resize"},{"line_number":21,"context_line":"state."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7808be32_8b30af88","line":19,"in_reply_to":"a886c1e6_035bd645","updated":"2026-09-17 12:25:35.000000000","message":"on a second thought we might want both. The RPC is better as it is in-line with the operation. But it cannot \"heal\" old wounds of leaked PCI allocations. Having the periodic job also cleaning up could fix the old leaks present in pre-existing computes after the fix is deployed.","commit_id":"9cf2255eb1fcb787a84045445fb41479d4edec0a"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f9ed1bc2de215dbaf61af5e4c36d4495f6ed4866","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"872883fa_e4a5e239","updated":"2026-09-17 09:33:23.000000000","message":"@dms@danplanet.com @sbauza@redhat.com This is an grey area RPC change so I need your brain to spot any potential unwanted consequences.","commit_id":"9cf2255eb1fcb787a84045445fb41479d4edec0a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4b946b1dcd43b0f4b68709088a742c746de27916","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"cf798b7e_25a92e0c","updated":"2026-09-17 12:28:39.000000000","message":"reproducer unstable in CI...","commit_id":"9cf2255eb1fcb787a84045445fb41479d4edec0a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"76739a67142bbe37b09c39b10fafde9ba8adf2e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"88944fb5_404485ae","in_reply_to":"cf798b7e_25a92e0c","updated":"2026-09-18 08:31:01.000000000","message":"added an extra waiter for the exception notification, that should be emitted after the drop RPC returns so it should stabilize the test.","commit_id":"9cf2255eb1fcb787a84045445fb41479d4edec0a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"72068c0a68c0f6242270af4c6ea421bb607e961f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"dc09333e_81bcf34b","updated":"2026-09-21 15:40:51.000000000","message":"sounds good to me, keeping the RPC comment thread open for other reviewers to agree with it.","commit_id":"a49cd4fc2c1ecaf18240c9ec3f1db79138f99958"}],"nova/compute/manager.py":[{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"90635b8bc53475be561431fbb96bdd71d0b374fb","unresolved":true,"context_lines":[{"line_number":6349,"context_line":"                # nothing will release that claim on the destination. So we ask"},{"line_number":6350,"context_line":"                # the destination to drop the move claim to avoid leaking those"},{"line_number":6351,"context_line":"                # resources. See bug https://launchpad.net/bugs/2166786"},{"line_number":6352,"context_line":"                self.compute_rpcapi.drop_move_claim_at_destination("},{"line_number":6353,"context_line":"                    context, instance, migration.dest_compute)"},{"line_number":6354,"context_line":""},{"line_number":6355,"context_line":"    def _resize_instance("}],"source_content_type":"text/x-python","patch_set":2,"id":"04e3e948_f9a0d994","line":6352,"updated":"2026-09-17 11:45:36.000000000","message":"Shouldn\u0027t we wrap this in a try/except block and log the error from compute_rpcapi, rather than mixing two different potential exceptions?\"","commit_id":"9cf2255eb1fcb787a84045445fb41479d4edec0a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b040c778b255c48f6cabc8f41ef2cb3d30535484","unresolved":true,"context_lines":[{"line_number":6349,"context_line":"                # nothing will release that claim on the destination. So we ask"},{"line_number":6350,"context_line":"                # the destination to drop the move claim to avoid leaking those"},{"line_number":6351,"context_line":"                # resources. See bug https://launchpad.net/bugs/2166786"},{"line_number":6352,"context_line":"                self.compute_rpcapi.drop_move_claim_at_destination("},{"line_number":6353,"context_line":"                    context, instance, migration.dest_compute)"},{"line_number":6354,"context_line":""},{"line_number":6355,"context_line":"    def _resize_instance("}],"source_content_type":"text/x-python","patch_set":2,"id":"a47141f6_c90fb478","line":6352,"updated":"2026-09-17 09:32:39.000000000","message":"note, this is an RPC call that was so far only used for live migration. But it is a simple one in a sense that it really just drops the claim in the resource tracker on the dest node. Being a call helps keeping the instance \"locked\" with a task_state while the cleanup happens on the dest.","commit_id":"9cf2255eb1fcb787a84045445fb41479d4edec0a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"92be017dae2d123dd9b04a2d3e3cde8a292bee46","unresolved":true,"context_lines":[{"line_number":6349,"context_line":"                # nothing will release that claim on the destination. So we ask"},{"line_number":6350,"context_line":"                # the destination to drop the move claim to avoid leaking those"},{"line_number":6351,"context_line":"                # resources. See bug https://launchpad.net/bugs/2166786"},{"line_number":6352,"context_line":"                self.compute_rpcapi.drop_move_claim_at_destination("},{"line_number":6353,"context_line":"                    context, instance, migration.dest_compute)"},{"line_number":6354,"context_line":""},{"line_number":6355,"context_line":"    def _resize_instance("}],"source_content_type":"text/x-python","patch_set":2,"id":"84d3b036_c96e6a5d","line":6352,"in_reply_to":"04e3e948_f9a0d994","updated":"2026-09-17 12:27:42.000000000","message":"there is a save and re-raise context mgr which purpose is to be able to cascade exceptions. \n\nI\u0027m not sure how it would be different if we catch an exception here and the just raise it back up. Or do you suggest not raising the caught exception up?","commit_id":"9cf2255eb1fcb787a84045445fb41479d4edec0a"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"75299253fef61549c85cc6da27712dddab3efb0b","unresolved":false,"context_lines":[{"line_number":6349,"context_line":"                # nothing will release that claim on the destination. So we ask"},{"line_number":6350,"context_line":"                # the destination to drop the move claim to avoid leaking those"},{"line_number":6351,"context_line":"                # resources. See bug https://launchpad.net/bugs/2166786"},{"line_number":6352,"context_line":"                self.compute_rpcapi.drop_move_claim_at_destination("},{"line_number":6353,"context_line":"                    context, instance, migration.dest_compute)"},{"line_number":6354,"context_line":""},{"line_number":6355,"context_line":"    def _resize_instance("}],"source_content_type":"text/x-python","patch_set":2,"id":"1856f29a_d0005a10","line":6352,"in_reply_to":"84d3b036_c96e6a5d","updated":"2026-09-18 09:58:30.000000000","message":"I initially thought that getting a timeout error from the RPC call wouldn\u0027t look much different from a normal issue with reverting allocations, but now I see that might be overcomplicating things","commit_id":"9cf2255eb1fcb787a84045445fb41479d4edec0a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"72068c0a68c0f6242270af4c6ea421bb607e961f","unresolved":true,"context_lines":[{"line_number":6349,"context_line":"                # nothing will release that claim on the destination. So we ask"},{"line_number":6350,"context_line":"                # the destination to drop the move claim to avoid leaking those"},{"line_number":6351,"context_line":"                # resources. See bug https://launchpad.net/bugs/2166786"},{"line_number":6352,"context_line":"                self.compute_rpcapi.drop_move_claim_at_destination("},{"line_number":6353,"context_line":"                    context, instance, migration.dest_compute)"},{"line_number":6354,"context_line":""},{"line_number":6355,"context_line":"    def _resize_instance("}],"source_content_type":"text/x-python","patch_set":2,"id":"e2781eb5_8956d2ff","line":6352,"in_reply_to":"a47141f6_c90fb478","updated":"2026-09-21 15:40:51.000000000","message":"I\u0027m OK with reusing that RPC API as this was implemented in Train https://github.com/openstack/nova/blob/94de0576ca02e0668233bedfbe7e18b87316c708/nova/compute/rpcapi.py#L377-L379 so basically even very old computes can speak that language and can understand it.\nNo upgrade impact, no need to wait for a rolling upgrade to be finished, this can even be working out of our supported RPC enveloppe 😉","commit_id":"9cf2255eb1fcb787a84045445fb41479d4edec0a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"72068c0a68c0f6242270af4c6ea421bb607e961f","unresolved":false,"context_lines":[{"line_number":6358,"context_line":"                # is reverted to the source host so nothing else will clean it"},{"line_number":6359,"context_line":"                # up, similar to what finish_revert_migration() does on a"},{"line_number":6360,"context_line":"                # normal revert."},{"line_number":6361,"context_line":"                instance.drop_migration_context()"},{"line_number":6362,"context_line":""},{"line_number":6363,"context_line":"    def _resize_instance("},{"line_number":6364,"context_line":"        self, context, instance, image, migration, flavor,"}],"source_content_type":"text/x-python","patch_set":6,"id":"734b6490_fa79a1dc","line":6361,"updated":"2026-09-21 15:40:51.000000000","message":"there could be a chance where instance.drop_migration_context() isn\u0027t called (basically if drop_move_claim_at_destination() raises) but then : \n- it would have been seen that drop_move_claim_at_dest() was raising thanks to the exception handling cascade with save_and_reraise_exception()\n- given we will have a periodic that autoheals eventually (in the previous patch), that doesn\u0027t seem a problem to me.\n\nLong story short : no need to handle that case.","commit_id":"a49cd4fc2c1ecaf18240c9ec3f1db79138f99958"}],"nova/tests/functional/regressions/test_bug_2166786.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"72068c0a68c0f6242270af4c6ea421bb607e961f","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        # Also the migration context is cleaned up now"},{"line_number":98,"context_line":"        inst \u003d objects.Instance.get_by_uuid(self.ctxt, server[\u0027id\u0027])"},{"line_number":99,"context_line":"        self.assertIsNone(inst.migration_context)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        self._delete_server(server)"},{"line_number":102,"context_line":"        self.assert_pci_inventory(comp0, total\u003d2, free\u003d2)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3bed50eb_36827bb4","line":99,"updated":"2026-09-21 15:40:51.000000000","message":"\\o/","commit_id":"a49cd4fc2c1ecaf18240c9ec3f1db79138f99958"}]}
