)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"9f59a177b4809a34fbf2b24cd028f7582a242608","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"e5daf8f2_fce1a796","updated":"2026-05-20 13:53:26.000000000","message":"According to me, the test is correct, well structured, and covers a real gap in functional coverage for bug #2112808. The mocks are well explained. This patch looks good to me.","commit_id":"ee85b651eeec07720438ba8771b68b1ee135d26b"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"4b77b801ea21af5209615d74b7abc9e26b20b94b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"a5c1fd6e_d5de38c8","updated":"2026-05-15 23:14:22.000000000","message":"This looks good to me","commit_id":"ee85b651eeec07720438ba8771b68b1ee135d26b"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"96f5dd9dabca1ce9f482feaf84db0cb312786467","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d592c828_72cf29bd","updated":"2026-08-25 02:32:36.000000000","message":"failure is valid as we refactored the live migration code little bit. need to update the test accordingly","commit_id":"ee85b651eeec07720438ba8771b68b1ee135d26b"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"e0c8ff7a49488d0001406d5cbb57c45da068ee9a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"a85a68e2_d6ebae81","updated":"2026-08-27 20:45:09.000000000","message":"Looks OK to me","commit_id":"0b689833a59772d3506fafbb1ba27ac4872dcf0a"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"6a09ca70efe65a91fc284cad6997c278939e6ca8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"8ceacdd7_61b9fe37","updated":"2026-08-25 17:37:44.000000000","message":"recheck https://bugs.launchpad.net/nova/+bug/2160254","commit_id":"0b689833a59772d3506fafbb1ba27ac4872dcf0a"}],"nova/tests/functional/libvirt/test_live_migration.py":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"9f59a177b4809a34fbf2b24cd028f7582a242608","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        # Unlike the API abort path, cleanup_host only sets the migration"},{"line_number":255,"context_line":"        # status to \u0027cancelled\u0027 without reverting the instance task_state."},{"line_number":256,"context_line":"        #"},{"line_number":257,"context_line":"        # Two mocks are required to avoid test-environment deadlocks:"},{"line_number":258,"context_line":"        # 1. driver.cleanup_host calls _host.cleanup() which blocks for up to"},{"line_number":259,"context_line":"        #    150 s draining the delayed-event executor — skip it."},{"line_number":260,"context_line":"        # 2. The test fixture force live_migration_executor.shutdown(wait\u003dTrue)"},{"line_number":261,"context_line":"        #    globally; waiting here would block because server_a\u0027s greenlet is"},{"line_number":262,"context_line":"        #    still running (it holds self.lock_live_migration). Override the"},{"line_number":263,"context_line":"        #    instance-level shutdown so the fixture\u0027s class-level patch is"},{"line_number":264,"context_line":"        #    bypassed, letting _cleanup_live_migrations_in_pool() cancel the"},{"line_number":265,"context_line":"        #    queued futures without waiting for the running one."},{"line_number":266,"context_line":"        with mock.patch.object(self.src.driver, \u0027cleanup_host\u0027), \\"},{"line_number":267,"context_line":"             mock.patch.object("},{"line_number":268,"context_line":"                 self.src.manager._live_migration_executor,"}],"source_content_type":"text/x-python","patch_set":1,"id":"d1eff8ad_83a59da4","line":265,"range":{"start_line":257,"start_character":0,"end_line":265,"end_character":64},"updated":"2026-05-20 13:53:26.000000000","message":"Cool to have explained the mocks. 👍","commit_id":"ee85b651eeec07720438ba8771b68b1ee135d26b"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"e0c8ff7a49488d0001406d5cbb57c45da068ee9a","unresolved":true,"context_lines":[{"line_number":259,"context_line":"        # from thread_pool_factory. Two mocks are required to avoid"},{"line_number":260,"context_line":"        # test deadlocks:"},{"line_number":261,"context_line":"        # 1. driver.cleanup_host calls _host.cleanup() which drain the"},{"line_number":262,"context_line":"        # delayed-event executor."},{"line_number":263,"context_line":"        # 2. _cleanup_live_migrations_in_pool() shuts the live-migration"},{"line_number":264,"context_line":"        #    shutdown executor with wait\u003dFalse, but the"},{"line_number":265,"context_line":"        #    GreenThreadPoolShutdownWait test fixture forces every"}],"source_content_type":"text/x-python","patch_set":2,"id":"b78a528b_9b9b65c3","line":262,"updated":"2026-08-27 20:45:09.000000000","message":"Need indent.","commit_id":"0b689833a59772d3506fafbb1ba27ac4872dcf0a"}]}
