)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":26250,"name":"Johannes Kulik","email":"johannes.kulik@sap.com","username":"jkulik"},"change_message_id":"d147717d57d6b3c384f133dba6b27333261ed631","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"c61d8b92_91784579","updated":"2026-02-05 08:30:07.000000000","message":"I like the idea.\n\nPlease be aware that with https://review.opendev.org/c/openstack/nova/+/971068 on its way, the flow changes a little - most of the n-api part of the document will have to change to n-conductor.","commit_id":"fdcf9a4cb61be436d019dc0151a7cd93761b98de"},{"author":{"_account_id":26250,"name":"Johannes Kulik","email":"johannes.kulik@sap.com","username":"jkulik"},"change_message_id":"5f9db05096a07cc7c87c433775e91178b4a18257","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"ddb5b425_5927c658","in_reply_to":"c61d8b92_91784579","updated":"2026-03-10 07:58:33.000000000","message":"Done","commit_id":"fdcf9a4cb61be436d019dc0151a7cd93761b98de"}],"specs/2026.2/approved/orphan-bdm-cleanup.rst":[{"author":{"_account_id":26250,"name":"Johannes Kulik","email":"johannes.kulik@sap.com","username":"jkulik"},"change_message_id":"d147717d57d6b3c384f133dba6b27333261ed631","unresolved":true,"context_lines":[{"line_number":14,"context_line":"Mappings (BDMs). When nova-compute is temporarily unavailable during a volume"},{"line_number":15,"context_line":"attach request, the RPC message remains queued. After the API times out and"},{"line_number":16,"context_line":"cleanup runs, nova-compute may still process the queued message and create"},{"line_number":17,"context_line":"a BDM that will never have ``attach_volume`` called, leaving it orphaned."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Problem description"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"8cd1d885_836957bc","line":17,"updated":"2026-02-05 08:30:07.000000000","message":"I think we should mention that this orphan BDM can lead to future attachment calls getting rejected, because the volume is already attached to that instance as far as the API knows.","commit_id":"fdcf9a4cb61be436d019dc0151a7cd93761b98de"},{"author":{"_account_id":26250,"name":"Johannes Kulik","email":"johannes.kulik@sap.com","username":"jkulik"},"change_message_id":"5f9db05096a07cc7c87c433775e91178b4a18257","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Mappings (BDMs). When nova-compute is temporarily unavailable during a volume"},{"line_number":15,"context_line":"attach request, the RPC message remains queued. After the API times out and"},{"line_number":16,"context_line":"cleanup runs, nova-compute may still process the queued message and create"},{"line_number":17,"context_line":"a BDM that will never have ``attach_volume`` called, leaving it orphaned."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Problem description"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"d271d34d_3c289b73","line":17,"in_reply_to":"8cd1d885_836957bc","updated":"2026-03-10 07:58:33.000000000","message":"Done","commit_id":"fdcf9a4cb61be436d019dc0151a7cd93761b98de"},{"author":{"_account_id":26250,"name":"Johannes Kulik","email":"johannes.kulik@sap.com","username":"jkulik"},"change_message_id":"d147717d57d6b3c384f133dba6b27333261ed631","unresolved":true,"context_lines":[{"line_number":68,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Before processing ``reserve_block_device_name``, compute checks if the"},{"line_number":71,"context_line":"request is stale (older than ``rpc_response_timeout``) and rejects it::"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"   def reserve_block_device_name(self, context, instance, device, ...):"},{"line_number":74,"context_line":"       request_age \u003d timeutils.utcnow() - context.timestamp"}],"source_content_type":"text/x-rst","patch_set":1,"id":"f869e7c1_4dc4e23a","line":71,"updated":"2026-02-05 08:30:07.000000000","message":"`reserve_block_device_name()` uses `long_rpc_timeout`.","commit_id":"fdcf9a4cb61be436d019dc0151a7cd93761b98de"},{"author":{"_account_id":26250,"name":"Johannes Kulik","email":"johannes.kulik@sap.com","username":"jkulik"},"change_message_id":"5f9db05096a07cc7c87c433775e91178b4a18257","unresolved":false,"context_lines":[{"line_number":68,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Before processing ``reserve_block_device_name``, compute checks if the"},{"line_number":71,"context_line":"request is stale (older than ``rpc_response_timeout``) and rejects it::"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"   def reserve_block_device_name(self, context, instance, device, ...):"},{"line_number":74,"context_line":"       request_age \u003d timeutils.utcnow() - context.timestamp"}],"source_content_type":"text/x-rst","patch_set":1,"id":"52f261c0_a8c3a04c","line":71,"in_reply_to":"f869e7c1_4dc4e23a","updated":"2026-03-10 07:58:33.000000000","message":"Done","commit_id":"fdcf9a4cb61be436d019dc0151a7cd93761b98de"},{"author":{"_account_id":26250,"name":"Johannes Kulik","email":"johannes.kulik@sap.com","username":"jkulik"},"change_message_id":"d147717d57d6b3c384f133dba6b27333261ed631","unresolved":true,"context_lines":[{"line_number":103,"context_line":"**Manual cleanup**: Operators run scripts to delete orphan BDMs. This is"},{"line_number":104,"context_line":"the current workaround but requires intervention."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"**Extended RPC timeout**: Reduces the race window but does not eliminate"},{"line_number":107,"context_line":"it and degrades user experience."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"**Message TTL**: RabbitMQ message expiration could prevent late processing,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"517de360_36e788fd","line":106,"updated":"2026-02-05 08:30:07.000000000","message":"Since we already use `log_rpc_timeout`, this would mean we\u0027d have to add a new, even longer, timeout - or tell operators to extend the long_rpc_timeout even further.","commit_id":"fdcf9a4cb61be436d019dc0151a7cd93761b98de"},{"author":{"_account_id":26250,"name":"Johannes Kulik","email":"johannes.kulik@sap.com","username":"jkulik"},"change_message_id":"5f9db05096a07cc7c87c433775e91178b4a18257","unresolved":false,"context_lines":[{"line_number":103,"context_line":"**Manual cleanup**: Operators run scripts to delete orphan BDMs. This is"},{"line_number":104,"context_line":"the current workaround but requires intervention."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"**Extended RPC timeout**: Reduces the race window but does not eliminate"},{"line_number":107,"context_line":"it and degrades user experience."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"**Message TTL**: RabbitMQ message expiration could prevent late processing,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"497677b7_b5117168","line":106,"in_reply_to":"517de360_36e788fd","updated":"2026-03-10 07:58:33.000000000","message":"Done","commit_id":"fdcf9a4cb61be436d019dc0151a7cd93761b98de"},{"author":{"_account_id":26250,"name":"Johannes Kulik","email":"johannes.kulik@sap.com","username":"jkulik"},"change_message_id":"d147717d57d6b3c384f133dba6b27333261ed631","unresolved":true,"context_lines":[{"line_number":107,"context_line":"it and degrades user experience."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"**Message TTL**: RabbitMQ message expiration could prevent late processing,"},{"line_number":110,"context_line":"but affects other operations and requires broker configuration."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Data model impact"},{"line_number":113,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3be48e15_282b1fff","line":110,"updated":"2026-02-05 08:30:07.000000000","message":"I think this only helps if the message wasn\u0027t processed, yet. With there being a lock in the `reserve_block_device_name()` method, we might have already read the message from rabbitmq, but still haven\u0027t progressed far enough to actually create the BDM as we waited for the lock.\n\nBut I guess, this would not trigger an orphan BDM, because that creation fails after the lock is entered?","commit_id":"fdcf9a4cb61be436d019dc0151a7cd93761b98de"},{"author":{"_account_id":26250,"name":"Johannes Kulik","email":"johannes.kulik@sap.com","username":"jkulik"},"change_message_id":"5f9db05096a07cc7c87c433775e91178b4a18257","unresolved":false,"context_lines":[{"line_number":107,"context_line":"it and degrades user experience."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"**Message TTL**: RabbitMQ message expiration could prevent late processing,"},{"line_number":110,"context_line":"but affects other operations and requires broker configuration."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Data model impact"},{"line_number":113,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ffd9a447_8d1d10dd","line":110,"in_reply_to":"3be48e15_282b1fff","updated":"2026-03-10 07:58:33.000000000","message":"Done","commit_id":"fdcf9a4cb61be436d019dc0151a7cd93761b98de"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"1f2423ba7dc070dba180e9a11137e2dc8b3f489b","unresolved":true,"context_lines":[{"line_number":8,"context_line":"Handle Orphan BDMs from Late RPC Processing"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/orphan-bdm-cleanup"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"A race condition in the volume attach flow can lead to orphan Block Device"},{"line_number":14,"context_line":"Mappings (BDMs). When nova-compute is temporarily unavailable during a volume"}],"source_content_type":"text/x-rst","patch_set":2,"id":"a36ac61e_4aea3367","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":2},"updated":"2026-05-04 13:39:43.000000000","message":"Can you please fix the link of the blueprint or create it if not already done.","commit_id":"37b9179b0574115f7fd3c01a6bfcebf0744b976e"}]}
