)]}'
{"id":"openstack%2Fnova~1005727","triplet_id":"openstack%2Fnova~master~I07e404c59d035ed25ae5903a9fdd5a5f509b9c1a","project":"openstack/nova","branch":"master","attention_set":{"4393":{"account":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"last_update":"2026-09-17 10:38:43.000000000","reason":"Vote got outdated and was removed: Code-Review+2"},"9708":{"account":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"last_update":"2026-09-17 13:53:35.000000000","reason":"\u003cGERRIT_ACCOUNT_7166\u003e replied on the change","reason_account":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"}},"37309":{"account":{"_account_id":37309,"name":"Bryan Fraschetti","display_name":"Bryan Fraschetti","email":"bryan.fraschetti@canonical.com","username":"bryanfraschetti"},"last_update":"2026-09-17 13:53:35.000000000","reason":"\u003cGERRIT_ACCOUNT_7166\u003e replied on the change","reason_account":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"}}},"removed_from_attention_set":{"7166":{"account":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"last_update":"2026-09-17 13:53:35.000000000","reason":"\u003cGERRIT_ACCOUNT_7166\u003e replied on the change","reason_account":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"}}},"hashtags":[],"change_id":"I07e404c59d035ed25ae5903a9fdd5a5f509b9c1a","subject":"Guard against deleting a concurrent request\u0027s BDM on timeout","status":"NEW","created":"2026-09-15 13:43:08.000000000","updated":"2026-09-17 13:53:35.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":9,"unresolved_comment_count":1,"has_review_started":true,"meta_rev_id":"6632b43e8c602a700754406cb5bfa45818a47eeb","_number":1005727,"virtual_id_number":1005727,"owner":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},{"tag":"autogenerated:zuul:check","value":-1,"date":"2026-09-17 12:48:05.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":-1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"permitted_voting_range":{"min":0,"max":2},"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},{"value":0,"permitted_voting_range":{"min":0,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{" 0":"Default Priority","+1":"Contributor Review Promise","+2":"Core Review Promise"},"default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"CC":[{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},{"_account_id":34420,"name":"openstack lightbits","display_name":"Lightbits CI","email":"openstack@lightbitslabs.com","username":"openstack_lightbits"},{"_account_id":37309,"name":"Bryan Fraschetti","display_name":"Bryan Fraschetti","email":"bryan.fraschetti@canonical.com","username":"bryanfraschetti"}],"REVIEWER":[{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-09-15 14:11:20.000000000","updated_by":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"reviewer":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"state":"CC"},{"updated":"2026-09-15 14:19:12.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"CC"},{"updated":"2026-09-15 14:26:40.000000000","updated_by":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"reviewer":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"state":"CC"},{"updated":"2026-09-15 15:56:26.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2026-09-15 15:56:37.000000000","updated_by":{"_account_id":34420,"name":"openstack lightbits","display_name":"Lightbits CI","email":"openstack@lightbitslabs.com","username":"openstack_lightbits"},"reviewer":{"_account_id":34420,"name":"openstack lightbits","display_name":"Lightbits CI","email":"openstack@lightbitslabs.com","username":"openstack_lightbits"},"state":"CC"},{"updated":"2026-09-15 17:04:27.000000000","updated_by":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"reviewer":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"state":"REVIEWER"},{"updated":"2026-09-15 20:44:11.000000000","updated_by":{"_account_id":37309,"name":"Bryan Fraschetti","display_name":"Bryan Fraschetti","email":"bryan.fraschetti@canonical.com","username":"bryanfraschetti"},"reviewer":{"_account_id":37309,"name":"Bryan Fraschetti","display_name":"Bryan Fraschetti","email":"bryan.fraschetti@canonical.com","username":"bryanfraschetti"},"state":"CC"},{"updated":"2026-09-17 09:13:29.000000000","updated_by":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"reviewer":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"state":"CC"}],"messages":[{"id":"852859017baf1bfae999c23f947864233fd2069e","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"date":"2026-09-15 13:43:08.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"71cfccf072b482c8989179220c1ad81d1078cb4e","author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"date":"2026-09-15 14:11:20.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"5e0a69829b561a13764bdae4469dd3d9c31a2e71","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-15 14:19:12.000000000","message":"Patch Set 1:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/8007929f240c475abd6fd4b43d971fa0\n\n- openstack-tox-py311-arm64 https://zuul.opendev.org/t/openstack/build/3ec07f18e8da4bb2b0f0be07f1fb9a4d : SUCCESS in 13m 15s (non-voting)\n- openstack-tox-py313-arm64 https://zuul.opendev.org/t/openstack/build/35840c3e26d44a29b26c4fe4cc5e06b7 : SUCCESS in 12m 47s (non-voting)\n- openstack-tox-py314-arm64 https://zuul.opendev.org/t/openstack/build/e631cae851b74959876ebda1472331ae : SUCCESS in 31m 18s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"c997fb18ac85dc2cc948c7950567a5c3204f5565","author":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"date":"2026-09-15 14:26:40.000000000","message":"Patch Set 1:\n\nBuild Failed \n\n* quobyteci:  nova_quobyteci : FAILURE, logs at: https://oscilogs.quobyte.com/logs/I07e404c59d035ed25ae5903a9fdd5a5f509b9c1a .","accounts_in_message":[],"_revision_number":1},{"id":"75aede873897f0b1474dfb84a6ee09b6c6364b1f","author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"date":"2026-09-15 15:00:52.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"308f96d429fd237a30afe4fbba43916bdbd3aa3f","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-15 15:56:26.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/4f4eb696b927484da2885d3664774a07\n\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/35002e43b2034a679c1eebe00b1e3411 : SUCCESS in 32m 28s\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/5ac57ec7b7454055a4e9065934305a9a : SUCCESS in 54m 55s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/2636e9d8530c433aa1a7ba816802e209 : SUCCESS in 30m 01s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/020d0e51ce174acea92e620b164f9b9c : SUCCESS in 1h 23m 17s (non-voting)\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/4b53c90ebd394e18a3801ce6d61664d5 : SUCCESS in 7m 51s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/486d78ba72d1415d8ce9ec4f9bad5868 : SUCCESS in 14m 12s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/a2625b24be0a489ab05a2d8fea0ef084 : SUCCESS in 10m 33s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/5f268899ab9643b1a897d73f32dd099c : SUCCESS in 12m 57s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/a7ea9e6d2e92457cafb574a9676f1aa0 : SUCCESS in 7m 41s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/726fe1fad511450eb40d0031a6d463b8 : SUCCESS in 9m 54s\n- ironic-tempest-bios-ipmi-autodetect https://zuul.opendev.org/t/openstack/build/775c6eb6172446439404b53b6a77e74c : SUCCESS in 30m 49s (non-voting)\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/a92d7977d4d54c27b25fe6384de8c1bf : SUCCESS in 46m 15s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/689497db243f4130b2867600b3f40ac5 : SUCCESS in 50m 18s\n- nova-whitebox https://zuul.opendev.org/t/openstack/build/b8c0515ff76b4ad3bdd5f395e6081dc7 : SUCCESS in 37m 18s\n- nova-graceful-shutdown https://zuul.opendev.org/t/openstack/build/b5023a51aec0447a9348a1c1cac2f9d8 : SUCCESS in 1h 00m 24s\n- nova-live-migration-ceph https://zuul.opendev.org/t/openstack/build/102de23a493e4dd995ab23ce8b2661a7 : SUCCESS in 29m 26s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/3524e98ac1c441df87ccbb646c95c8fa : SUCCESS in 1h 01m 14s\n- nova-next https://zuul.opendev.org/t/openstack/build/d8020dc0c91a4a2c940a292e1f9ab7be : SUCCESS in 1h 53m 48s\n- nova-alt-configurations https://zuul.opendev.org/t/openstack/build/cd2ea8fb11b046579be6f00bef49b634 : SUCCESS in 46m 44s\n- nova-tox-validate-backport https://zuul.opendev.org/t/openstack/build/2474faac261a48208380c84f99907607 : SUCCESS in 5m 18s (non-voting)\n- nova-tox-functional-py311 https://zuul.opendev.org/t/openstack/build/ff807beaef754f0992a62c275f42516b : SUCCESS in 27m 14s\n- nova-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/1d55b75e47ef4e1fa6ba7745796bdaa6 : SUCCESS in 27m 22s\n- nova-tox-functional-py313-threading https://zuul.opendev.org/t/openstack/build/6a7724f79d164f7faf5f3f50097ffa27 : SUCCESS in 27m 13s\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/e72cea6b17df438987af4a48c51c5320 : SUCCESS in 57m 15s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/e0fb253f15ea4751b9a4ff1f87ab62f6 : SUCCESS in 55m 17s\n- cyborg-tempest-py3 https://zuul.opendev.org/t/openstack/build/16d79de4122f4e3ba71c52ff2e16da89 : SUCCESS in 53m 25s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/6417180dc41d48f3a9c9f5aa6f28e625 : SUCCESS in 22m 11s (non-voting)\n- nova-tox-py313-threading https://zuul.opendev.org/t/openstack/build/3c74dafcd7434eb490c1b621e755a5cc : SUCCESS in 13m 57s","accounts_in_message":[],"_revision_number":1},{"id":"6564e2253df4539594043be9dae65765c274d05f","tag":"autogenerated:jenkins-gerrit-trigger","author":{"_account_id":34420,"name":"openstack lightbits","display_name":"Lightbits CI","email":"openstack@lightbitslabs.com","username":"openstack_lightbits"},"date":"2026-09-15 16:06:32.000000000","message":"Patch Set 1:\n\nBuild succeeded. log path: ${LOG_PATH}\nLeave a comment with","accounts_in_message":[],"_revision_number":1},{"id":"8f8988999352b74719a54f145b0d1257b4420440","author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"date":"2026-09-15 17:04:27.000000000","message":"Patch Set 1: Code-Review+2\n\n(2 comments)","accounts_in_message":[],"_revision_number":1},{"id":"ccf38da266cbdff36bf56ebe34ae31527cf59569","author":{"_account_id":37309,"name":"Bryan Fraschetti","display_name":"Bryan Fraschetti","email":"bryan.fraschetti@canonical.com","username":"bryanfraschetti"},"date":"2026-09-15 20:44:11.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"ac66ffc892191bbcf796618e0e38b0d642bf62c2","author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"date":"2026-09-17 09:13:29.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"af18eb11fb495779d70f7b71acf65c6bc0fec299","author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"date":"2026-09-17 09:26:13.000000000","message":"Patch Set 1:\n\n(2 comments)","accounts_in_message":[],"_revision_number":1},{"id":"bcfcbed7930ccdbd180c302770e6a8e81926b8b3","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"date":"2026-09-17 10:38:43.000000000","message":"Uploaded patch set 2: Patch Set 1 was rebased. Commit message was updated.\n\nOutdated Votes:\n* Code-Review+2 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":2},{"id":"a1d0a5ad7ded03b060f50dbce5b8353954c6929d","author":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"date":"2026-09-17 11:32:59.000000000","message":"Patch Set 2:\n\nBuild Successful \n\n* quobyteci:  nova_quobyteci : SUCCESS, logs at: https://oscilogs.quobyte.com/logs/I07e404c59d035ed25ae5903a9fdd5a5f509b9c1a .","accounts_in_message":[],"_revision_number":2},{"id":"02a4b850192b354c5407a76145d09fd36645f086","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-17 11:37:37.000000000","message":"Patch Set 2:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/3c271f7b4cd345b6a0ed8eaabeee6a7a\n\n- openstack-tox-py311-arm64 https://zuul.opendev.org/t/openstack/build/88ca492860f9433ba6c2c29f821dc666 : SUCCESS in 12m 06s (non-voting)\n- openstack-tox-py313-arm64 https://zuul.opendev.org/t/openstack/build/02fa2babfe1b45c889f413ea9b6f51fa : SUCCESS in 12m 41s (non-voting)\n- openstack-tox-py314-arm64 https://zuul.opendev.org/t/openstack/build/0bc9b3bdffee42269e2cdce697b7d37e : SUCCESS in 18m 31s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"a85078139c690655aaa10a5806f577b6cc049e31","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-17 12:48:05.000000000","message":"Patch Set 2: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/9cf62e204e90426fa796df86e0cf09b1\n\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/396100c0485b4711a6e11a2dc8fd0dea : SUCCESS in 1h 08m 12s\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/1547954f13fa4764a17252d6636b027f : SUCCESS in 1h 34m 02s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/516757a9b2444854a580c451dd2a5206 : SUCCESS in 1h 00m 08s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/3ef4ed35a68c472da667255f4a82b648 : SUCCESS in 1h 19m 46s (non-voting)\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/41c6646e93e54da88c4a27b20824e2c7 : SUCCESS in 8m 00s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/67716403cd1047c5b26973706dfc08cd : SUCCESS in 16m 56s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/c006ed5f259a4d0588b776872828af2d : SUCCESS in 13m 59s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/f4a6cdab03cb4dbab99c36e02a222d02 : SUCCESS in 17m 08s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/aafcb5c42252477aaa8d976ad3938b97 : SUCCESS in 11m 56s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/08d8d9bbaabb4b5bbf281f69e3ca0d9a : SUCCESS in 8m 40s\n- ironic-tempest-bios-ipmi-autodetect https://zuul.opendev.org/t/openstack/build/7c4d62bbd342454c8a35a2605e5daf18 : SUCCESS in 1h 10m 52s (non-voting)\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/9ed6900da26e47b9859d9987c24cbfbd : SUCCESS in 1h 43m 49s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/3a42342dba874c6b97b80ef584cba5ab : SUCCESS in 38m 56s\n- nova-whitebox https://zuul.opendev.org/t/openstack/build/66003d8442c7483aab84b8a8f01ad68d : SUCCESS in 37m 20s\n- nova-graceful-shutdown https://zuul.opendev.org/t/openstack/build/2b2ed849ae9a4804ae308206622927f6 : SUCCESS in 59m 21s\n- nova-live-migration-ceph https://zuul.opendev.org/t/openstack/build/7f2fc24fd04f43e5850fdbe64dfa59a6 : SUCCESS in 49m 33s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/dd3ebe2a8d374403babcda11c66a4d14 : SUCCESS in 1h 41m 59s\n- nova-next https://zuul.opendev.org/t/openstack/build/b387c0160f734549ba395c621ee97b29 : SUCCESS in 2h 02m 46s\n- nova-alt-configurations https://zuul.opendev.org/t/openstack/build/9c1635752d7b40978e191a8944484bb2 : SUCCESS in 51m 25s\n- nova-tox-validate-backport https://zuul.opendev.org/t/openstack/build/b5079e121f0643028697bd46d38c21bb : SUCCESS in 5m 00s (non-voting)\n- nova-tox-functional-py311 https://zuul.opendev.org/t/openstack/build/e1767af416ae41cfa8527c61ecbc1242 : SUCCESS in 27m 06s\n- nova-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/053d2c4b1df841638bf5506b7c01cd86 : SUCCESS in 26m 48s\n- nova-tox-functional-py313-threading https://zuul.opendev.org/t/openstack/build/c5e5e75ba3ba4ea1bbc056c4f9299476 : FAILURE in 34m 50s\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/4d6acf22b99440bb984e393897d9d936 : SUCCESS in 1h 40m 09s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/0b1c749e5e2a463dbfd7547bc7a02923 : SUCCESS in 55m 40s\n- cyborg-tempest-py3 https://zuul.opendev.org/t/openstack/build/15d893258ebb44c78f6e490937220619 : SUCCESS in 45m 10s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/04e0729ec84e499a8824f6806f6032df : SUCCESS in 39m 27s (non-voting)\n- nova-tox-py313-threading https://zuul.opendev.org/t/openstack/build/ca9f039c8d9a403abe41ef4ccb51cb94 : SUCCESS in 13m 28s","accounts_in_message":[],"_revision_number":2},{"id":"6632b43e8c602a700754406cb5bfa45818a47eeb","author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"date":"2026-09-17 13:53:35.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"cabe711e58bcb9e314098361f61dfb0215436e6c","revisions":{"0a4edb3eab27b6f920276af3242fc38ee912028f":{"kind":"REWORK","_number":1,"created":"2026-09-15 13:43:08.000000000","uploader":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"ref":"refs/changes/27/1005727/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/27/1005727/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/27/1005727/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/27/1005727/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/27/1005727/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/27/1005727/1"}}},"commit":{"parents":[{"commit":"7582db6d65b9880e1ef7d906ddad1d7c95bb53a5","subject":"Merge \"Parallelize per-node resource updates\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/7582db6d65b9880e1ef7d906ddad1d7c95bb53a5"}]}],"author":{"name":"Sylvain Bauza","email":"sbauza@redhat.com","date":"2026-09-15 13:38:54.000000000","tz":120},"committer":{"name":"Sylvain Bauza","email":"sbauza@redhat.com","date":"2026-09-15 13:42:04.000000000","tz":120},"subject":"Guard against deleting a concurrent request\u0027s BDM on timeout","message":"Guard against deleting a concurrent request\u0027s BDM on timeout\n\nWhen reserve_block_device_name times out with a MessagingTimeout in\nthe conductor\u0027s attach_volume flow, the cleanup code uses\nget_by_volume_and_instance() to find and destroy the orphaned BDM.\nThis lookup is imprecise: it matches any BDM for the given volume\nand instance pair, not specifically the one from the timed-out\nrequest.\n\nWhen a concurrent request (e.g. a K8s CSI retry) has already created\na BDM and progressed to reserving a Cinder attachment, the cleanup\ncan delete that BDM instead. This leaves Cinder with an active\nattachment and libvirt with a configured block device while Nova\u0027s\ndatabase has no corresponding BDM record. The instance is then stuck\nin an inconsistent state: detach attempts return 404 because Nova\ndoes not know about the attachment, and re-attach attempts fail\nbecause Cinder reports the volume as in-use.\n\nBefore destroying the BDM, check whether attachment_id is set. If\nit is, the BDM has already been reserved in Cinder by a different\nrequest and must not be deleted. Log a warning and skip the cleanup\ninstead.\n\nChange-Id: I07e404c59d035ed25ae5903a9fdd5a5f509b9c1a\nRelated-Bug: #2141355\nAssisted-By: Cursor claude-4.6-opus\nSigned-off-by: Sylvain Bauza \u003csbauza@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/0a4edb3eab27b6f920276af3242fc38ee912028f"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/0a4edb3eab27b6f920276af3242fc38ee912028f"}]},"branch":"refs/heads/master"},"cabe711e58bcb9e314098361f61dfb0215436e6c":{"kind":"TRIVIAL_REBASE_WITH_MESSAGE_UPDATE","_number":2,"created":"2026-09-17 10:38:43.000000000","uploader":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"ref":"refs/changes/27/1005727/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/27/1005727/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/27/1005727/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/27/1005727/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/27/1005727/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/27/1005727/2"}}},"commit":{"parents":[{"commit":"94de0576ca02e0668233bedfbe7e18b87316c708","subject":"Update master for stable/2026.2","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/94de0576ca02e0668233bedfbe7e18b87316c708"}]}],"author":{"name":"Sylvain Bauza","email":"sbauza@redhat.com","date":"2026-09-15 13:38:54.000000000","tz":120},"committer":{"name":"Sylvain Bauza","email":"sbauza@redhat.com","date":"2026-09-17 10:29:41.000000000","tz":120},"subject":"Guard against deleting a concurrent request\u0027s BDM on timeout","message":"Guard against deleting a concurrent request\u0027s BDM on timeout\n\nThe conductor\u0027s attach_volume flow calls reserve_block_device_name\nas a synchronous RPC to compute. If the call times out with a\nMessagingTimeout, the cleanup code uses get_by_volume_and_instance()\nto find and destroy the BDM. This lookup is imprecise: it matches\nany BDM for the given volume and instance pair, not specifically the\none from the timed-out request.\n\nA concurrent request (e.g. a K8s CSI retry) can create its own BDM\nfor the same volume while the first request is stalled. This is\npossible because no task_state is set on the instance during volume\nattach, so nothing prevents a second API request from entering the\nconductor\u0027s attach_volume concurrently. On the compute side,\nreserve_block_device_name takes an instance lock and rejects\nduplicates, so only request 2 creates a BDM — request 1 is never\nprocessed.\n\nWhen request 1 times out, its cleanup finds and deletes request 2\u0027s\nBDM. If request 2 has already reserved the volume in Cinder\n(attachment_id is set) and the attach_volume cast was sent, this\nleaves a three-way inconsistency: Cinder shows the volume in-use,\nlibvirt has the block device, but Nova has no BDM.\n\nBefore destroying the BDM, check whether attachment_id is set. If\nit is, the BDM has been reserved in Cinder by a different request\nand must not be deleted.\n\nThis does not fully close the race: if request 2 has created the\nBDM but has not yet called Cinder (attachment_id is still None),\nthe cleanup would still delete it. However, in that case Cinder was\nnever contacted and the attach_volume cast was never sent, so the\nresulting state (dangling Cinder reservation at most, no libvirt\ndevice) is recoverable. The remaining window is also narrow in\npractice: it is the time between _create_volume_bdm() returning and\nthe Cinder attachment_create call completing, while the timeout\nfires after rpc_response_timeout (60s+).\n\nThe full fix for preventing concurrent requests would require\nsetting a task_state on the instance during attach, which has\nupgrade implications and is left for a follow-up.\n\nChange-Id: I07e404c59d035ed25ae5903a9fdd5a5f509b9c1a\nCloses-Bug: #2167569\nRelated-Bug: #2141355\nAssisted-By: Cursor claude-4.6-opus\nSigned-off-by: Sylvain Bauza \u003csbauza@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/cabe711e58bcb9e314098361f61dfb0215436e6c"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/cabe711e58bcb9e314098361f61dfb0215436e6c"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY"},{"label":"Workflow","status":"MAY"},{"label":"Review-Priority","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Review-Priority","description":"Review Priority","status":"NOT_APPLICABLE","is_legacy":false,"applicability_expression_result":{"fulfilled":false,"status":"FAIL"},"submittability_expression_result":{"expression":"is:true","fulfilled":true,"status":"NOT_EVALUATED","passing_atoms":[],"failing_atoms":[],"atom_explanations":{}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
