)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"922328ee3bdb334595d17bb028f99f0565cb9251","unresolved":true,"context_lines":[{"line_number":15,"context_line":"orphaned attachments and improving resource consistency."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Signed-off-by: Max Lamprecht \u003cmax.lamprecht@stackit.cloud\u003e"},{"line_number":18,"context_line":"Closes-Bug: #2088066"},{"line_number":19,"context_line":"Change-Id: Ie36164e5d5e5b219e7ce787398dbdcf8d75490d1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"a16ed956_c3855e4e","line":18,"updated":"2025-10-29 09:41:14.000000000","message":"the bug report seam reasonable to me but normally we would try and create a repoducer functional regression test \n\nhttps://github.com/openstack/nova/blob/30bf8c1025ea24823ebde3eacede4ea34ec6be8c/nova/tests/functional/regressions/test_bug_1909120.py\n\nhttps://github.com/openstack/nova/blob/30bf8c1025ea24823ebde3eacede4ea34ec6be8c/nova/tests/functional/regressions/test_bug_1784353.py\n\n\nlooking at the first case you see or normal patther is to create the regression test\n\nhttps://github.com/openstack/nova/commit/a3697ed013372733615d0e6d7f6088ad2591429c\nand then fix the bug\nhttps://github.com/openstack/nova/commit/db8213af8341989354231f9b67dd983365899015\n\nwould it be possible for you to create a regression test like this?\n\nwe have examples of using threading events to pause workflows at specific point ehn required\n\nhttps://github.com/openstack/nova/blob/30bf8c1025ea24823ebde3eacede4ea34ec6be8c/nova/tests/functional/regressions/test_bug_2085975.py#L91-L95\n\nthat should allow you to kick off the server create and cuase that to sleep after the build request adn attachment is created but before teh request spec if created.","commit_id":"ff832b45509add4db890c9c35b2c7ff9acf3f856"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a15c9a30994c02afdb66d42bd6eecbcf33bd12b2","unresolved":false,"context_lines":[{"line_number":15,"context_line":"orphaned attachments and improving resource consistency."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Signed-off-by: Max Lamprecht \u003cmax.lamprecht@stackit.cloud\u003e"},{"line_number":18,"context_line":"Closes-Bug: #2088066"},{"line_number":19,"context_line":"Change-Id: Ie36164e5d5e5b219e7ce787398dbdcf8d75490d1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"664cc90a_4b6387b6","line":18,"in_reply_to":"3d8c180a_557ff5d1","updated":"2025-11-03 15:31:38.000000000","message":"Acknowledged","commit_id":"ff832b45509add4db890c9c35b2c7ff9acf3f856"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"cb7e14b72a8c5b42c055355733ae45b45a87d217","unresolved":true,"context_lines":[{"line_number":15,"context_line":"orphaned attachments and improving resource consistency."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Signed-off-by: Max Lamprecht \u003cmax.lamprecht@stackit.cloud\u003e"},{"line_number":18,"context_line":"Closes-Bug: #2088066"},{"line_number":19,"context_line":"Change-Id: Ie36164e5d5e5b219e7ce787398dbdcf8d75490d1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3d8c180a_557ff5d1","line":18,"in_reply_to":"a16ed956_c3855e4e","updated":"2025-11-03 13:31:03.000000000","message":"Thx for the provided example. That was really helpful!\n\nI added a regression test and submitted it as seperate commit.\n1st PR/regression test: https://review.opendev.org/c/openstack/nova/+/965927","commit_id":"ff832b45509add4db890c9c35b2c7ff9acf3f856"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"59ac540722c8eca94f4883c0bd5c207ea48f955d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c2778f0b_e658a6b4","updated":"2025-08-20 06:01:55.000000000","message":"LGTM","commit_id":"85679d2f8be2ff3645e102355a67c2ff793b3469"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"d85bd6cb5448eb75c5045314a0e6047732e249a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"23c60827_347aab43","updated":"2025-08-19 13:12:38.000000000","message":"recheck nova-multi-cell CI timeout","commit_id":"85679d2f8be2ff3645e102355a67c2ff793b3469"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"922328ee3bdb334595d17bb028f99f0565cb9251","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"305f56dc_18dcdf88","updated":"2025-10-29 09:41:14.000000000","message":"this idealy woudl have a release note but over all the fix looks mostly ok to me\n\nit would be nice to improve the testing with a functional regression test if you have time to do that it woudl be good.\n\nover all i think the unit test coverage is reasonable but as i commented inline i think we shoudl reorder the fucntions calls to align to the order in the local delete codepath.","commit_id":"ff832b45509add4db890c9c35b2c7ff9acf3f856"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"cb7e14b72a8c5b42c055355733ae45b45a87d217","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"253605c8_336320c5","in_reply_to":"305f56dc_18dcdf88","updated":"2025-11-03 13:31:03.000000000","message":"added a release not and reordered the function calls","commit_id":"ff832b45509add4db890c9c35b2c7ff9acf3f856"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d6b472b193be6b6017c5226ac7bce4686dc3f23a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1e559f51_ae9bef2e","updated":"2026-03-09 17:59:32.000000000","message":"-1 for visibility since it has a +2 on it already","commit_id":"81820b399a8301c0a5c3741e5278d1b7ed1e5b68"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4f739e598810e3b33aa210689d9b4731bae00512","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"02558c36_afabebc7","updated":"2026-03-09 19:10:44.000000000","message":"droping to 0 until i have time to read dans comments","commit_id":"81820b399a8301c0a5c3741e5278d1b7ed1e5b68"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d1cf809ee978714b512610752b9d630f883c3505","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"80d47abd_41eb793a","updated":"2026-03-09 19:12:41.000000000","message":"i might have been conclating this patch with https://review.opendev.org/c/openstack/nova/+/972045 but i ahve not had time to read the comments on either","commit_id":"81820b399a8301c0a5c3741e5278d1b7ed1e5b68"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a15c9a30994c02afdb66d42bd6eecbcf33bd12b2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"ca95461b_ed3b5f2a","updated":"2025-11-03 15:31:38.000000000","message":"lets wait for the ci to report but at a high level i think this looks mostly correct ill loop back later and take another look","commit_id":"81820b399a8301c0a5c3741e5278d1b7ed1e5b68"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"09a37d62cc1de026cfd6d70aa937da116fae6b5a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"86fe79c7_4058e966","updated":"2025-11-04 12:23:24.000000000","message":"recheck - CI failed again on other test -.-\nnova-multi-cell: tempest.lib.exceptions.TimeoutException: Request timed out","commit_id":"81820b399a8301c0a5c3741e5278d1b7ed1e5b68"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"611fb3589f0aea8d1b9db424383b43ccb20f6cbb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"37ed81fc_cb0de47e","updated":"2025-11-04 08:48:44.000000000","message":"recheck - unrelated CI failure nova-multi-cell: tempest.lib.exceptions.TimeoutException: Request timed out","commit_id":"81820b399a8301c0a5c3741e5278d1b7ed1e5b68"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"8a7f6c8c65aa3b27c85577637175b0a2894cf843","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"e9a7407e_e437d4e4","updated":"2026-04-07 18:31:48.000000000","message":"recheck - SSL errors(opendevstatus: gitea backends high load)","commit_id":"f7dd550a70b707917a8728fb5f4d771dd00e1db5"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"4fc55ee8aeabac0528b8051126f83713acf859d0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"b2108779_d023b389","updated":"2026-04-08 11:44:51.000000000","message":"recheck - nova-grenade-multinode - tempest.api.compute.servers.test_server_actions.ServerActionsTestOtherA / 16.985945] Kernel panic - not syncing: Attempted to kill init! exitcode\u003d0x00001000 leading to tempest.lib.exceptions.SSHTimeout: Connection to the 172.24.5.112 via SSH timed out.","commit_id":"f7dd550a70b707917a8728fb5f4d771dd00e1db5"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"3f730e80d0db2074f9dba115bc7b5e442a7f304f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"22424050_6a13ed6f","updated":"2026-03-11 10:31:43.000000000","message":"recheck - openstack-tox-cover - fixtures._fixtures.timeout.TimeoutException","commit_id":"f7dd550a70b707917a8728fb5f4d771dd00e1db5"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"06d7727abbe37429e899a6817f6edf95a8caf6df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"29521469_f12b9322","updated":"2026-03-10 09:57:14.000000000","message":"recheck - tempest-integrated-compute - Connection to the 172.24.5.234 via SSH timed out.","commit_id":"f7dd550a70b707917a8728fb5f4d771dd00e1db5"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"67363074c36db700b049bb4dc91a1f5a6c09093d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3e4614c1_cb58ae72","updated":"2026-03-11 07:44:15.000000000","message":"recheck - tempest-integrated-compute - again Connection to the 172.24.5.234 via SSH timed out.","commit_id":"f7dd550a70b707917a8728fb5f4d771dd00e1db5"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"5111c23a6b9b073144cf6194c898f5fb52a7272d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"eeb1b5ca_17d67071","updated":"2026-04-07 21:32:35.000000000","message":"recheck - tempest-integrated-compute tempest.lib.exceptions.SSHTimeout: Connection to the 172.24.5.204 via SSH timed out.","commit_id":"f7dd550a70b707917a8728fb5f4d771dd00e1db5"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"dc9a528327377733d06f94f29534eb4ee3ec8807","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"73d551ac_e74f6cf5","updated":"2026-04-09 08:17:15.000000000","message":"recheck - tox cover - TIMED_OUT","commit_id":"f7dd550a70b707917a8728fb5f4d771dd00e1db5"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"1e5814666d966ab42b9f57efee8e9190c264c69f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"2a8086aa_9e6aca67","updated":"2026-04-08 06:29:08.000000000","message":"recheck unrelated failure - nova-live-migration  tempest.api.compute.admin.test_live_migration.LiveMigrationManagerWorkflowTest instance build failure","commit_id":"f7dd550a70b707917a8728fb5f4d771dd00e1db5"}],"nova/compute/api.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"922328ee3bdb334595d17bb028f99f0565cb9251","unresolved":true,"context_lines":[{"line_number":2449,"context_line":""},{"line_number":2450,"context_line":"                cell, instance \u003d self._lookup_instance(context, instance.uuid)"},{"line_number":2451,"context_line":"                if cell and instance:"},{"line_number":2452,"context_line":"                    bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":2453,"context_line":"                        context, instance.uuid)"},{"line_number":2454,"context_line":"                    try:"},{"line_number":2455,"context_line":"                        # Now destroy the instance from the cell it lives in."},{"line_number":2456,"context_line":"                        # The instance.destroy will wipe all related BDMs from"}],"source_content_type":"text/x-python","patch_set":6,"id":"8e920477_b00b323b","line":2453,"range":{"start_line":2452,"start_character":1,"end_line":2453,"end_character":47},"updated":"2025-10-29 09:41:14.000000000","message":"you shoudl use the get_bdms method here\n```suggestion\n                    bdms \u003d instance.get_bdms()\n```\nhttps://github.com/openstack/nova/blob/30bf8c1025ea24823ebde3eacede4ea34ec6be8c/nova/objects/instance.py#L1259-L1261","commit_id":"ff832b45509add4db890c9c35b2c7ff9acf3f856"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"cb7e14b72a8c5b42c055355733ae45b45a87d217","unresolved":true,"context_lines":[{"line_number":2449,"context_line":""},{"line_number":2450,"context_line":"                cell, instance \u003d self._lookup_instance(context, instance.uuid)"},{"line_number":2451,"context_line":"                if cell and instance:"},{"line_number":2452,"context_line":"                    bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":2453,"context_line":"                        context, instance.uuid)"},{"line_number":2454,"context_line":"                    try:"},{"line_number":2455,"context_line":"                        # Now destroy the instance from the cell it lives in."},{"line_number":2456,"context_line":"                        # The instance.destroy will wipe all related BDMs from"}],"source_content_type":"text/x-python","patch_set":6,"id":"e010e82e_e00128b0","line":2453,"range":{"start_line":2452,"start_character":1,"end_line":2453,"end_character":47},"in_reply_to":"8e920477_b00b323b","updated":"2025-11-03 13:31:03.000000000","message":"changed, but I had to adjust context in regression test #1914777 as the Instance.get_by_uuid mock returned previously a context that was not privileged enough to delete the instance. I hope this patch is ok :)\n\nOtherwise we could also use the admin context in the test.","commit_id":"ff832b45509add4db890c9c35b2c7ff9acf3f856"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a15c9a30994c02afdb66d42bd6eecbcf33bd12b2","unresolved":false,"context_lines":[{"line_number":2449,"context_line":""},{"line_number":2450,"context_line":"                cell, instance \u003d self._lookup_instance(context, instance.uuid)"},{"line_number":2451,"context_line":"                if cell and instance:"},{"line_number":2452,"context_line":"                    bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":2453,"context_line":"                        context, instance.uuid)"},{"line_number":2454,"context_line":"                    try:"},{"line_number":2455,"context_line":"                        # Now destroy the instance from the cell it lives in."},{"line_number":2456,"context_line":"                        # The instance.destroy will wipe all related BDMs from"}],"source_content_type":"text/x-python","patch_set":6,"id":"b2bff830_cca937a7","line":2453,"range":{"start_line":2452,"start_character":1,"end_line":2453,"end_character":47},"in_reply_to":"e010e82e_e00128b0","updated":"2025-11-03 15:31:38.000000000","message":"Acknowledged that sound like existing technical debt so that shoudl be fine","commit_id":"ff832b45509add4db890c9c35b2c7ff9acf3f856"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"922328ee3bdb334595d17bb028f99f0565cb9251","unresolved":true,"context_lines":[{"line_number":2463,"context_line":"                        pass"},{"line_number":2464,"context_line":"                    # The instance was deleted or is already gone."},{"line_number":2465,"context_line":"                    self._local_delete_cleanup(context, instance.uuid)"},{"line_number":2466,"context_line":"                    # If there are any block device mappings, clean them up."},{"line_number":2467,"context_line":"                    if len(bdms) \u003e 0:"},{"line_number":2468,"context_line":"                        # ensure any bdms and cinder attachments are cleaned up"},{"line_number":2469,"context_line":"                        self._local_cleanup_bdm_volumes("},{"line_number":2470,"context_line":"                            bdms, instance, context)"},{"line_number":2471,"context_line":"                    return"},{"line_number":2472,"context_line":"                if not instance:"},{"line_number":2473,"context_line":"                    # Instance is already deleted."}],"source_content_type":"text/x-python","patch_set":6,"id":"a31426b8_af845e76","line":2470,"range":{"start_line":2466,"start_character":20,"end_line":2470,"end_character":52},"updated":"2025-10-29 09:41:14.000000000","message":"you shoudl probably move this to line 2454 before the try\nso we do these operation in the same order that we do them in _local_delete codepath.\n\nthere we do it before the instance.destroy call.","commit_id":"ff832b45509add4db890c9c35b2c7ff9acf3f856"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"cb7e14b72a8c5b42c055355733ae45b45a87d217","unresolved":false,"context_lines":[{"line_number":2463,"context_line":"                        pass"},{"line_number":2464,"context_line":"                    # The instance was deleted or is already gone."},{"line_number":2465,"context_line":"                    self._local_delete_cleanup(context, instance.uuid)"},{"line_number":2466,"context_line":"                    # If there are any block device mappings, clean them up."},{"line_number":2467,"context_line":"                    if len(bdms) \u003e 0:"},{"line_number":2468,"context_line":"                        # ensure any bdms and cinder attachments are cleaned up"},{"line_number":2469,"context_line":"                        self._local_cleanup_bdm_volumes("},{"line_number":2470,"context_line":"                            bdms, instance, context)"},{"line_number":2471,"context_line":"                    return"},{"line_number":2472,"context_line":"                if not instance:"},{"line_number":2473,"context_line":"                    # Instance is already deleted."}],"source_content_type":"text/x-python","patch_set":6,"id":"fce0e309_3effe746","line":2470,"range":{"start_line":2466,"start_character":20,"end_line":2470,"end_character":52},"in_reply_to":"a31426b8_af845e76","updated":"2025-11-03 13:31:03.000000000","message":"moved","commit_id":"ff832b45509add4db890c9c35b2c7ff9acf3f856"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"922328ee3bdb334595d17bb028f99f0565cb9251","unresolved":true,"context_lines":[{"line_number":2700,"context_line":"            self.network_api.deallocate_for_instance(elevated, instance)"},{"line_number":2701,"context_line":""},{"line_number":2702,"context_line":"            # cleanup volumes"},{"line_number":2703,"context_line":"            self._local_cleanup_bdm_volumes(bdms, instance, context)"},{"line_number":2704,"context_line":""},{"line_number":2705,"context_line":"            # cleanup accelerator requests (ARQs)"},{"line_number":2706,"context_line":"            compute_utils.delete_arqs_if_needed(context, instance)"}],"source_content_type":"text/x-python","patch_set":6,"id":"25e7ebea_a74add08","line":2703,"updated":"2025-10-29 09:41:14.000000000","message":"ok so we already do this cleanup in the local delete case.","commit_id":"ff832b45509add4db890c9c35b2c7ff9acf3f856"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a15c9a30994c02afdb66d42bd6eecbcf33bd12b2","unresolved":false,"context_lines":[{"line_number":2700,"context_line":"            self.network_api.deallocate_for_instance(elevated, instance)"},{"line_number":2701,"context_line":""},{"line_number":2702,"context_line":"            # cleanup volumes"},{"line_number":2703,"context_line":"            self._local_cleanup_bdm_volumes(bdms, instance, context)"},{"line_number":2704,"context_line":""},{"line_number":2705,"context_line":"            # cleanup accelerator requests (ARQs)"},{"line_number":2706,"context_line":"            compute_utils.delete_arqs_if_needed(context, instance)"}],"source_content_type":"text/x-python","patch_set":6,"id":"d1f4d6d8_30e55a94","line":2703,"in_reply_to":"25e7ebea_a74add08","updated":"2025-11-03 15:31:38.000000000","message":"Acknowledged","commit_id":"ff832b45509add4db890c9c35b2c7ff9acf3f856"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d6b472b193be6b6017c5226ac7bce4686dc3f23a","unresolved":true,"context_lines":[{"line_number":2459,"context_line":"                        # Now destroy the instance from the cell it lives in."},{"line_number":2460,"context_line":"                        # The instance.destroy will wipe all related BDMs from"},{"line_number":2461,"context_line":"                        # the database. Therefore we need to notify cinder with"},{"line_number":2462,"context_line":"                        # the _local_cleanup_bdm_volumes() call afterwards."},{"line_number":2463,"context_line":"                        with compute_utils.notify_about_instance_delete("},{"line_number":2464,"context_line":"                                self.notifier, context, instance):"},{"line_number":2465,"context_line":"                            instance.destroy()"}],"source_content_type":"text/x-python","patch_set":8,"id":"7eed6899_6272c316","line":2462,"updated":"2026-03-09 17:59:32.000000000","message":"This says \"afterwards\" which makes sense to me, but.. you\u0027re doing it before this, no?","commit_id":"81820b399a8301c0a5c3741e5278d1b7ed1e5b68"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"c7615e59ad4d56a05478f1d4d8e0764dd7cd538c","unresolved":true,"context_lines":[{"line_number":2459,"context_line":"                        # Now destroy the instance from the cell it lives in."},{"line_number":2460,"context_line":"                        # The instance.destroy will wipe all related BDMs from"},{"line_number":2461,"context_line":"                        # the database. Therefore we need to notify cinder with"},{"line_number":2462,"context_line":"                        # the _local_cleanup_bdm_volumes() call afterwards."},{"line_number":2463,"context_line":"                        with compute_utils.notify_about_instance_delete("},{"line_number":2464,"context_line":"                                self.notifier, context, instance):"},{"line_number":2465,"context_line":"                            instance.destroy()"}],"source_content_type":"text/x-python","patch_set":8,"id":"a44b4a96_5cdc7147","line":2462,"in_reply_to":"7eed6899_6272c316","updated":"2026-03-10 08:36:05.000000000","message":"true, changed to wording to \"before\"","commit_id":"81820b399a8301c0a5c3741e5278d1b7ed1e5b68"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"5f6aff7bb718a2c4022b9fec0158b472ab951d39","unresolved":true,"context_lines":[{"line_number":2459,"context_line":"                        # Now destroy the instance from the cell it lives in."},{"line_number":2460,"context_line":"                        # The instance.destroy will wipe all related BDMs from"},{"line_number":2461,"context_line":"                        # the database. Therefore we need to notify cinder with"},{"line_number":2462,"context_line":"                        # the _local_cleanup_bdm_volumes() call afterwards."},{"line_number":2463,"context_line":"                        with compute_utils.notify_about_instance_delete("},{"line_number":2464,"context_line":"                                self.notifier, context, instance):"},{"line_number":2465,"context_line":"                            instance.destroy()"}],"source_content_type":"text/x-python","patch_set":8,"id":"5433a162_f69955f9","line":2462,"in_reply_to":"9fd20a9d_741ef9ed","updated":"2026-03-10 14:25:58.000000000","message":"Currently my main focus is to resolve the BDM\u003c-\u003eattachment out of sync cases in our environment.\n\nMy main focus is still to resolve the errors that are caused by race conditions or logical errors:\n- like with this PR\n- https://review.opendev.org/c/openstack/nova/+/974832\n- https://review.opendev.org/c/openstack/nova/+/972045\n\nOverall I aggree that we have to make the whole process somehow transaction safe. e.g. if we can\u0027t speak with cinder/receive keystone auth errors or some other errors, we should not leave orphaned BDMs/attachments behind. But I guess therefore we need to have a bigger discussion as this problem exists in multiple places.","commit_id":"81820b399a8301c0a5c3741e5278d1b7ed1e5b68"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"926afbef78e0c99289c3eca47f9d2459e72742f5","unresolved":true,"context_lines":[{"line_number":2459,"context_line":"                        # Now destroy the instance from the cell it lives in."},{"line_number":2460,"context_line":"                        # The instance.destroy will wipe all related BDMs from"},{"line_number":2461,"context_line":"                        # the database. Therefore we need to notify cinder with"},{"line_number":2462,"context_line":"                        # the _local_cleanup_bdm_volumes() call afterwards."},{"line_number":2463,"context_line":"                        with compute_utils.notify_about_instance_delete("},{"line_number":2464,"context_line":"                                self.notifier, context, instance):"},{"line_number":2465,"context_line":"                            instance.destroy()"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fd20a9d_741ef9ed","line":2462,"in_reply_to":"a44b4a96_5cdc7147","updated":"2026-03-10 13:49:20.000000000","message":"Okay but my point was that it seemed like it would be better to do it after. But, I\u0027ve gone through `_local_cleanup_bdm_volumes()` and I think what you\u0027re doing here should be safe enough. A test to show what happens if we fail to call to cinder for one of multiple volume BDMs would be good.","commit_id":"81820b399a8301c0a5c3741e5278d1b7ed1e5b68"}],"nova/tests/functional/regressions/test_bug_1914777.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a15c9a30994c02afdb66d42bd6eecbcf33bd12b2","unresolved":true,"context_lines":[{"line_number":58,"context_line":"        self.ctxt \u003d nova_context.RequestContext("},{"line_number":59,"context_line":"            project_id\u003dself.api.project_id,"},{"line_number":60,"context_line":"            user_id\u003dself.api.auth_user"},{"line_number":61,"context_line":"        )"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        # We intentionally do not start a conductor or scheduler service, since"},{"line_number":64,"context_line":"        # our goal is to simulate an instance that has not been scheduled yet."}],"source_content_type":"text/x-python","patch_set":7,"id":"d2fc8462_286f726d","line":61,"updated":"2025-11-03 15:31:38.000000000","message":"+1 yes this is correct.\n\nwe sometimes cheat and use the admin context \nhttps://github.com/openstack/nova/blob/32f58e8ad6a7ff896cc6ae8a361e3a18f5b35c9a/nova/tests/functional/regressions/test_bug_1853009.py#L56\nbut what your doing is more correct.","commit_id":"ecbb4bf90feed4e2db4104d65c1a217c9f1350ab"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"281edc6b745e657fbb9ecba24e6942976c43c5af","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self.ctxt \u003d nova_context.RequestContext("},{"line_number":59,"context_line":"            project_id\u003dself.api.project_id,"},{"line_number":60,"context_line":"            user_id\u003dself.api.auth_user"},{"line_number":61,"context_line":"        )"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        # We intentionally do not start a conductor or scheduler service, since"},{"line_number":64,"context_line":"        # our goal is to simulate an instance that has not been scheduled yet."}],"source_content_type":"text/x-python","patch_set":7,"id":"80031608_5b3fe0d5","line":61,"in_reply_to":"d2fc8462_286f726d","updated":"2025-11-18 15:35:35.000000000","message":"thx - I guess this comment can be closed and this MR is ready for merge","commit_id":"ecbb4bf90feed4e2db4104d65c1a217c9f1350ab"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"926afbef78e0c99289c3eca47f9d2459e72742f5","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self.ctxt \u003d nova_context.RequestContext("},{"line_number":59,"context_line":"            project_id\u003dself.api.project_id,"},{"line_number":60,"context_line":"            user_id\u003dself.api.auth_user"},{"line_number":61,"context_line":"        )"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        # We intentionally do not start a conductor or scheduler service, since"},{"line_number":64,"context_line":"        # our goal is to simulate an instance that has not been scheduled yet."}],"source_content_type":"text/x-python","patch_set":9,"id":"9c5d84fc_56d35fe5","line":61,"updated":"2026-03-10 13:49:20.000000000","message":"Confirmed needed after this change","commit_id":"f7dd550a70b707917a8728fb5f4d771dd00e1db5"}],"nova/tests/functional/regressions/test_bug_2088066.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a15c9a30994c02afdb66d42bd6eecbcf33bd12b2","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        self.assertEqual("},{"line_number":96,"context_line":"            [], final_attachments, \"Volume attachments should be cleaned up\""},{"line_number":97,"context_line":"        )"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        # allow build_and_run_instance to continue for clean up (also if this"},{"line_number":100,"context_line":"        # fails)"}],"source_content_type":"text/x-python","patch_set":8,"id":"00cddfad_c5fdcb7e","line":97,"updated":"2025-11-03 15:31:38.000000000","message":"+1","commit_id":"81820b399a8301c0a5c3741e5278d1b7ed1e5b68"}],"nova/tests/unit/compute/test_api.py":[{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"58b78bd747e2b702cf12a771d12fa0eada68275e","unresolved":true,"context_lines":[{"line_number":1673,"context_line":"    @mock.patch(\u0027nova.compute.utils.notify_about_instance_delete\u0027)"},{"line_number":1674,"context_line":"    @mock.patch(\u0027nova.objects.Instance.destroy\u0027)"},{"line_number":1675,"context_line":"    def test_delete_instance_from_cell0(self, destroy_mock, notify_mock,"},{"line_number":1676,"context_line":"                                        mock_bdm_get):"},{"line_number":1677,"context_line":"        \"\"\"Tests the case that the instance does not have a host and was not"},{"line_number":1678,"context_line":"        deleted while building, so conductor put it into cell0 so the API has"},{"line_number":1679,"context_line":"        to delete the instance from cell0."}],"source_content_type":"text/x-python","patch_set":4,"id":"245fe10e_f7b9df51","line":1676,"range":{"start_line":1676,"start_character":40,"end_line":1676,"end_character":52},"updated":"2025-08-20 06:05:58.000000000","message":"could you please use this mock and assert that this gets called.","commit_id":"85679d2f8be2ff3645e102355a67c2ff793b3469"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"d9559b93e7fd07e7023e058b9d5dcb1cdfcac20d","unresolved":true,"context_lines":[{"line_number":1673,"context_line":"    @mock.patch(\u0027nova.compute.utils.notify_about_instance_delete\u0027)"},{"line_number":1674,"context_line":"    @mock.patch(\u0027nova.objects.Instance.destroy\u0027)"},{"line_number":1675,"context_line":"    def test_delete_instance_from_cell0(self, destroy_mock, notify_mock,"},{"line_number":1676,"context_line":"                                        mock_bdm_get):"},{"line_number":1677,"context_line":"        \"\"\"Tests the case that the instance does not have a host and was not"},{"line_number":1678,"context_line":"        deleted while building, so conductor put it into cell0 so the API has"},{"line_number":1679,"context_line":"        to delete the instance from cell0."}],"source_content_type":"text/x-python","patch_set":4,"id":"554b791b_c36e2f23","line":1676,"range":{"start_line":1676,"start_character":40,"end_line":1676,"end_character":52},"in_reply_to":"245fe10e_f7b9df51","updated":"2025-08-20 06:53:46.000000000","message":"added :)","commit_id":"85679d2f8be2ff3645e102355a67c2ff793b3469"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"929453e4ec0669e1666122c0e0f3b0a328252765","unresolved":false,"context_lines":[{"line_number":1673,"context_line":"    @mock.patch(\u0027nova.compute.utils.notify_about_instance_delete\u0027)"},{"line_number":1674,"context_line":"    @mock.patch(\u0027nova.objects.Instance.destroy\u0027)"},{"line_number":1675,"context_line":"    def test_delete_instance_from_cell0(self, destroy_mock, notify_mock,"},{"line_number":1676,"context_line":"                                        mock_bdm_get):"},{"line_number":1677,"context_line":"        \"\"\"Tests the case that the instance does not have a host and was not"},{"line_number":1678,"context_line":"        deleted while building, so conductor put it into cell0 so the API has"},{"line_number":1679,"context_line":"        to delete the instance from cell0."}],"source_content_type":"text/x-python","patch_set":4,"id":"4e8c971d_ab40eb31","line":1676,"range":{"start_line":1676,"start_character":40,"end_line":1676,"end_character":52},"in_reply_to":"554b791b_c36e2f23","updated":"2025-08-21 06:25:30.000000000","message":"Done","commit_id":"85679d2f8be2ff3645e102355a67c2ff793b3469"}]}
