)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"1d89de88f4c385a6259b0623e6cb57101a8a3016","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Gorka Eguileor \u003cgeguileo@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-03-19 12:16:20 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix unnecessary locking when connecting volumes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Cinder introduced \"shared_targets\" and \"service_uuid\" fields in volumes"},{"line_number":10,"context_line":"to allow volume consumers to protect themselves from unintended leftover"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5fc1f717_8f31aca5","line":7,"range":{"start_line":7,"start_character":29,"end_line":7,"end_character":39},"updated":"2019-03-19 13:22:58.000000000","message":"`attaching and detaching`\n\nOr I\u0027d even reword it to something like:\n\n  Use os-brick locking when attaching and detaching volumes","commit_id":"e2eaf843d097878fa6cd782376d2ee45f63d2634"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"32bfe2039f2dd7b85b51a03a6d465db858f4f74f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Gorka Eguileor \u003cgeguileo@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-03-19 12:16:20 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix unnecessary locking when connecting volumes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Cinder introduced \"shared_targets\" and \"service_uuid\" fields in volumes"},{"line_number":10,"context_line":"to allow volume consumers to protect themselves from unintended leftover"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5fc1f717_fb17d144","line":7,"range":{"start_line":7,"start_character":29,"end_line":7,"end_character":39},"in_reply_to":"5fc1f717_8f31aca5","updated":"2019-03-19 15:11:51.000000000","message":"Done","commit_id":"e2eaf843d097878fa6cd782376d2ee45f63d2634"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"1d89de88f4c385a6259b0623e6cb57101a8a3016","unresolved":false,"context_lines":[{"line_number":10,"context_line":"to allow volume consumers to protect themselves from unintended leftover"},{"line_number":11,"context_line":"devices when handling iSCSI connections with shared targets."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Nova is protectin from the automatic scans that happen on detach/map"},{"line_number":14,"context_line":"race conditions by locking and only allowing one attach or one detach"},{"line_number":15,"context_line":"operation for each server to happen at a given time if \"shared_targets\""},{"line_number":16,"context_line":"is set to True."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5fc1f717_cfeb34da","line":14,"range":{"start_line":13,"start_character":0,"end_line":14,"end_character":18},"updated":"2019-03-19 13:22:58.000000000","message":"`Nova would avoid races caused by automatic rescans on iSCSI volume detachment while cinder also remapped the volume to the same host by`","commit_id":"e2eaf843d097878fa6cd782376d2ee45f63d2634"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"32bfe2039f2dd7b85b51a03a6d465db858f4f74f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"to allow volume consumers to protect themselves from unintended leftover"},{"line_number":11,"context_line":"devices when handling iSCSI connections with shared targets."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Nova is protectin from the automatic scans that happen on detach/map"},{"line_number":14,"context_line":"race conditions by locking and only allowing one attach or one detach"},{"line_number":15,"context_line":"operation for each server to happen at a given time if \"shared_targets\""},{"line_number":16,"context_line":"is set to True."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5fc1f717_7b5a012b","line":14,"range":{"start_line":13,"start_character":0,"end_line":14,"end_character":18},"in_reply_to":"5fc1f717_cfeb34da","updated":"2019-03-19 15:11:51.000000000","message":"This is trying to describe what the code is currently doing, so I will change your sentence a little bit.","commit_id":"e2eaf843d097878fa6cd782376d2ee45f63d2634"}],"nova/virt/block_device.py":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"1d89de88f4c385a6259b0623e6cb57101a8a3016","unresolved":false,"context_lines":[{"line_number":421,"context_line":"    def detach(self, context, instance, volume_api, virt_driver,"},{"line_number":422,"context_line":"               attachment_id\u003dNone, destroy_bdm\u003dFalse):"},{"line_number":423,"context_line":"        volume \u003d self._get_volume(context, volume_api, self.volume_id)"},{"line_number":424,"context_line":"        # Let OS-Brick handle locking for iSCSI shared targets when necessary."},{"line_number":425,"context_line":"        with brick_utils.guard_connection(volume):"},{"line_number":426,"context_line":"            self._do_detach(context, instance, volume_api, virt_driver,"},{"line_number":427,"context_line":"                            attachment_id, destroy_bdm)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_4acf3229","line":424,"range":{"start_line":424,"start_character":37,"end_line":424,"end_character":77},"updated":"2019-03-19 13:22:58.000000000","message":"I don\u0027t think we need to call out any backend specific reasons for locking here, just that os-brick is handling this now. If anything some additional context on what is actually being locked below this could be useful, the actual driver detach and calls to the volume API etc.","commit_id":"e2eaf843d097878fa6cd782376d2ee45f63d2634"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"32bfe2039f2dd7b85b51a03a6d465db858f4f74f","unresolved":false,"context_lines":[{"line_number":421,"context_line":"    def detach(self, context, instance, volume_api, virt_driver,"},{"line_number":422,"context_line":"               attachment_id\u003dNone, destroy_bdm\u003dFalse):"},{"line_number":423,"context_line":"        volume \u003d self._get_volume(context, volume_api, self.volume_id)"},{"line_number":424,"context_line":"        # Let OS-Brick handle locking for iSCSI shared targets when necessary."},{"line_number":425,"context_line":"        with brick_utils.guard_connection(volume):"},{"line_number":426,"context_line":"            self._do_detach(context, instance, volume_api, virt_driver,"},{"line_number":427,"context_line":"                            attachment_id, destroy_bdm)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_7b18c283","line":424,"range":{"start_line":424,"start_character":37,"end_line":424,"end_character":77},"in_reply_to":"5fc1f717_4acf3229","updated":"2019-03-19 15:11:51.000000000","message":"Done","commit_id":"e2eaf843d097878fa6cd782376d2ee45f63d2634"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"1d89de88f4c385a6259b0623e6cb57101a8a3016","unresolved":false,"context_lines":[{"line_number":615,"context_line":"        volume \u003d self._get_volume(context, volume_api, self.volume_id)"},{"line_number":616,"context_line":"        volume_api.check_availability_zone(context, volume,"},{"line_number":617,"context_line":"                                           instance\u003dinstance)"},{"line_number":618,"context_line":"        # Let OS-Brick handle locking for iSCSI shared targets when necessary."},{"line_number":619,"context_line":"        with brick_utils.guard_connection(volume):"},{"line_number":620,"context_line":"            self._do_attach(context, instance, volume, volume_api,"},{"line_number":621,"context_line":"                            virt_driver, do_driver_attach)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_ea713e0e","line":618,"range":{"start_line":618,"start_character":37,"end_line":618,"end_character":77},"updated":"2019-03-19 13:22:58.000000000","message":"Ditto.","commit_id":"e2eaf843d097878fa6cd782376d2ee45f63d2634"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"32bfe2039f2dd7b85b51a03a6d465db858f4f74f","unresolved":false,"context_lines":[{"line_number":615,"context_line":"        volume \u003d self._get_volume(context, volume_api, self.volume_id)"},{"line_number":616,"context_line":"        volume_api.check_availability_zone(context, volume,"},{"line_number":617,"context_line":"                                           instance\u003dinstance)"},{"line_number":618,"context_line":"        # Let OS-Brick handle locking for iSCSI shared targets when necessary."},{"line_number":619,"context_line":"        with brick_utils.guard_connection(volume):"},{"line_number":620,"context_line":"            self._do_attach(context, instance, volume, volume_api,"},{"line_number":621,"context_line":"                            virt_driver, do_driver_attach)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_9b1d6e75","line":618,"range":{"start_line":618,"start_character":37,"end_line":618,"end_character":77},"in_reply_to":"5fc1f717_ea713e0e","updated":"2019-03-19 15:11:51.000000000","message":"Done","commit_id":"e2eaf843d097878fa6cd782376d2ee45f63d2634"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6f7c5b5e76e7f0a6cebbed95620788a508057b42","unresolved":false,"context_lines":[{"line_number":430,"context_line":"    def detach(self, context, instance, volume_api, virt_driver,"},{"line_number":431,"context_line":"               attachment_id\u003dNone, destroy_bdm\u003dFalse):"},{"line_number":432,"context_line":"        volume \u003d self._get_volume(context, volume_api, self.volume_id)"},{"line_number":433,"context_line":"        # Let OS-Brick handle high level locking that covers the local os-brick"},{"line_number":434,"context_line":"        # detach and the Cinder call to call unmap the volume.  Not all volume"},{"line_number":435,"context_line":"        # backends or hosts require locking."},{"line_number":436,"context_line":"        with brick_utils.guard_connection(volume):"}],"source_content_type":"text/x-python","patch_set":16,"id":"5faad753_b14005a7","line":433,"range":{"start_line":433,"start_character":14,"end_line":433,"end_character":23},"updated":"2019-09-13 13:22:22.000000000","message":"os-brick","commit_id":"1b597f759f9133964fd580d9e0eefd4cd6eb819f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6f7c5b5e76e7f0a6cebbed95620788a508057b42","unresolved":false,"context_lines":[{"line_number":431,"context_line":"               attachment_id\u003dNone, destroy_bdm\u003dFalse):"},{"line_number":432,"context_line":"        volume \u003d self._get_volume(context, volume_api, self.volume_id)"},{"line_number":433,"context_line":"        # Let OS-Brick handle high level locking that covers the local os-brick"},{"line_number":434,"context_line":"        # detach and the Cinder call to call unmap the volume.  Not all volume"},{"line_number":435,"context_line":"        # backends or hosts require locking."},{"line_number":436,"context_line":"        with brick_utils.guard_connection(volume):"},{"line_number":437,"context_line":"            self._do_detach(context, instance, volume_api, virt_driver,"}],"source_content_type":"text/x-python","patch_set":16,"id":"5faad753_d13d812b","line":434,"range":{"start_line":434,"start_character":25,"end_line":434,"end_character":31},"updated":"2019-09-13 13:22:22.000000000","message":"cinder","commit_id":"1b597f759f9133964fd580d9e0eefd4cd6eb819f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6f7c5b5e76e7f0a6cebbed95620788a508057b42","unresolved":false,"context_lines":[{"line_number":628,"context_line":"                                           instance\u003dinstance)"},{"line_number":629,"context_line":"        # Let OS-Brick handle high level locking that covers the call to"},{"line_number":630,"context_line":"        # Cinder that exports \u0026 maps the volume, and for the local os-brick"},{"line_number":631,"context_line":"        # attach.  Not all volume backends or hosts require locking."},{"line_number":632,"context_line":"        with brick_utils.guard_connection(volume):"},{"line_number":633,"context_line":"            self._do_attach(context, instance, volume, volume_api,"},{"line_number":634,"context_line":"                            virt_driver, do_driver_attach)"}],"source_content_type":"text/x-python","patch_set":16,"id":"5faad753_71460dc3","line":631,"updated":"2019-09-13 13:22:22.000000000","message":"ditto","commit_id":"1b597f759f9133964fd580d9e0eefd4cd6eb819f"}],"requirements.txt":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6f7c5b5e76e7f0a6cebbed95620788a508057b42","unresolved":false,"context_lines":[{"line_number":54,"context_line":"oslo.middleware\u003e\u003d3.31.0 # Apache-2.0"},{"line_number":55,"context_line":"psutil\u003e\u003d3.2.2 # BSD"},{"line_number":56,"context_line":"oslo.versionedobjects\u003e\u003d1.35.0 # Apache-2.0"},{"line_number":57,"context_line":"os-brick\u003e\u003d2.6.2 # Apache-2.0"},{"line_number":58,"context_line":"os-resource-classes\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":59,"context_line":"os-traits\u003e\u003d0.16.0 # Apache-2.0"},{"line_number":60,"context_line":"os-vif\u003e\u003d1.14.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":16,"id":"5faad753_f10bdd79","line":57,"updated":"2019-09-13 13:22:22.000000000","message":"Yup. The os-brick change that added this was 71a1e224 and:\n\n  $ git tag --contains 71a1e224\n  2.10.0\n  2.6.2\n  2.7.0\n  2.8.0\n  2.8.1\n  2.8.2\n  2.9.0\n  2.9.1","commit_id":"1b597f759f9133964fd580d9e0eefd4cd6eb819f"}]}
