)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"983d1c25a8e112fd3e9be73d9f3091c9682540a4","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Gorka Eguileor \u003cgeguileo@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-08-26 13:34:36 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix: Nova thinks deleted volume is attached"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are cases where a cinder volume no longer exists yet nova still"},{"line_number":10,"context_line":"thinks it is attached to an instance and we cannot detach it anymore."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"60d3825a_fb16a07d","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":43},"updated":"2021-09-13 10:40:42.000000000","message":"I think we can come up with something a little more descriptive of the actual issue here.\n\nAvoid race between attachment and volume deletion requests?","commit_id":"d3efdc7149def5a6c6d3847f0e576b8070b6d94e"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"3596a050566959cc9a0df190c4b6af8ab2535ad3","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Gorka Eguileor \u003cgeguileo@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-08-26 13:34:36 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix: Nova thinks deleted volume is attached"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are cases where a cinder volume no longer exists yet nova still"},{"line_number":10,"context_line":"thinks it is attached to an instance and we cannot detach it anymore."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"a018e710_3e5367c5","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":43},"in_reply_to":"60d3825a_fb16a07d","updated":"2021-09-15 14:36:34.000000000","message":"Definitely sounds a lot better.","commit_id":"d3efdc7149def5a6c6d3847f0e576b8070b6d94e"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"983d1c25a8e112fd3e9be73d9f3091c9682540a4","unresolved":true,"context_lines":[{"line_number":9,"context_line":"There are cases where a cinder volume no longer exists yet nova still"},{"line_number":10,"context_line":"thinks it is attached to an instance and we cannot detach it anymore."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This has been observed when running cinder-csi, where it makes a volume"},{"line_number":13,"context_line":"delete request as soon as the volume status says its available."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This is a cinder race condition, and like most race conditions is not"},{"line_number":16,"context_line":"simple to explain."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"0f9af277_be5e94c2","line":13,"range":{"start_line":12,"start_character":0,"end_line":13,"end_character":63},"updated":"2021-09-13 10:40:42.000000000","message":"As I\u0027ve said elsewhere this behaviour is wrong and needs to be addressed in cinder-csi, they need to poll n-api os-volume_attachments to determine when a volume is detached, not the state in cinder.","commit_id":"d3efdc7149def5a6c6d3847f0e576b8070b6d94e"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"9f8babd6308fc956b44bbd66039ba67f7fe95954","unresolved":true,"context_lines":[{"line_number":9,"context_line":"There are cases where a cinder volume no longer exists yet nova still"},{"line_number":10,"context_line":"thinks it is attached to an instance and we cannot detach it anymore."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This has been observed when running cinder-csi, where it makes a volume"},{"line_number":13,"context_line":"delete request as soon as the volume status says its available."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This is a cinder race condition, and like most race conditions is not"},{"line_number":16,"context_line":"simple to explain."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"a18f659d_f59294c9","line":13,"range":{"start_line":12,"start_character":0,"end_line":13,"end_character":63},"in_reply_to":"0f9af277_be5e94c2","updated":"2021-09-13 10:54:38.000000000","message":"https://docs.openstack.org/api-ref/compute/?expanded\u003ddetach-a-volume-from-an-instance-detail#detach-a-volume-from-an-instance\n\n\"This is an asynchronous API, callers should poll the list of volume attachments provided by GET /servers/{server_id}/os-volume_attachments to determine when the detachment of the volume has completed successfully.\"\n\nFWIW I added the above to the api-ref a while ago for Nova.","commit_id":"d3efdc7149def5a6c6d3847f0e576b8070b6d94e"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"3596a050566959cc9a0df190c4b6af8ab2535ad3","unresolved":true,"context_lines":[{"line_number":9,"context_line":"There are cases where a cinder volume no longer exists yet nova still"},{"line_number":10,"context_line":"thinks it is attached to an instance and we cannot detach it anymore."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This has been observed when running cinder-csi, where it makes a volume"},{"line_number":13,"context_line":"delete request as soon as the volume status says its available."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This is a cinder race condition, and like most race conditions is not"},{"line_number":16,"context_line":"simple to explain."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"70a9b851_4d091b9d","line":13,"range":{"start_line":12,"start_character":0,"end_line":13,"end_character":63},"in_reply_to":"a18f659d_f59294c9","updated":"2021-09-15 14:36:34.000000000","message":"I disagree, Nova and Cinder should be robust enough to support getting reasonable requests.  In this case requesting the deletion of a volume in \"available\" state is 100% reasonable.\n\nIn this case this is a bug in Cinder, because we are setting a final state on the volume service before we have actually finished the operation and then try to set it again on the api service, which is wrong and inconsistent with our other operations.","commit_id":"d3efdc7149def5a6c6d3847f0e576b8070b6d94e"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"983d1c25a8e112fd3e9be73d9f3091c9682540a4","unresolved":true,"context_lines":[{"line_number":30,"context_line":"  both on the cinder-volume and the cinder-api services on the"},{"line_number":31,"context_line":"  attachment delete operation."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"The actual set of events that leads to the issue reported in this BZ are:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"[Cinder-CSI]"},{"line_number":36,"context_line":"- Requests Nova to detach volume (Request R1)"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"a9784e56_7c7969ff","line":33,"range":{"start_line":33,"start_character":66,"end_line":33,"end_character":68},"updated":"2021-09-13 10:40:42.000000000","message":"nit - bug","commit_id":"d3efdc7149def5a6c6d3847f0e576b8070b6d94e"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"3596a050566959cc9a0df190c4b6af8ab2535ad3","unresolved":true,"context_lines":[{"line_number":30,"context_line":"  both on the cinder-volume and the cinder-api services on the"},{"line_number":31,"context_line":"  attachment delete operation."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"The actual set of events that leads to the issue reported in this BZ are:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"[Cinder-CSI]"},{"line_number":36,"context_line":"- Requests Nova to detach volume (Request R1)"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"27712c65_83fb2da5","line":33,"range":{"start_line":33,"start_character":66,"end_line":33,"end_character":68},"in_reply_to":"a9784e56_7c7969ff","updated":"2021-09-15 14:36:34.000000000","message":"thanks  :-)","commit_id":"d3efdc7149def5a6c6d3847f0e576b8070b6d94e"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"c0b11f17cca8843672624a0eecd0ea1e838fb390","unresolved":true,"context_lines":[{"line_number":46,"context_line":"[Cinder-Volume]"},{"line_number":47,"context_line":"- R1: Ask the driver to terminate the connection"},{"line_number":48,"context_line":"- R1: The driver asks the backend to unmap and unexport the volume"},{"line_number":49,"context_line":"- R1: The status of the volume is changed in the DB to \"available\""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"[Cinder-CSI]"},{"line_number":52,"context_line":"- Asks Cinder to delete the volume (Request R2)"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ee9e6e04_3d0776ef","line":49,"range":{"start_line":49,"start_character":0,"end_line":49,"end_character":66},"updated":"2021-09-13 19:59:52.000000000","message":"I\u0027ve gone over the cinder-csi code and AFAICT the trigger isn\u0027t the state but the instance being listed as in attachments [1][2] of the volume.\n\nI\u0027ve raised the following issue in cinder-csi for this:\n\nhttps://github.com/kubernetes/cloud-provider-openstack/issues/1645\n\n[1] https://docs.openstack.org/api-ref/block-storage/v3/index.html?expanded\u003dshow-a-volume-s-details-detail#show-a-volume-s-details\n[2] https://github.com/kubernetes/cloud-provider-openstack/blob/61f2129345c6ab854ec464bc85e0b558f011b08e/pkg/csi/cinder/openstack/openstack_volumes.go#L370-L381","commit_id":"d3efdc7149def5a6c6d3847f0e576b8070b6d94e"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"3596a050566959cc9a0df190c4b6af8ab2535ad3","unresolved":true,"context_lines":[{"line_number":46,"context_line":"[Cinder-Volume]"},{"line_number":47,"context_line":"- R1: Ask the driver to terminate the connection"},{"line_number":48,"context_line":"- R1: The driver asks the backend to unmap and unexport the volume"},{"line_number":49,"context_line":"- R1: The status of the volume is changed in the DB to \"available\""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"[Cinder-CSI]"},{"line_number":52,"context_line":"- Asks Cinder to delete the volume (Request R2)"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"82625bc9_7d3fd0d9","line":49,"range":{"start_line":49,"start_character":0,"end_line":49,"end_character":66},"in_reply_to":"ee9e6e04_3d0776ef","updated":"2021-09-15 14:36:34.000000000","message":"With the current code the status becomes available automatically upon deletion of the last attachment, so these 2 are synonymous when doing a detach.\n\nIn any case, it\u0027s definitely a good idea to make it explicit in the commit message that the check from CSI is on the attachments.","commit_id":"d3efdc7149def5a6c6d3847f0e576b8070b6d94e"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"983d1c25a8e112fd3e9be73d9f3091c9682540a4","unresolved":true,"context_lines":[{"line_number":48,"context_line":"- R1: The driver asks the backend to unmap and unexport the volume"},{"line_number":49,"context_line":"- R1: The status of the volume is changed in the DB to \"available\""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"[Cinder-CSI]"},{"line_number":52,"context_line":"- Asks Cinder to delete the volume (Request R2)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"[Cinder-API]"},{"line_number":55,"context_line":"- R2: Check that the volume\u0027s status is valid. It\u0027s available so it can"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"0ce92e59_40f30010","line":52,"range":{"start_line":51,"start_character":0,"end_line":52,"end_character":47},"updated":"2021-09-13 10:40:42.000000000","message":"This is a bug in cinder-csi","commit_id":"d3efdc7149def5a6c6d3847f0e576b8070b6d94e"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"3596a050566959cc9a0df190c4b6af8ab2535ad3","unresolved":true,"context_lines":[{"line_number":48,"context_line":"- R1: The driver asks the backend to unmap and unexport the volume"},{"line_number":49,"context_line":"- R1: The status of the volume is changed in the DB to \"available\""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"[Cinder-CSI]"},{"line_number":52,"context_line":"- Asks Cinder to delete the volume (Request R2)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"[Cinder-API]"},{"line_number":55,"context_line":"- R2: Check that the volume\u0027s status is valid. It\u0027s available so it can"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7fd3a939_d31707e2","line":52,"range":{"start_line":51,"start_character":0,"end_line":52,"end_character":47},"in_reply_to":"0ce92e59_40f30010","updated":"2021-09-15 14:36:34.000000000","message":"I don\u0027t agree, if a volume is available (which is when we have 0 attachments) we should be able to safely delete it.","commit_id":"d3efdc7149def5a6c6d3847f0e576b8070b6d94e"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"983d1c25a8e112fd3e9be73d9f3091c9682540a4","unresolved":true,"context_lines":[{"line_number":56,"context_line":"  be deleted."},{"line_number":57,"context_line":"- R2: Tell cinder-volume to delete the volume and return immediately."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"[Cinder-Volume]"},{"line_number":60,"context_line":"- R2: Volume is deleted and DB entry is deleted"},{"line_number":61,"context_line":"- R1: Finish the termination of the connection"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"[Cinder-API]"},{"line_number":64,"context_line":"- R1: Now that cinder-volume has finished the termination the code"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"cd3361a8_2d800c99","line":61,"range":{"start_line":59,"start_character":0,"end_line":61,"end_character":46},"updated":"2021-09-13 10:40:42.000000000","message":"Locking by volume UUID would at least allow R1 to finish before it started on R2 here.","commit_id":"d3efdc7149def5a6c6d3847f0e576b8070b6d94e"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"3596a050566959cc9a0df190c4b6af8ab2535ad3","unresolved":true,"context_lines":[{"line_number":56,"context_line":"  be deleted."},{"line_number":57,"context_line":"- R2: Tell cinder-volume to delete the volume and return immediately."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"[Cinder-Volume]"},{"line_number":60,"context_line":"- R2: Volume is deleted and DB entry is deleted"},{"line_number":61,"context_line":"- R1: Finish the termination of the connection"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"[Cinder-API]"},{"line_number":64,"context_line":"- R1: Now that cinder-volume has finished the termination the code"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"07adc5d2_82b7793f","line":61,"range":{"start_line":59,"start_character":0,"end_line":61,"end_character":46},"in_reply_to":"cd3361a8_2d800c99","updated":"2021-09-15 14:36:34.000000000","message":"This would force the usage of a DLM to fix the issue, which is not ideal, since A/P deployments don\u0027t have it.","commit_id":"d3efdc7149def5a6c6d3847f0e576b8070b6d94e"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"983d1c25a8e112fd3e9be73d9f3091c9682540a4","unresolved":true,"context_lines":[{"line_number":68,"context_line":"  from the DB"},{"line_number":69,"context_line":"- R1: VolumeNotFound is converted to HTTP 404 status code which is"},{"line_number":70,"context_line":"  returned to Nova"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"[Nova]"},{"line_number":73,"context_line":"- R1: Cinder responds with 404 on the attachment delete request"},{"line_number":74,"context_line":"- R1: Nova leaves the volume as attached, since the attachment delete"},{"line_number":75,"context_line":"  failed"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"At this point the Cinder and Nova DBs are out of sync, because Nova"},{"line_number":78,"context_line":"thinks that the attachment is connected and Cinder has detached the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"58501b0c_8893b66a","line":75,"range":{"start_line":71,"start_character":0,"end_line":75,"end_character":8},"updated":"2021-09-13 10:40:42.000000000","message":"I don\u0027t mind covering this corner case in Nova tbh but ultimately this entire usecase is still borked IMHO.","commit_id":"d3efdc7149def5a6c6d3847f0e576b8070b6d94e"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"3596a050566959cc9a0df190c4b6af8ab2535ad3","unresolved":true,"context_lines":[{"line_number":68,"context_line":"  from the DB"},{"line_number":69,"context_line":"- R1: VolumeNotFound is converted to HTTP 404 status code which is"},{"line_number":70,"context_line":"  returned to Nova"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"[Nova]"},{"line_number":73,"context_line":"- R1: Cinder responds with 404 on the attachment delete request"},{"line_number":74,"context_line":"- R1: Nova leaves the volume as attached, since the attachment delete"},{"line_number":75,"context_line":"  failed"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"At this point the Cinder and Nova DBs are out of sync, because Nova"},{"line_number":78,"context_line":"thinks that the attachment is connected and Cinder has detached the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"caa2a6e5_ecd3c66a","line":75,"range":{"start_line":71,"start_character":0,"end_line":75,"end_character":8},"in_reply_to":"58501b0c_8893b66a","updated":"2021-09-15 14:36:34.000000000","message":"What I\u0027m focusing here is the fact that it should be possible to delete a volume in available state, regardless of what operation is ongoing with Nova.\n\nI don\u0027t know if it\u0027s worth doing that in Nova, this is 100% a bug in Cinder, and a potential improvement in Cinder-CSI.","commit_id":"d3efdc7149def5a6c6d3847f0e576b8070b6d94e"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"bb6e3e763dd7f1d4d6064cb5d9c5e1a83f65eaf4","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix: Race between attachment and volume deletion"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are cases where a cinder volume no longer exists yet nova still"},{"line_number":10,"context_line":"thinks it is attached to an instance and we cannot detach it anymore."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This has been observed when running cinder-csi, where it makes a volume"},{"line_number":13,"context_line":"delete request as soon as there are no more attachments, making the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"7f00b011_be890870","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":69},"updated":"2021-10-01 11:33:58.000000000","message":"There are cases where requests to delete an attachment made by Nova can race other third-party requests to delete the overall volume.","commit_id":"4a545c43ea4ec5096f4ef5f6be411cf88cceb7cb"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"80660b3f9fcf62cd3c67c7af56bd6915b2e01bbd","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix: Race between attachment and volume deletion"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are cases where a cinder volume no longer exists yet nova still"},{"line_number":10,"context_line":"thinks it is attached to an instance and we cannot detach it anymore."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This has been observed when running cinder-csi, where it makes a volume"},{"line_number":13,"context_line":"delete request as soon as there are no more attachments, making the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"87a61c40_c68784c6","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":69},"in_reply_to":"7f00b011_be890870","updated":"2021-10-15 15:45:48.000000000","message":"Done","commit_id":"4a545c43ea4ec5096f4ef5f6be411cf88cceb7cb"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"bb6e3e763dd7f1d4d6064cb5d9c5e1a83f65eaf4","unresolved":true,"context_lines":[{"line_number":9,"context_line":"There are cases where a cinder volume no longer exists yet nova still"},{"line_number":10,"context_line":"thinks it is attached to an instance and we cannot detach it anymore."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This has been observed when running cinder-csi, where it makes a volume"},{"line_number":13,"context_line":"delete request as soon as there are no more attachments, making the"},{"line_number":14,"context_line":"volume status become available."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This is a cinder race condition, and like most race conditions is not"},{"line_number":17,"context_line":"simple to explain."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"6e7e7107_7523ebf8","line":14,"range":{"start_line":12,"start_character":48,"end_line":14,"end_character":31},"updated":"2021-10-01 11:33:58.000000000","message":"where it first requests that Nova detach a volume before itself requesting that the overall volume is deleted once it becomes `available`.","commit_id":"4a545c43ea4ec5096f4ef5f6be411cf88cceb7cb"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"80660b3f9fcf62cd3c67c7af56bd6915b2e01bbd","unresolved":false,"context_lines":[{"line_number":9,"context_line":"There are cases where a cinder volume no longer exists yet nova still"},{"line_number":10,"context_line":"thinks it is attached to an instance and we cannot detach it anymore."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This has been observed when running cinder-csi, where it makes a volume"},{"line_number":13,"context_line":"delete request as soon as there are no more attachments, making the"},{"line_number":14,"context_line":"volume status become available."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This is a cinder race condition, and like most race conditions is not"},{"line_number":17,"context_line":"simple to explain."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"d89c96ee_49208aeb","line":14,"range":{"start_line":12,"start_character":48,"end_line":14,"end_character":31},"in_reply_to":"6e7e7107_7523ebf8","updated":"2021-10-15 15:45:48.000000000","message":"Done","commit_id":"4a545c43ea4ec5096f4ef5f6be411cf88cceb7cb"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"bb6e3e763dd7f1d4d6064cb5d9c5e1a83f65eaf4","unresolved":true,"context_lines":[{"line_number":51,"context_line":"- R1: The last attachment is removed from the DB and the status of the"},{"line_number":52,"context_line":"      volume is changed in the DB to \"available\""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"[Cinder-CSI]"},{"line_number":55,"context_line":"- Checks that there are no attachments in the volume and asks Cinder to"},{"line_number":56,"context_line":"  delete it (Request R2)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"[Cinder-API]"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ea618d03_9f4ee467","line":56,"range":{"start_line":54,"start_character":0,"end_line":56,"end_character":24},"updated":"2021-10-01 11:33:58.000000000","message":"I know we disagree on this but could you reference this somewhere?\n\nhttps://github.com/kubernetes/cloud-provider-openstack/issues/1645","commit_id":"4a545c43ea4ec5096f4ef5f6be411cf88cceb7cb"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"80660b3f9fcf62cd3c67c7af56bd6915b2e01bbd","unresolved":false,"context_lines":[{"line_number":51,"context_line":"- R1: The last attachment is removed from the DB and the status of the"},{"line_number":52,"context_line":"      volume is changed in the DB to \"available\""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"[Cinder-CSI]"},{"line_number":55,"context_line":"- Checks that there are no attachments in the volume and asks Cinder to"},{"line_number":56,"context_line":"  delete it (Request R2)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"[Cinder-API]"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"6685ec98_ce7320de","line":56,"range":{"start_line":54,"start_character":0,"end_line":56,"end_character":24},"in_reply_to":"ea618d03_9f4ee467","updated":"2021-10-15 15:45:48.000000000","message":"I have added a reference at the end of the commit message.\n\nTo clarify, I disagree that the solution to this issue is in Cinder-CSI, because I think Cinder should get it fixed; but I think you are right in Nova being the source of truth regarding its attachments.","commit_id":"4a545c43ea4ec5096f4ef5f6be411cf88cceb7cb"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"bb6e3e763dd7f1d4d6064cb5d9c5e1a83f65eaf4","unresolved":true,"context_lines":[{"line_number":79,"context_line":"- R1: Nova leaves the volume as attached, since the attachment delete"},{"line_number":80,"context_line":"  failed"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"At this point the Cinder and Nova DBs are out of sync, because Nova"},{"line_number":83,"context_line":"thinks that the attachment is connected and Cinder has detached the"},{"line_number":84,"context_line":"volume and even deleted it."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Closes-Bug: #1937084"},{"line_number":87,"context_line":"Change-Id: Iaf149dadad5791e81a3c0efd089d0ee66a1a5614"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9375d770_25f3b5da","line":84,"range":{"start_line":82,"start_character":0,"end_line":84,"end_character":27},"updated":"2021-10-01 11:33:58.000000000","message":"FWIW I\u0027m following up on the Nova side as I said I would with the following series:\n\nhttps://review.opendev.org/q/topic:%2522bug/1937084%2522+project:openstack/nova","commit_id":"4a545c43ea4ec5096f4ef5f6be411cf88cceb7cb"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"80660b3f9fcf62cd3c67c7af56bd6915b2e01bbd","unresolved":false,"context_lines":[{"line_number":79,"context_line":"- R1: Nova leaves the volume as attached, since the attachment delete"},{"line_number":80,"context_line":"  failed"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"At this point the Cinder and Nova DBs are out of sync, because Nova"},{"line_number":83,"context_line":"thinks that the attachment is connected and Cinder has detached the"},{"line_number":84,"context_line":"volume and even deleted it."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Closes-Bug: #1937084"},{"line_number":87,"context_line":"Change-Id: Iaf149dadad5791e81a3c0efd089d0ee66a1a5614"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"d6e029dc_ee954332","line":84,"range":{"start_line":82,"start_character":0,"end_line":84,"end_character":27},"in_reply_to":"9375d770_25f3b5da","updated":"2021-10-15 15:45:48.000000000","message":"Thanks!  I\u0027ve added it to the commit message as well.","commit_id":"4a545c43ea4ec5096f4ef5f6be411cf88cceb7cb"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"80660b3f9fcf62cd3c67c7af56bd6915b2e01bbd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"aee629be_af7dd920","updated":"2021-10-15 15:45:48.000000000","message":"Thanks for the reviews.","commit_id":"4a545c43ea4ec5096f4ef5f6be411cf88cceb7cb"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"55c95a956f63bbc0dc48bab279b402c88d8e16c9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"6ba680a5_6c9c7449","updated":"2021-11-01 15:01:11.000000000","message":"LGTM still.","commit_id":"2ec2222841f6116707fe25bdcdae6ad6c2b9beb7"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"ab265e2202939ed2e5715e77fdfa5ea78bd7ed57","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"3ad13a83_26689c30","updated":"2021-11-15 20:40:18.000000000","message":"Looks like all the comments had been addressed. This patch looks good to me.","commit_id":"2ec2222841f6116707fe25bdcdae6ad6c2b9beb7"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"03189c22faa1d17c14035121f8888722dbeae065","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"e7f795a0_d6e3c030","updated":"2021-10-28 14:10:38.000000000","message":"Looks pretty good to me","commit_id":"2ec2222841f6116707fe25bdcdae6ad6c2b9beb7"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d49b33fdd3131d593c583f17fce2c56c6b8d0d91","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"a782f723_5147857d","updated":"2021-10-27 22:56:19.000000000","message":"Revisions look great!  Raising the priority because this issue came up during discussion at the bug squad meeting this morning.","commit_id":"2ec2222841f6116707fe25bdcdae6ad6c2b9beb7"}],"cinder/db/sqlalchemy/api.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ee0fa3ba961141c5b847860b8c231325b6da2cea","unresolved":true,"context_lines":[{"line_number":1730,"context_line":"                               partial_rename, filters)"},{"line_number":1731,"context_line":""},{"line_number":1732,"context_line":""},{"line_number":1733,"context_line":"def _get_status_from_attachments(context, session, volume_id):"},{"line_number":1734,"context_line":"    \"\"\"Get volume status and attach_status based on existing attachments.\"\"\""},{"line_number":1735,"context_line":"    # NOTE: Current implementation ignores attachments on error attaching,"},{"line_number":1736,"context_line":"    # since they will not have been used by any consumer because os-brick\u0027s"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a4d8e64_135ba9f3","line":1733,"range":{"start_line":1733,"start_character":9,"end_line":1733,"end_character":15},"updated":"2021-10-05 16:31:50.000000000","message":"How strenuously would you object to making this plural?  Either that, or we could make mypy-ing this file a priority to annotate returning a tuple.","commit_id":"4a545c43ea4ec5096f4ef5f6be411cf88cceb7cb"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"80660b3f9fcf62cd3c67c7af56bd6915b2e01bbd","unresolved":false,"context_lines":[{"line_number":1730,"context_line":"                               partial_rename, filters)"},{"line_number":1731,"context_line":""},{"line_number":1732,"context_line":""},{"line_number":1733,"context_line":"def _get_status_from_attachments(context, session, volume_id):"},{"line_number":1734,"context_line":"    \"\"\"Get volume status and attach_status based on existing attachments.\"\"\""},{"line_number":1735,"context_line":"    # NOTE: Current implementation ignores attachments on error attaching,"},{"line_number":1736,"context_line":"    # since they will not have been used by any consumer because os-brick\u0027s"}],"source_content_type":"text/x-python","patch_set":7,"id":"537d77b5_4814e982","line":1733,"range":{"start_line":1733,"start_character":9,"end_line":1733,"end_character":15},"in_reply_to":"7a4d8e64_135ba9f3","updated":"2021-10-15 15:45:48.000000000","message":"Zero objections, moreover considering that we recently had an issue in os-brick because a method in \"singular\" returned a list!!","commit_id":"4a545c43ea4ec5096f4ef5f6be411cf88cceb7cb"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"c354e623b432f08508a414628357f9a7cde58e11","unresolved":true,"context_lines":[{"line_number":1733,"context_line":"def _get_status_from_attachments(context, session, volume_id):"},{"line_number":1734,"context_line":"    \"\"\"Get volume status and attach_status based on existing attachments.\"\"\""},{"line_number":1735,"context_line":"    # NOTE: Current implementation ignores attachments on error attaching,"},{"line_number":1736,"context_line":"    # since they will not have been used by any consumer because os-brick\u0027s"},{"line_number":1737,"context_line":"    # connect_volume has not been called yet. This leads to cases where a"},{"line_number":1738,"context_line":"    # volume will be in \u0027available\u0027 state yet have attachments."},{"line_number":1739,"context_line":""},{"line_number":1740,"context_line":"    # If we sort status of attachments alphabetically, ignoring errors, the"},{"line_number":1741,"context_line":"    # first element will be the attachment status for the volume:"}],"source_content_type":"text/x-python","patch_set":7,"id":"6f12ca56_03bcbfb2","line":1738,"range":{"start_line":1736,"start_character":57,"end_line":1738,"end_character":63},"updated":"2021-09-30 21:37:11.000000000","message":"Sorry if I\u0027m misunderstanding something but should we open a launchpad bug for this? Or is it the expected behavior.","commit_id":"4a545c43ea4ec5096f4ef5f6be411cf88cceb7cb"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"80660b3f9fcf62cd3c67c7af56bd6915b2e01bbd","unresolved":false,"context_lines":[{"line_number":1733,"context_line":"def _get_status_from_attachments(context, session, volume_id):"},{"line_number":1734,"context_line":"    \"\"\"Get volume status and attach_status based on existing attachments.\"\"\""},{"line_number":1735,"context_line":"    # NOTE: Current implementation ignores attachments on error attaching,"},{"line_number":1736,"context_line":"    # since they will not have been used by any consumer because os-brick\u0027s"},{"line_number":1737,"context_line":"    # connect_volume has not been called yet. This leads to cases where a"},{"line_number":1738,"context_line":"    # volume will be in \u0027available\u0027 state yet have attachments."},{"line_number":1739,"context_line":""},{"line_number":1740,"context_line":"    # If we sort status of attachments alphabetically, ignoring errors, the"},{"line_number":1741,"context_line":"    # first element will be the attachment status for the volume:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1dcdb3b1_01fc717d","line":1738,"range":{"start_line":1736,"start_character":57,"end_line":1738,"end_character":63},"in_reply_to":"6f12ca56_03bcbfb2","updated":"2021-10-15 15:45:48.000000000","message":"I don\u0027t think this is something we can really fix, in my opinion this is an odd behavior of the attachment API that is worth mentioning.","commit_id":"4a545c43ea4ec5096f4ef5f6be411cf88cceb7cb"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ee0fa3ba961141c5b847860b8c231325b6da2cea","unresolved":true,"context_lines":[{"line_number":1737,"context_line":"    # connect_volume has not been called yet. This leads to cases where a"},{"line_number":1738,"context_line":"    # volume will be in \u0027available\u0027 state yet have attachments."},{"line_number":1739,"context_line":""},{"line_number":1740,"context_line":"    # If we sort status of attachments alphabetically, ignoring errors, the"},{"line_number":1741,"context_line":"    # first element will be the attachment status for the volume:"},{"line_number":1742,"context_line":"    #     attached \u003e attaching \u003e detaching \u003e reserved"},{"line_number":1743,"context_line":"    attach_status \u003d session.query(models.VolumeAttachment.attach_status).\\"},{"line_number":1744,"context_line":"        filter_by(deleted\u003dFalse).\\"},{"line_number":1745,"context_line":"        filter_by(volume_id\u003dvolume_id).\\"}],"source_content_type":"text/x-python","patch_set":7,"id":"60e34742_b0c292ae","line":1742,"range":{"start_line":1740,"start_character":0,"end_line":1742,"end_character":53},"updated":"2021-10-05 16:31:50.000000000","message":"This looks like excellent planning on someone\u0027s part :)\n\nThanks for the comment, otherwise it would take a while to understand the filtering.","commit_id":"4a545c43ea4ec5096f4ef5f6be411cf88cceb7cb"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ee0fa3ba961141c5b847860b8c231325b6da2cea","unresolved":true,"context_lines":[{"line_number":1752,"context_line":"    attach_status \u003d attach_status or \u0027detached\u0027"},{"line_number":1753,"context_line":""},{"line_number":1754,"context_line":"    # By default the volume status is the same as the attach status, but"},{"line_number":1755,"context_line":"    # there are 2 exceptions we handle with the mapping."},{"line_number":1756,"context_line":"    status \u003d ATTACH_STATUS_MAP.get(attach_status, attach_status)"},{"line_number":1757,"context_line":""},{"line_number":1758,"context_line":"    return (status, attach_status)"}],"source_content_type":"text/x-python","patch_set":7,"id":"d366fda9_397b3c0d","line":1755,"range":{"start_line":1755,"start_character":18,"end_line":1755,"end_character":28},"updated":"2021-10-05 16:31:50.000000000","message":"nit: \u0027differences\u0027 would be better here (though \u0027exceptions\u0027 is also used in the comment explaining the ATTACH_STATUS_MAP, and it\u0027s kind of misleading)","commit_id":"4a545c43ea4ec5096f4ef5f6be411cf88cceb7cb"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"80660b3f9fcf62cd3c67c7af56bd6915b2e01bbd","unresolved":false,"context_lines":[{"line_number":1752,"context_line":"    attach_status \u003d attach_status or \u0027detached\u0027"},{"line_number":1753,"context_line":""},{"line_number":1754,"context_line":"    # By default the volume status is the same as the attach status, but"},{"line_number":1755,"context_line":"    # there are 2 exceptions we handle with the mapping."},{"line_number":1756,"context_line":"    status \u003d ATTACH_STATUS_MAP.get(attach_status, attach_status)"},{"line_number":1757,"context_line":""},{"line_number":1758,"context_line":"    return (status, attach_status)"}],"source_content_type":"text/x-python","patch_set":7,"id":"f68f666e_3baf1564","line":1755,"range":{"start_line":1755,"start_character":18,"end_line":1755,"end_character":28},"in_reply_to":"d366fda9_397b3c0d","updated":"2021-10-15 15:45:48.000000000","message":"Isn\u0027t it \"the exception to the rule\"? Here the rule is `vol status \u003d attach status` but we have 2 exceptions.  Though I understand that in programming we should try to avoid misunderstandings.\n\nI have changed it here and in the ATTACH_STATUS_MAP","commit_id":"4a545c43ea4ec5096f4ef5f6be411cf88cceb7cb"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ee0fa3ba961141c5b847860b8c231325b6da2cea","unresolved":true,"context_lines":[{"line_number":1780,"context_line":"    session \u003d get_session()"},{"line_number":1781,"context_line":"    with session.begin():"},{"line_number":1782,"context_line":"        # Only load basic volume info necessary to check various status and use"},{"line_number":1783,"context_line":"        # the volume row as a lock with the with for update."},{"line_number":1784,"context_line":"        volume \u003d _volume_get(context, volume_id, session\u003dsession,"},{"line_number":1785,"context_line":"                             joined_load\u003dFalse, for_update\u003dTrue)"},{"line_number":1786,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"a197ec6d_a20a6d2c","line":1783,"range":{"start_line":1783,"start_character":44,"end_line":1783,"end_character":59},"updated":"2021-10-05 16:31:50.000000000","message":"nit: this might be more clear as simply \u0027for_update\u0027 to bring attention to the argument on line 1785 (otherwise, the comment looks like it has a typo).  This is definitely a good comment to point out that we\u0027ve got a lock on the volume row.","commit_id":"4a545c43ea4ec5096f4ef5f6be411cf88cceb7cb"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"80660b3f9fcf62cd3c67c7af56bd6915b2e01bbd","unresolved":false,"context_lines":[{"line_number":1780,"context_line":"    session \u003d get_session()"},{"line_number":1781,"context_line":"    with session.begin():"},{"line_number":1782,"context_line":"        # Only load basic volume info necessary to check various status and use"},{"line_number":1783,"context_line":"        # the volume row as a lock with the with for update."},{"line_number":1784,"context_line":"        volume \u003d _volume_get(context, volume_id, session\u003dsession,"},{"line_number":1785,"context_line":"                             joined_load\u003dFalse, for_update\u003dTrue)"},{"line_number":1786,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"f64ddf87_fc41783f","line":1783,"range":{"start_line":1783,"start_character":44,"end_line":1783,"end_character":59},"in_reply_to":"a197ec6d_a20a6d2c","updated":"2021-10-15 15:45:48.000000000","message":"I was referring to the FOR UPDATE from SQL, but it makes sense to change it.","commit_id":"4a545c43ea4ec5096f4ef5f6be411cf88cceb7cb"}],"cinder/volume/api.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ee0fa3ba961141c5b847860b8c231325b6da2cea","unresolved":true,"context_lines":[{"line_number":2264,"context_line":"            volume_utils.notify_about_volume_usage(ctxt,"},{"line_number":2265,"context_line":"                                                   volume, \"detach.start\")"},{"line_number":2266,"context_line":"        else:"},{"line_number":2267,"context_line":"            # Don\u0027t do start notification on the API when doing RPC calls so it"},{"line_number":2268,"context_line":"            # includes the host doing the operation."},{"line_number":2269,"context_line":"            self.volume_rpcapi.attachment_delete(ctxt, attachment.id, volume)"},{"line_number":2270,"context_line":""},{"line_number":2271,"context_line":"        # Trigger attachments lazy load (missing since volume was loaded in the"}],"source_content_type":"text/x-python","patch_set":7,"id":"2a9a4bdc_1f75366e","line":2268,"range":{"start_line":2267,"start_character":0,"end_line":2268,"end_character":52},"updated":"2021-10-05 16:31:50.000000000","message":"Maybe instead say something like: The RPC call will generate a detach.start notification containing more information than is available here.\n\n(or not, what you have may be fine)","commit_id":"4a545c43ea4ec5096f4ef5f6be411cf88cceb7cb"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"80660b3f9fcf62cd3c67c7af56bd6915b2e01bbd","unresolved":false,"context_lines":[{"line_number":2264,"context_line":"            volume_utils.notify_about_volume_usage(ctxt,"},{"line_number":2265,"context_line":"                                                   volume, \"detach.start\")"},{"line_number":2266,"context_line":"        else:"},{"line_number":2267,"context_line":"            # Don\u0027t do start notification on the API when doing RPC calls so it"},{"line_number":2268,"context_line":"            # includes the host doing the operation."},{"line_number":2269,"context_line":"            self.volume_rpcapi.attachment_delete(ctxt, attachment.id, volume)"},{"line_number":2270,"context_line":""},{"line_number":2271,"context_line":"        # Trigger attachments lazy load (missing since volume was loaded in the"}],"source_content_type":"text/x-python","patch_set":7,"id":"b8417c02_caca6c5c","line":2268,"range":{"start_line":2267,"start_character":0,"end_line":2268,"end_character":52},"in_reply_to":"2a9a4bdc_1f75366e","updated":"2021-10-15 15:45:48.000000000","message":"I have rephrased it and I hope it\u0027s easier to read now.","commit_id":"4a545c43ea4ec5096f4ef5f6be411cf88cceb7cb"}],"cinder/volume/manager.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ee0fa3ba961141c5b847860b8c231325b6da2cea","unresolved":true,"context_lines":[{"line_number":4953,"context_line":"            # failures in terms of detaching the volume."},{"line_number":4954,"context_line":"            pass"},{"line_number":4955,"context_line":"        vref.finish_detach(attachment_id)"},{"line_number":4956,"context_line":"        self._notify_about_volume_usage(context, vref, \"detach.end\")"},{"line_number":4957,"context_line":""},{"line_number":4958,"context_line":"    # Replication group API (Tiramisu)"},{"line_number":4959,"context_line":"    def enable_replication(self,"}],"source_content_type":"text/x-python","patch_set":7,"id":"ab23e40c_7ba3931c","side":"PARENT","line":4956,"updated":"2021-10-05 16:31:50.000000000","message":"Your comment in cinder/volume/api.py is clear about why these lines are being removed.","commit_id":"e07bf3787a7c1a8a55b8f69290cf6166719f6a5e"}],"releasenotes/notes/detach-race-delete-012820ad9c8dbe16.yaml":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"b006988d1afd15a1d60496930d1b84ed0faae4a3","unresolved":true,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    `Bug #801913 \u003chttps://bugs.launchpad.net/cinder/+bug/801913\u003e`_: Fixed"},{"line_number":5,"context_line":"    race condition between detach and delete that can lead to Nova thinking a"},{"line_number":6,"context_line":"    deleted volume is still attached, preventing its detachment."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"0c621efa_11831416","line":6,"range":{"start_line":5,"start_character":50,"end_line":6,"end_character":64},"updated":"2021-09-14 08:46:44.000000000","message":"I don\u0027t see the point in referencing Nova here.","commit_id":"d3efdc7149def5a6c6d3847f0e576b8070b6d94e"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"3596a050566959cc9a0df190c4b6af8ab2535ad3","unresolved":true,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    `Bug #801913 \u003chttps://bugs.launchpad.net/cinder/+bug/801913\u003e`_: Fixed"},{"line_number":5,"context_line":"    race condition between detach and delete that can lead to Nova thinking a"},{"line_number":6,"context_line":"    deleted volume is still attached, preventing its detachment."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"d93bc25f_c6aea455","line":6,"range":{"start_line":5,"start_character":50,"end_line":6,"end_character":64},"in_reply_to":"0c621efa_11831416","updated":"2021-09-15 14:36:34.000000000","message":"I wanted to explain what the user would experience because of the Cinder bug, which is not something visible on Cinder, but on Nova.\n\nI can rephrase it so it doesn\u0027t say Nova but talks about an instance.","commit_id":"d3efdc7149def5a6c6d3847f0e576b8070b6d94e"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"3ee96235860a5ce119fd574ce77ee3cb4463faa1","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    `Bug #801913 \u003chttps://bugs.launchpad.net/cinder/+bug/801913\u003e`_: Fixed"},{"line_number":5,"context_line":"    race condition between delete attachment and delete volume that can leave"},{"line_number":6,"context_line":"    deleted volumes stuck as attached to instances."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"4768da80_a2866ad7","line":4,"updated":"2021-09-21 10:46:08.000000000","message":"Bug number is: 1937084","commit_id":"7e8c8c1b087659084ff4c14a0cff5abae82ff047"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"61ad2060662328f2a748a179323d24afd5a90af2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    `Bug #801913 \u003chttps://bugs.launchpad.net/cinder/+bug/801913\u003e`_: Fixed"},{"line_number":5,"context_line":"    race condition between delete attachment and delete volume that can leave"},{"line_number":6,"context_line":"    deleted volumes stuck as attached to instances."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"8bf058a9_9308aac8","line":4,"in_reply_to":"4768da80_a2866ad7","updated":"2021-09-28 08:46:25.000000000","message":"Great catch, thanks!","commit_id":"7e8c8c1b087659084ff4c14a0cff5abae82ff047"}]}
