)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e1b45e8477fa21bdae3b314e0f1cf97dae99c77d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"65c8e948_6313e160","updated":"2021-11-12 15:17:04.000000000","message":"Addresses a bug that manifests in a not uncommon deployment configuration; appropriate to backport.  Approving a simultaneous backport to the stable branches because we\u0027re up against a deadline to do a final release from ussuri before it goes EM.  We will not be releasing from any other stable branches before the final ussuri release.","commit_id":"ecaf7f8962e12b43f9759ddc1b608f30eb9f5ebb"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"ba3bc5bf0ea5c7aaf84d9054b867a9e0922c5dfb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8fadb2a6_9b9fb7dd","updated":"2021-11-12 15:16:15.000000000","message":"LGTM","commit_id":"ecaf7f8962e12b43f9759ddc1b608f30eb9f5ebb"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"ed0ba5e29e13ef3b227c7bb074546d66bb3ab2e0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"0a7a62cb_f1ce1cdf","updated":"2021-11-12 09:05:11.000000000","message":"Thanks Gorka.","commit_id":"ecaf7f8962e12b43f9759ddc1b608f30eb9f5ebb"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"990152aaf68c97b5206390aced06bf2c5d68d3cc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"84defa6f_a02820d2","updated":"2022-04-21 15:15:16.000000000","message":"We discussed this issue on the release patch and decided it was OK:\nhttps://review.opendev.org/c/openstack/releases/+/829590\n\nIn a real deployment, I\u0027m pretty sure the lock_path will already be defined or some other functionality will break.","commit_id":"ecaf7f8962e12b43f9759ddc1b608f30eb9f5ebb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"84f8e839003d44177761f59864ebe93cceb52227","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"878351f0_fadba9dd","updated":"2022-04-21 13:55:55.000000000","message":"im not sure if this change has been released yet but it\u0027s breaking our downstream unit tests\nsince the stable branch has been imported into our osp 17 branches.\ni also see failure today in a local run of stable/wallaby unit tests\n\n\nthis change makes the lock_path a required config option whereas previously because we were using internal locks it was optional.\n\nthat means that nova unit tests will start to fail if this is released\n\nbefore this change, the use of an internal lock meant that the lock_path was not required and nova did not have to mock or set the environment variable. with the change to using external locking that is not required.  that requirement is called out in the release notes but as a result of this new requirement, this patch is not safely back portable. https://review.opendev.org/c/openstack/os-brick/+/817708/4/releasenotes/notes/external-locks-9f015988ebdc37d6.yaml#2\n\nif we wanted to backport this without break nova or real deployments where this is not set we would have to provide a real default. \n\nI\u0027m not sure we want to revert this at this point but this was not in line with sable policy as it required config changes and this may cause issues when we go to make another release of os-brick for stable branches.\n\nCaptured traceback:\n~~~~~~~~~~~~~~~~~~~\n    Traceback (most recent call last):\n\n      File \"/home/sean/repos/openstack/nova-2/nova/tests/unit/virt/test_block_device.py\", line 746, in test_volume_attach_with_shared_targets\n    self.test_volume_attach(include_shared_targets\u003dTrue)\n\n      File \"/home/sean/repos/openstack/nova-2/nova/tests/unit/virt/test_block_device.py\", line 742, in test_volume_attach\n    self._test_volume_attach(test_bdm, self.volume_bdm, volume,\n\n      File \"/home/sean/repos/openstack/nova-2/.tox/py38/lib/python3.8/site-packages/mock/mock.py\", line 1346, in patched\n    return func(*newargs, **newkeywargs)\n\n      File \"/home/sean/repos/openstack/nova-2/nova/tests/unit/virt/test_block_device.py\", line 644, in _test_volume_attach\n    driver_bdm.attach(self.context, instance,\n\n      File \"/home/sean/repos/openstack/nova-2/nova/virt/block_device.py\", line 46, in wrapped\n    ret_val \u003d method(obj, context, *args, **kwargs)\n\n      File \"/home/sean/repos/openstack/nova-2/nova/virt/block_device.py\", line 671, in attach\n    with brick_utils.guard_connection(volume):\n\n      File \"/nix/store/05lgr8g2b604wcv90f6hrq8iv7fq4r2k-python3-3.8.12/lib/python3.8/contextlib.py\", line 113, in __enter__\n    return next(self.gen)\n\n      File \"/home/sean/repos/openstack/nova-2/.tox/py38/lib/python3.8/site-packages/os_brick/initiator/utils.py\", line 45, in guard_connection\n    with lockutils.lock(device[\u0027service_uuid\u0027], \u0027os-brick-\u0027,\n\n      File \"/nix/store/05lgr8g2b604wcv90f6hrq8iv7fq4r2k-python3-3.8.12/lib/python3.8/contextlib.py\", line 113, in __enter__\n    return next(self.gen)\n\n      File \"/home/sean/repos/openstack/nova-2/.tox/py38/lib/python3.8/site-packages/oslo_concurrency/lockutils.py\", line 269, in lock\n    ext_lock \u003d external_lock(name, lock_file_prefix, lock_path)\n\n      File \"/home/sean/repos/openstack/nova-2/.tox/py38/lib/python3.8/site-packages/oslo_concurrency/lockutils.py\", line 189, in external_lock\n    lock_file_path \u003d _get_lock_path(name, lock_file_prefix, lock_path)\n\n      File \"/home/sean/repos/openstack/nova-2/.tox/py38/lib/python3.8/site-packages/oslo_concurrency/lockutils.py\", line 183, in _get_lock_path\n    raise cfg.RequiredOptError(\u0027lock_path\u0027)\n\n    oslo_config.cfg.RequiredOptError: value required for option lock_path in group [DEFAULT]\n\n\n","commit_id":"ecaf7f8962e12b43f9759ddc1b608f30eb9f5ebb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"85c7fd471d193ef5207ede45cce7c4a269ed0a11","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"211721aa_065b9ca7","in_reply_to":"878351f0_fadba9dd","updated":"2022-04-21 14:17:35.000000000","message":"this was released in 4.3.3","commit_id":"ecaf7f8962e12b43f9759ddc1b608f30eb9f5ebb"}],"os_brick/initiator/connectors/iscsi.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ea42c7329460727f38c93e907275093fdda6e76b","unresolved":true,"context_lines":[{"line_number":494,"context_line":"    @synchronized(\u0027connect_volume\u0027, external\u003dTrue)"},{"line_number":495,"context_line":"    def connect_volume(self, connection_properties):"},{"line_number":496,"context_line":"        \"\"\"Attach the volume to instance_name."},{"line_number":497,"context_line":""},{"line_number":498,"context_line":"        NOTE: Will retry up to three times to handle the case where c-vol"},{"line_number":499,"context_line":"        and n-cpu are both using os-brick to manage iSCSI sessions but they"},{"line_number":500,"context_line":"        are on the same node and using different locking directories. In this"},{"line_number":501,"context_line":"        case, even though this call is synchronized, they will be separate"},{"line_number":502,"context_line":"        locks and can still overlap with connect and disconnect. Since a"},{"line_number":503,"context_line":"        disconnect during an initial attach can\u0027t cause IO failure (the device"},{"line_number":504,"context_line":"        has not been made available yet), we just try the connection again."},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"        :param connection_properties: The valid dictionary that describes all"},{"line_number":507,"context_line":"                                      of the target volume attributes."}],"source_content_type":"text/x-python","patch_set":3,"id":"4af39b9c_55e08663","line":504,"range":{"start_line":497,"start_character":0,"end_line":504,"end_character":75},"updated":"2021-11-12 08:57:10.000000000","message":"-1: The original patch removed this comment.","commit_id":"08ddf69d648c5622a5a300a8636bda727b5b2722"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"ed0ba5e29e13ef3b227c7bb074546d66bb3ab2e0","unresolved":false,"context_lines":[{"line_number":494,"context_line":"    @synchronized(\u0027connect_volume\u0027, external\u003dTrue)"},{"line_number":495,"context_line":"    def connect_volume(self, connection_properties):"},{"line_number":496,"context_line":"        \"\"\"Attach the volume to instance_name."},{"line_number":497,"context_line":""},{"line_number":498,"context_line":"        NOTE: Will retry up to three times to handle the case where c-vol"},{"line_number":499,"context_line":"        and n-cpu are both using os-brick to manage iSCSI sessions but they"},{"line_number":500,"context_line":"        are on the same node and using different locking directories. In this"},{"line_number":501,"context_line":"        case, even though this call is synchronized, they will be separate"},{"line_number":502,"context_line":"        locks and can still overlap with connect and disconnect. Since a"},{"line_number":503,"context_line":"        disconnect during an initial attach can\u0027t cause IO failure (the device"},{"line_number":504,"context_line":"        has not been made available yet), we just try the connection again."},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"        :param connection_properties: The valid dictionary that describes all"},{"line_number":507,"context_line":"                                      of the target volume attributes."}],"source_content_type":"text/x-python","patch_set":3,"id":"ddc6af71_9dbbba58","line":504,"range":{"start_line":497,"start_character":0,"end_line":504,"end_character":75},"in_reply_to":"4af39b9c_55e08663","updated":"2021-11-12 09:05:11.000000000","message":"Done","commit_id":"08ddf69d648c5622a5a300a8636bda727b5b2722"}]}
