)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"357acfcb7bee9f0c4395b11f59faf04dcf3eb95d","unresolved":true,"context_lines":[{"line_number":36,"context_line":"     channel.close() because channel.is_closing\u003dTrue causes"},{"line_number":37,"context_line":"     dispatch_method() to drop all non-Close/CloseOk frames."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"This was discovered during Cinder graceful shutdown testing where an"},{"line_number":40,"context_line":"RPC cast (create_volume) was lost during a rolling update simulation."},{"line_number":41,"context_line":"The message was sent to the backend-specific topic queue while both"},{"line_number":42,"context_line":"old and new services overlapped. Neither service processed it, leaving"},{"line_number":43,"context_line":"the volume stuck in \u0027creating\u0027 status indefinitely."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Fix: Call consumer.cancel(tag) for each registered consumer in"},{"line_number":46,"context_line":"stop_consuming(). This sends Basic.Cancel to the broker, which"},{"line_number":47,"context_line":"immediately stops message delivery and requeues any unacknowledged"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"6f58518d_7a1c9c56","line":44,"range":{"start_line":39,"start_character":0,"end_line":44,"end_character":0},"updated":"2026-06-25 21:37:19.000000000","message":"How does the consumer.cancel() helped here? I think Cinder scheduler always sends the volume creation request to a particular host (topic + host name), and other hosts (running cinder-volume service), even if they are listening to the same topic, cannot process it. So, whether consumer.cancel() is called during stop() or not, the volume creation request will timeout if the cinder-volume service on that host is not up within the RPC timeout. I mean old and new service does not server the same message of create_volume, create_volume request has to be made again if new service want to halde it.\n\nI am not against of calling canceling the consumer line during stop() but that will only help when messages are send to topic and not to particular host, means where there are multiple consumer presents and message can be avoided to send to shutting down consumer. For example, nova-conductor case where any of the nova-conductor worker can server the message from nova-compute. In that case, consumer.cancel() will really help to avoid the message timeout.\n\nThis is really good catch and fix but I would like to get clarification on cinder create_volume case. Accordingly you can add the info in commit message about it will fix the shared queue/multiple consumer case and not the single consumer case.","commit_id":"ef1ca0221078ec39d91115191bda70f7523bac9b"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"51e9358b490eb70227d9d4af31280613c278d939","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"7c596b94_e2715ae9","updated":"2026-04-25 05:02:39.000000000","message":"The logic makes sense to me","commit_id":"ef1ca0221078ec39d91115191bda70f7523bac9b"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"357acfcb7bee9f0c4395b11f59faf04dcf3eb95d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"4d32ae84_333d2f1c","updated":"2026-06-25 21:37:19.000000000","message":"this is really nice and deep fix. thanks for that. One comment in commit msg to get clarification of your use case. Mostly to clarify about what all cases it will solve and not the single consumer/cinder create volume case.","commit_id":"ef1ca0221078ec39d91115191bda70f7523bac9b"}]}
