)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8a519d5bc861efdcbf638ea2688a97c02627aef6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"bd6c6f8d_6675a59c","updated":"2024-07-30 10:55:02.000000000","message":"Code is good to go, I just have some nits here and there, so going with +1 until we can clarify them.","commit_id":"6e1b65e103bf9c14b812ebc40990d2b6c1865314"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4342f45b36ebc207d62049b6cdfff00e814c8b0c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"0445c70e_4864315e","updated":"2024-07-30 19:07:21.000000000","message":"Thanks Gorka for the review, please find my replies inline.","commit_id":"30ace66f4047f46b04552230f474e818cfd24aac"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"522b57b085c1c23e0b7f6aa212968325bc5db93e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"4b4e96c6_3e2167a2","updated":"2024-08-02 18:38:37.000000000","message":"Thanks Gorka for the review.\nAlso confirmed that the wait time are 2,4,8 seconds for the retries (excluding first attempt).\n\n\nAug 02 23:55:34 Ubuntu cinder-volume[967595]: DEBUG oslo_concurrency.processutils [-] Running cmd (subprocess): multipath -C dm-16 {{(pid\u003d968438) execute /opt/stack/data/venv/lib/python3.10/site-packages/oslo_concurrency/processutils.py:390}}\n\nAug 02 23:55:34 Ubuntu cinder-volume[967595]: DEBUG oslo_concurrency.processutils [-] \u0027multipath -C dm-16\u0027 failed. Retrying. {{(pid\u003d968438) execute /opt/stack/data/venv/lib/python3.10/site-packages/oslo_concurrency/processutils.py:486}}\n\nAug 02 23:55:34 Ubuntu cinder-volume[967595]: DEBUG oslo_concurrency.processutils [-] Running cmd (subprocess): multipath -C dm-16 {{(pid\u003d968438) execute /opt/stack/data/venv/lib/python3.10/site-packages/oslo_concurrency/processutils.py:390}}\n\nAug 02 23:55:34 Ubuntu cinder-volume[967595]: DEBUG os_brick.privileged.rootwrap \n[-] Sleeping for 2 seconds {{(pid\u003d968438) on_execute /opt/stack/data/venv/lib/python3.10/site-packages/os_brick/privileged/rootwrap.py:106}}\n\nAug 02 23:55:36 Ubuntu cinder-volume[967595]: DEBUG oslo_concurrency.processutils [-] \u0027multipath -C dm-16\u0027 failed. Retrying. {{(pid\u003d968438) execute /opt/stack/data/venv/lib/python3.10/site-packages/oslo_concurrency/processutils.py:486}}\n\nAug 02 23:55:36 Ubuntu cinder-volume[967595]: DEBUG oslo_concurrency.processutils [-] Running cmd (subprocess): multipath -C dm-16 {{(pid\u003d968438) execute /opt/stack/data/venv/lib/python3.10/site-packages/oslo_concurrency/processutils.py:390}}\n\nAug 02 23:55:36 Ubuntu cinder-volume[967595]: DEBUG os_brick.privileged.rootwrap [-] Sleeping for 4 seconds {{(pid\u003d968438) on_execute /opt/stack/data/venv/lib/python3.10/site-packages/os_brick/privileged/rootwrap.py:106}}\n\nAug 02 23:55:40 Ubuntu cinder-volume[967595]: DEBUG oslo_concurrency.processutils [-] \u0027multipath -C dm-16\u0027 failed. Retrying. {{(pid\u003d968438) execute /opt/stack/data/venv/lib/python3.10/site-packages/oslo_concurrency/processutils.py:486}}\n\nAug 02 23:55:40 Ubuntu cinder-volume[967595]: DEBUG oslo_concurrency.processutils [-] Running cmd (subprocess): multipath -C dm-16 {{(pid\u003d968438) execute /opt/stack/data/venv/lib/python3.10/site-packages/oslo_concurrency/processutils.py:390}}\n\nAug 02 23:55:40 Ubuntu cinder-volume[967595]: DEBUG os_brick.privileged.rootwrap [-] Sleeping for 8 seconds {{(pid\u003d968438) on_execute /opt/stack/data/venv/lib/python3.10/site-packages/os_brick/privileged/rootwrap.py:106}}\n\nAug 02 23:55:48 Ubuntu cinder-volume[967595]: DEBUG oslo_concurrency.processutils [-] \u0027multipath -C dm-16\u0027 failed. Not Retrying. {{(pid\u003d968438) execute /opt/stack/data/venv/lib/python3.10/site-packages/oslo_concurrency/processutils.py:482}}\nAug 02 23:55:48 Ubuntu cinder-volume[967595]: DEBUG oslo.privsep.daemon [-] privsep: Exception during request[b24c108d-d0c1-442b-a59c-5f7291f3f41e]: Unexpected error while running command.\nAug 02 23:55:48 Ubuntu cinder-volume[967595]: Command: None\nAug 02 23:55:48 Ubuntu cinder-volume[967595]: Exit code: -\nAug 02 23:55:48 Ubuntu cinder-volume[967595]: Stdout: None","commit_id":"30aa1f3a06cd3dae6e0c77f9e39ce18fe0cff8ba"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"85ba6c901bdf75fa8124e39325c73c111b6fec4f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"885233bf_871e2cfd","updated":"2024-08-05 09:26:29.000000000","message":"Thanks Gorka!","commit_id":"30aa1f3a06cd3dae6e0c77f9e39ce18fe0cff8ba"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e6a9a5bd6052a0c3f8c86f41bf6d723421598ac0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"37d95004_82ee7ff1","updated":"2024-08-05 22:49:53.000000000","message":"Code \u0026 tests LGTM.  Still thinking about the config opt help text for wait_mpath_device_interval.  Will come back in a few hours and either raise to +2 or make a suggestion for the help text.","commit_id":"639f953194cdc07b1e6aff1fc1ca2a7bc9d28536"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b57d7d607a0f560414ceabcc59e9e6c534072b67","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"7917180a_799ebc96","updated":"2024-08-06 03:48:48.000000000","message":"My attempts to clarify the help text have made me realize that it\u0027s fine the way it is!","commit_id":"639f953194cdc07b1e6aff1fc1ca2a7bc9d28536"}],"os_brick/initiator/connectors/fibre_channel.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8a519d5bc861efdcbf638ea2688a97c02627aef6","unresolved":true,"context_lines":[{"line_number":287,"context_line":"                # only set the multipath_id if we found one"},{"line_number":288,"context_line":"                device_info[\u0027multipath_id\u0027] \u003d multipath_id"},{"line_number":289,"context_line":"            if self.device_name:"},{"line_number":290,"context_line":"                device \u003d self.device_name.rsplit(\u0027/\u0027)[-1]"},{"line_number":291,"context_line":"                mpath \u003d self._linuxscsi.find_sysfs_multipath_dm("},{"line_number":292,"context_line":"                    [device])"},{"line_number":293,"context_line":"                # Wait for multipath device to be ready for I/O"}],"source_content_type":"text/x-python","patch_set":7,"id":"ffb06229_c31045d7","line":290,"updated":"2024-07-30 10:55:02.000000000","message":"-1: `device \u003d os.path.basename(self.device_name)`","commit_id":"6e1b65e103bf9c14b812ebc40990d2b6c1865314"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4342f45b36ebc207d62049b6cdfff00e814c8b0c","unresolved":false,"context_lines":[{"line_number":287,"context_line":"                # only set the multipath_id if we found one"},{"line_number":288,"context_line":"                device_info[\u0027multipath_id\u0027] \u003d multipath_id"},{"line_number":289,"context_line":"            if self.device_name:"},{"line_number":290,"context_line":"                device \u003d self.device_name.rsplit(\u0027/\u0027)[-1]"},{"line_number":291,"context_line":"                mpath \u003d self._linuxscsi.find_sysfs_multipath_dm("},{"line_number":292,"context_line":"                    [device])"},{"line_number":293,"context_line":"                # Wait for multipath device to be ready for I/O"}],"source_content_type":"text/x-python","patch_set":7,"id":"4c7b3658_9f87e6f2","line":290,"in_reply_to":"ffb06229_c31045d7","updated":"2024-07-30 19:07:21.000000000","message":"Done","commit_id":"6e1b65e103bf9c14b812ebc40990d2b6c1865314"}],"os_brick/initiator/connectors/iscsi.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8a519d5bc861efdcbf638ea2688a97c02627aef6","unresolved":true,"context_lines":[{"line_number":791,"context_line":"            # Wait for multipath device to be ready for I/O"},{"line_number":792,"context_line":"            self._linuxscsi.wait_for_mpath_device(mpath)"},{"line_number":793,"context_line":"            if not wwn:"},{"line_number":794,"context_line":"                wwn \u003d self._linuxscsi.get_sysfs_wwn(found, mpath)"},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"        assert wwn is not None"},{"line_number":797,"context_line":"        return self._get_connect_result(connection_properties, wwn, found,"}],"source_content_type":"text/x-python","patch_set":7,"id":"ca64c477_729dbb4b","line":794,"updated":"2024-07-30 10:55:02.000000000","message":"?: Should we do this as well on FC?","commit_id":"6e1b65e103bf9c14b812ebc40990d2b6c1865314"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"45fd58d45b8a59e69e6146ba27ea6be53cdb6ca8","unresolved":true,"context_lines":[{"line_number":791,"context_line":"            # Wait for multipath device to be ready for I/O"},{"line_number":792,"context_line":"            self._linuxscsi.wait_for_mpath_device(mpath)"},{"line_number":793,"context_line":"            if not wwn:"},{"line_number":794,"context_line":"                wwn \u003d self._linuxscsi.get_sysfs_wwn(found, mpath)"},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"        assert wwn is not None"},{"line_number":797,"context_line":"        return self._get_connect_result(connection_properties, wwn, found,"}],"source_content_type":"text/x-python","patch_set":7,"id":"b7e4cfc4_0e7e280f","line":794,"in_reply_to":"6c353089_3818bee7","updated":"2024-07-31 08:29:15.000000000","message":"I meant retrying to get additional info if it\u0027s missing after the wait.","commit_id":"6e1b65e103bf9c14b812ebc40990d2b6c1865314"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"d6f22576e19b8074042ac9708c5032180bd10caa","unresolved":true,"context_lines":[{"line_number":791,"context_line":"            # Wait for multipath device to be ready for I/O"},{"line_number":792,"context_line":"            self._linuxscsi.wait_for_mpath_device(mpath)"},{"line_number":793,"context_line":"            if not wwn:"},{"line_number":794,"context_line":"                wwn \u003d self._linuxscsi.get_sysfs_wwn(found, mpath)"},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"        assert wwn is not None"},{"line_number":797,"context_line":"        return self._get_connect_result(connection_properties, wwn, found,"}],"source_content_type":"text/x-python","patch_set":7,"id":"efe8e856_2aaefa2f","line":794,"in_reply_to":"b7e4cfc4_0e7e280f","updated":"2024-08-02 18:26:43.000000000","message":"We can do that but as i mentioned, right now the way to get WWN is different for iSCSI (from sysfs) from FC (from page x083), should i make them consistent before adding that additional wwn check in FC?","commit_id":"6e1b65e103bf9c14b812ebc40990d2b6c1865314"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4342f45b36ebc207d62049b6cdfff00e814c8b0c","unresolved":true,"context_lines":[{"line_number":791,"context_line":"            # Wait for multipath device to be ready for I/O"},{"line_number":792,"context_line":"            self._linuxscsi.wait_for_mpath_device(mpath)"},{"line_number":793,"context_line":"            if not wwn:"},{"line_number":794,"context_line":"                wwn \u003d self._linuxscsi.get_sysfs_wwn(found, mpath)"},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"        assert wwn is not None"},{"line_number":797,"context_line":"        return self._get_connect_result(connection_properties, wwn, found,"}],"source_content_type":"text/x-python","patch_set":7,"id":"6c353089_3818bee7","line":794,"in_reply_to":"ca64c477_729dbb4b","updated":"2024-07-30 19:07:21.000000000","message":"If you are referring to getting the WWN from sysfs then YES. currently we are using get_scsi_wwn method in FC which reads from page 83 which we discourage IIRC. we can do that in a separate patch.","commit_id":"6e1b65e103bf9c14b812ebc40990d2b6c1865314"}],"os_brick/opts.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8a519d5bc861efdcbf638ea2688a97c02627aef6","unresolved":true,"context_lines":[{"line_number":25,"context_line":"                    \u0027locks should use the same directory.\u0027),"},{"line_number":26,"context_line":"    cfg.IntOpt(\u0027wait_mpath_device_retries\u0027,"},{"line_number":27,"context_line":"               default\u003d3,"},{"line_number":28,"context_line":"               help\u003d\u0027After the multipath device is created, it might take \u0027"},{"line_number":29,"context_line":"                    \u0027some time to get ready for I/O which we check with the \u0027"},{"line_number":30,"context_line":"                    \u0027``multipath -C`` command. This config value denotes the \u0027"},{"line_number":31,"context_line":"                    \u0027number of retry attempts we will make with the command \u0027"},{"line_number":32,"context_line":"                    \u0027to check if the device is ready for I/O. See \u0027"},{"line_number":33,"context_line":"                    \u0027related ``wait_mpath_device_interval`` config option.\u0027),"},{"line_number":34,"context_line":"    cfg.IntOpt(\u0027wait_mpath_device_interval\u0027,"},{"line_number":35,"context_line":"               default\u003d2,"},{"line_number":36,"context_line":"               help\u003d\u0027This value denotes the time interval in seconds between \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"c48904ee_37bfe2dc","line":33,"range":{"start_line":28,"start_character":0,"end_line":33,"end_character":77},"updated":"2024-07-30 10:55:02.000000000","message":"nit: A bit verbose:\n\n```\nNumber of retries for the multipath device to be ready for I/O after it was created.\nReadiness is checked with ``multipath -C``.\nSee related ``wait_mpath_device_interval`` config option.\n```","commit_id":"6e1b65e103bf9c14b812ebc40990d2b6c1865314"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4342f45b36ebc207d62049b6cdfff00e814c8b0c","unresolved":false,"context_lines":[{"line_number":25,"context_line":"                    \u0027locks should use the same directory.\u0027),"},{"line_number":26,"context_line":"    cfg.IntOpt(\u0027wait_mpath_device_retries\u0027,"},{"line_number":27,"context_line":"               default\u003d3,"},{"line_number":28,"context_line":"               help\u003d\u0027After the multipath device is created, it might take \u0027"},{"line_number":29,"context_line":"                    \u0027some time to get ready for I/O which we check with the \u0027"},{"line_number":30,"context_line":"                    \u0027``multipath -C`` command. This config value denotes the \u0027"},{"line_number":31,"context_line":"                    \u0027number of retry attempts we will make with the command \u0027"},{"line_number":32,"context_line":"                    \u0027to check if the device is ready for I/O. See \u0027"},{"line_number":33,"context_line":"                    \u0027related ``wait_mpath_device_interval`` config option.\u0027),"},{"line_number":34,"context_line":"    cfg.IntOpt(\u0027wait_mpath_device_interval\u0027,"},{"line_number":35,"context_line":"               default\u003d2,"},{"line_number":36,"context_line":"               help\u003d\u0027This value denotes the time interval in seconds between \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"fcd9ca51_b423b664","line":33,"range":{"start_line":28,"start_character":0,"end_line":33,"end_character":77},"in_reply_to":"c48904ee_37bfe2dc","updated":"2024-07-30 19:07:21.000000000","message":"Done","commit_id":"6e1b65e103bf9c14b812ebc40990d2b6c1865314"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8a519d5bc861efdcbf638ea2688a97c02627aef6","unresolved":true,"context_lines":[{"line_number":31,"context_line":"                    \u0027number of retry attempts we will make with the command \u0027"},{"line_number":32,"context_line":"                    \u0027to check if the device is ready for I/O. See \u0027"},{"line_number":33,"context_line":"                    \u0027related ``wait_mpath_device_interval`` config option.\u0027),"},{"line_number":34,"context_line":"    cfg.IntOpt(\u0027wait_mpath_device_interval\u0027,"},{"line_number":35,"context_line":"               default\u003d2,"},{"line_number":36,"context_line":"               help\u003d\u0027This value denotes the time interval in seconds between \u0027"},{"line_number":37,"context_line":"                    \u0027the ``wait_mpath_device_retries`` attempts to check if \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"d00c4465_fc84fe99","line":34,"range":{"start_line":34,"start_character":16,"end_line":34,"end_character":42},"updated":"2024-07-30 10:55:02.000000000","message":"nit: I think this is a base, not an interval: `wait_mpath_device_wait_base`","commit_id":"6e1b65e103bf9c14b812ebc40990d2b6c1865314"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4342f45b36ebc207d62049b6cdfff00e814c8b0c","unresolved":true,"context_lines":[{"line_number":31,"context_line":"                    \u0027number of retry attempts we will make with the command \u0027"},{"line_number":32,"context_line":"                    \u0027to check if the device is ready for I/O. See \u0027"},{"line_number":33,"context_line":"                    \u0027related ``wait_mpath_device_interval`` config option.\u0027),"},{"line_number":34,"context_line":"    cfg.IntOpt(\u0027wait_mpath_device_interval\u0027,"},{"line_number":35,"context_line":"               default\u003d2,"},{"line_number":36,"context_line":"               help\u003d\u0027This value denotes the time interval in seconds between \u0027"},{"line_number":37,"context_line":"                    \u0027the ``wait_mpath_device_retries`` attempts to check if \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"f74dbecf_cee598ed","line":34,"range":{"start_line":34,"start_character":16,"end_line":34,"end_character":42},"in_reply_to":"d00c4465_fc84fe99","updated":"2024-07-30 19:07:21.000000000","message":"see my reply in the comment below","commit_id":"6e1b65e103bf9c14b812ebc40990d2b6c1865314"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"522b57b085c1c23e0b7f6aa212968325bc5db93e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"                    \u0027number of retry attempts we will make with the command \u0027"},{"line_number":32,"context_line":"                    \u0027to check if the device is ready for I/O. See \u0027"},{"line_number":33,"context_line":"                    \u0027related ``wait_mpath_device_interval`` config option.\u0027),"},{"line_number":34,"context_line":"    cfg.IntOpt(\u0027wait_mpath_device_interval\u0027,"},{"line_number":35,"context_line":"               default\u003d2,"},{"line_number":36,"context_line":"               help\u003d\u0027This value denotes the time interval in seconds between \u0027"},{"line_number":37,"context_line":"                    \u0027the ``wait_mpath_device_retries`` attempts to check if \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"e8d3971f_a4d97da5","line":34,"range":{"start_line":34,"start_character":16,"end_line":34,"end_character":42},"in_reply_to":"f74dbecf_cee598ed","updated":"2024-08-02 18:38:37.000000000","message":"Done","commit_id":"6e1b65e103bf9c14b812ebc40990d2b6c1865314"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8a519d5bc861efdcbf638ea2688a97c02627aef6","unresolved":true,"context_lines":[{"line_number":33,"context_line":"                    \u0027related ``wait_mpath_device_interval`` config option.\u0027),"},{"line_number":34,"context_line":"    cfg.IntOpt(\u0027wait_mpath_device_interval\u0027,"},{"line_number":35,"context_line":"               default\u003d2,"},{"line_number":36,"context_line":"               help\u003d\u0027This value denotes the time interval in seconds between \u0027"},{"line_number":37,"context_line":"                    \u0027the ``wait_mpath_device_retries`` attempts to check if \u0027"},{"line_number":38,"context_line":"                    \u0027the multipath device is ready for I/O. Note that the \u0027"},{"line_number":39,"context_line":"                    \u0027wait time is exponential based on the equation \u0027"},{"line_number":40,"context_line":"                    \u0027``2 ^ (retries - 1) * interval`` so a combination of 3 \u0027"},{"line_number":41,"context_line":"                    \u0027retries and 2 second interval will yield: 2, 4 and 8 \u0027"},{"line_number":42,"context_line":"                    \u0027second intervals respectively.\u0027),"},{"line_number":43,"context_line":"]"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"cfg.CONF.register_opts(_opts, group\u003d\u0027os_brick\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"98e94638_daf395c6","line":42,"range":{"start_line":36,"start_character":1,"end_line":42,"end_character":54},"updated":"2024-07-30 10:55:02.000000000","message":"nit: A bit verbose, and as far as I know we use the exponential backoff mechanism, so the formula is something like ``base ^ retry``\n\n```\nBase value for exponential backoff retries waiting for multipath device to be ready for I/O.\nMax number of retries is set in ``wait_mpath_device_retries``.\nTime in seconds to wait for each retry is ``base ^ retry``, so for 3 retries and 2 second base will yield: 2, 4 and 8 seconds intervals.\n```","commit_id":"6e1b65e103bf9c14b812ebc40990d2b6c1865314"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"45fd58d45b8a59e69e6146ba27ea6be53cdb6ca8","unresolved":true,"context_lines":[{"line_number":33,"context_line":"                    \u0027related ``wait_mpath_device_interval`` config option.\u0027),"},{"line_number":34,"context_line":"    cfg.IntOpt(\u0027wait_mpath_device_interval\u0027,"},{"line_number":35,"context_line":"               default\u003d2,"},{"line_number":36,"context_line":"               help\u003d\u0027This value denotes the time interval in seconds between \u0027"},{"line_number":37,"context_line":"                    \u0027the ``wait_mpath_device_retries`` attempts to check if \u0027"},{"line_number":38,"context_line":"                    \u0027the multipath device is ready for I/O. Note that the \u0027"},{"line_number":39,"context_line":"                    \u0027wait time is exponential based on the equation \u0027"},{"line_number":40,"context_line":"                    \u0027``2 ^ (retries - 1) * interval`` so a combination of 3 \u0027"},{"line_number":41,"context_line":"                    \u0027retries and 2 second interval will yield: 2, 4 and 8 \u0027"},{"line_number":42,"context_line":"                    \u0027second intervals respectively.\u0027),"},{"line_number":43,"context_line":"]"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"cfg.CONF.register_opts(_opts, group\u003d\u0027os_brick\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"835715ed_1595f89b","line":42,"range":{"start_line":36,"start_character":1,"end_line":42,"end_character":54},"in_reply_to":"4f5d7ddf_7c9f47db","updated":"2024-07-31 08:29:15.000000000","message":"You are right, I forgot I had added the interval part, since most times exponential backoff implementations only uses the base.\nSince the base is always 2 it would probably be better to replace the base name with 2 like you had before.\nAnd the calculations seem wrong to me, because the base defaults to 2, you are changing the interval from 1 to 2, and the power is of retry not retry - 1, so it will be 4, 8, 16 instead of the usual 2, 4, 8.","commit_id":"6e1b65e103bf9c14b812ebc40990d2b6c1865314"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"522b57b085c1c23e0b7f6aa212968325bc5db93e","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                    \u0027related ``wait_mpath_device_interval`` config option.\u0027),"},{"line_number":34,"context_line":"    cfg.IntOpt(\u0027wait_mpath_device_interval\u0027,"},{"line_number":35,"context_line":"               default\u003d2,"},{"line_number":36,"context_line":"               help\u003d\u0027This value denotes the time interval in seconds between \u0027"},{"line_number":37,"context_line":"                    \u0027the ``wait_mpath_device_retries`` attempts to check if \u0027"},{"line_number":38,"context_line":"                    \u0027the multipath device is ready for I/O. Note that the \u0027"},{"line_number":39,"context_line":"                    \u0027wait time is exponential based on the equation \u0027"},{"line_number":40,"context_line":"                    \u0027``2 ^ (retries - 1) * interval`` so a combination of 3 \u0027"},{"line_number":41,"context_line":"                    \u0027retries and 2 second interval will yield: 2, 4 and 8 \u0027"},{"line_number":42,"context_line":"                    \u0027second intervals respectively.\u0027),"},{"line_number":43,"context_line":"]"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"cfg.CONF.register_opts(_opts, group\u003d\u0027os_brick\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fffa8b62_c87a9f65","line":42,"range":{"start_line":36,"start_character":1,"end_line":42,"end_character":54},"in_reply_to":"835715ed_1595f89b","updated":"2024-08-02 18:38:37.000000000","message":"Done","commit_id":"6e1b65e103bf9c14b812ebc40990d2b6c1865314"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4342f45b36ebc207d62049b6cdfff00e814c8b0c","unresolved":true,"context_lines":[{"line_number":33,"context_line":"                    \u0027related ``wait_mpath_device_interval`` config option.\u0027),"},{"line_number":34,"context_line":"    cfg.IntOpt(\u0027wait_mpath_device_interval\u0027,"},{"line_number":35,"context_line":"               default\u003d2,"},{"line_number":36,"context_line":"               help\u003d\u0027This value denotes the time interval in seconds between \u0027"},{"line_number":37,"context_line":"                    \u0027the ``wait_mpath_device_retries`` attempts to check if \u0027"},{"line_number":38,"context_line":"                    \u0027the multipath device is ready for I/O. Note that the \u0027"},{"line_number":39,"context_line":"                    \u0027wait time is exponential based on the equation \u0027"},{"line_number":40,"context_line":"                    \u0027``2 ^ (retries - 1) * interval`` so a combination of 3 \u0027"},{"line_number":41,"context_line":"                    \u0027retries and 2 second interval will yield: 2, 4 and 8 \u0027"},{"line_number":42,"context_line":"                    \u0027second intervals respectively.\u0027),"},{"line_number":43,"context_line":"]"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"cfg.CONF.register_opts(_opts, group\u003d\u0027os_brick\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"4f5d7ddf_7c9f47db","line":42,"range":{"start_line":36,"start_character":1,"end_line":42,"end_character":54},"in_reply_to":"98e94638_daf395c6","updated":"2024-07-30 19:07:21.000000000","message":"Correct me if my understanding is wrong here but we have the following in the code[1]\n\nexp \u003d backoff_rate \\*\\* shared_data[0]\nwait_for \u003d max(0, interval \\* exp)\n\nwhere,\nbackoff_rate defaults to 2\nshared_data[0] has initial value of 0 and increments by 1 (till number of retries)\nwait_for is set to interval * exp\n\nso the formula becomes,\n\nbackoff_rate ^ [0...retries] * interval\n\n[1] https://github.com/openstack/os-brick/blob/b290711cfb23603627e9e28c733fceb5184589b5/os_brick/privileged/rootwrap.py#L104-L105","commit_id":"6e1b65e103bf9c14b812ebc40990d2b6c1865314"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"45fd58d45b8a59e69e6146ba27ea6be53cdb6ca8","unresolved":true,"context_lines":[{"line_number":30,"context_line":"                    \u0027``multipath -C``. See related \u0027"},{"line_number":31,"context_line":"                    \u0027``wait_mpath_device_interval`` config option.\u0027),"},{"line_number":32,"context_line":"    cfg.IntOpt(\u0027wait_mpath_device_interval\u0027,"},{"line_number":33,"context_line":"               default\u003d2,"},{"line_number":34,"context_line":"               help\u003d\u0027Interval value to wait for multipath device to be ready \u0027"},{"line_number":35,"context_line":"                    \u0027for I/O. Max number of retries is set in \u0027"},{"line_number":36,"context_line":"                    \u0027``wait_mpath_device_retries``. Time in seconds to wait \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"38f70105_f0181d3a","line":33,"range":{"start_line":33,"start_character":0,"end_line":33,"end_character":2},"updated":"2024-07-31 08:29:15.000000000","message":"-1: This changes current behavior, shouldn\u0027t we default to 1 so we get 2, 4, 8 instead of 4, 8, 16?","commit_id":"30ace66f4047f46b04552230f474e818cfd24aac"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"d6f22576e19b8074042ac9708c5032180bd10caa","unresolved":true,"context_lines":[{"line_number":30,"context_line":"                    \u0027``multipath -C``. See related \u0027"},{"line_number":31,"context_line":"                    \u0027``wait_mpath_device_interval`` config option.\u0027),"},{"line_number":32,"context_line":"    cfg.IntOpt(\u0027wait_mpath_device_interval\u0027,"},{"line_number":33,"context_line":"               default\u003d2,"},{"line_number":34,"context_line":"               help\u003d\u0027Interval value to wait for multipath device to be ready \u0027"},{"line_number":35,"context_line":"                    \u0027for I/O. Max number of retries is set in \u0027"},{"line_number":36,"context_line":"                    \u0027``wait_mpath_device_retries``. Time in seconds to wait \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"f51fb5d2_df2f0baa","line":33,"range":{"start_line":33,"start_character":0,"end_line":33,"end_character":2},"in_reply_to":"38f70105_f0181d3a","updated":"2024-08-02 18:26:43.000000000","message":"You are right, we don\u0027t wait after first attempt so this should be 1 and the attempts should be changed default to 4 (1 main attempt + 3 retries)","commit_id":"30ace66f4047f46b04552230f474e818cfd24aac"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"522b57b085c1c23e0b7f6aa212968325bc5db93e","unresolved":false,"context_lines":[{"line_number":30,"context_line":"                    \u0027``multipath -C``. See related \u0027"},{"line_number":31,"context_line":"                    \u0027``wait_mpath_device_interval`` config option.\u0027),"},{"line_number":32,"context_line":"    cfg.IntOpt(\u0027wait_mpath_device_interval\u0027,"},{"line_number":33,"context_line":"               default\u003d2,"},{"line_number":34,"context_line":"               help\u003d\u0027Interval value to wait for multipath device to be ready \u0027"},{"line_number":35,"context_line":"                    \u0027for I/O. Max number of retries is set in \u0027"},{"line_number":36,"context_line":"                    \u0027``wait_mpath_device_retries``. Time in seconds to wait \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"5e03168a_e875a260","line":33,"range":{"start_line":33,"start_character":0,"end_line":33,"end_character":2},"in_reply_to":"f51fb5d2_df2f0baa","updated":"2024-08-02 18:38:37.000000000","message":"Done","commit_id":"30ace66f4047f46b04552230f474e818cfd24aac"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8603532d8d7edcd2e9c7e8e0143c37876e90a990","unresolved":true,"context_lines":[{"line_number":24,"context_line":"                    \u0027controllers where Glance uses Cinder as a backend, as \u0027"},{"line_number":25,"context_line":"                    \u0027locks should use the same directory.\u0027),"},{"line_number":26,"context_line":"    cfg.IntOpt(\u0027wait_mpath_device_attempts\u0027,"},{"line_number":27,"context_line":"               default\u003d4,"},{"line_number":28,"context_line":"               help\u003d\u0027Number of attempts for the multipath device to be ready \u0027"},{"line_number":29,"context_line":"                    \u0027for I/O after it was created. Readiness is checked with \u0027"},{"line_number":30,"context_line":"                    \u0027``multipath -C``. See related \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"ab5d50bb_479184ac","line":27,"updated":"2024-08-05 07:40:03.000000000","message":"?: Should we set a minimum value of 1?","commit_id":"30aa1f3a06cd3dae6e0c77f9e39ce18fe0cff8ba"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"85ba6c901bdf75fa8124e39325c73c111b6fec4f","unresolved":false,"context_lines":[{"line_number":24,"context_line":"                    \u0027controllers where Glance uses Cinder as a backend, as \u0027"},{"line_number":25,"context_line":"                    \u0027locks should use the same directory.\u0027),"},{"line_number":26,"context_line":"    cfg.IntOpt(\u0027wait_mpath_device_attempts\u0027,"},{"line_number":27,"context_line":"               default\u003d4,"},{"line_number":28,"context_line":"               help\u003d\u0027Number of attempts for the multipath device to be ready \u0027"},{"line_number":29,"context_line":"                    \u0027for I/O after it was created. Readiness is checked with \u0027"},{"line_number":30,"context_line":"                    \u0027``multipath -C``. See related \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"51978279_402a9ea5","line":27,"in_reply_to":"ab5d50bb_479184ac","updated":"2024-08-05 09:26:29.000000000","message":"Done","commit_id":"30aa1f3a06cd3dae6e0c77f9e39ce18fe0cff8ba"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8603532d8d7edcd2e9c7e8e0143c37876e90a990","unresolved":true,"context_lines":[{"line_number":31,"context_line":"                    \u0027``wait_mpath_device_interval`` config option. Default \u0027"},{"line_number":32,"context_line":"                    \u0027value is 4.\u0027),"},{"line_number":33,"context_line":"    cfg.IntOpt(\u0027wait_mpath_device_interval\u0027,"},{"line_number":34,"context_line":"               default\u003d1,"},{"line_number":35,"context_line":"               help\u003d\u0027Interval value to wait for multipath device to be ready \u0027"},{"line_number":36,"context_line":"                    \u0027for I/O. Max number of attempts is set in \u0027"},{"line_number":37,"context_line":"                    \u0027``wait_mpath_device_attempts``. Time in seconds to wait \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"3e3a0480_b9f63f7d","line":34,"updated":"2024-08-05 07:40:03.000000000","message":"?: Should we set a minimum value of 1 as well?","commit_id":"30aa1f3a06cd3dae6e0c77f9e39ce18fe0cff8ba"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"85ba6c901bdf75fa8124e39325c73c111b6fec4f","unresolved":false,"context_lines":[{"line_number":31,"context_line":"                    \u0027``wait_mpath_device_interval`` config option. Default \u0027"},{"line_number":32,"context_line":"                    \u0027value is 4.\u0027),"},{"line_number":33,"context_line":"    cfg.IntOpt(\u0027wait_mpath_device_interval\u0027,"},{"line_number":34,"context_line":"               default\u003d1,"},{"line_number":35,"context_line":"               help\u003d\u0027Interval value to wait for multipath device to be ready \u0027"},{"line_number":36,"context_line":"                    \u0027for I/O. Max number of attempts is set in \u0027"},{"line_number":37,"context_line":"                    \u0027``wait_mpath_device_attempts``. Time in seconds to wait \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a2fc8a3_675d7503","line":34,"in_reply_to":"3e3a0480_b9f63f7d","updated":"2024-08-05 09:26:29.000000000","message":"Done","commit_id":"30aa1f3a06cd3dae6e0c77f9e39ce18fe0cff8ba"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8603532d8d7edcd2e9c7e8e0143c37876e90a990","unresolved":true,"context_lines":[{"line_number":38,"context_line":"                    \u0027for each retry is ``base ^ attempt * interval``, so for \u0027"},{"line_number":39,"context_line":"                    \u00274 attempts (1 attempt 3 retries) and 1 second interval \u0027"},{"line_number":40,"context_line":"                    \u0027will yield: 2, 4 and 8 seconds. Note that there is no \u0027"},{"line_number":41,"context_line":"                    \u0027wait after first attempt. Default value is 1.\u0027),"},{"line_number":42,"context_line":"]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"cfg.CONF.register_opts(_opts, group\u003d\u0027os_brick\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"f9aff42b_9cdc21d8","line":41,"range":{"start_line":41,"start_character":26,"end_line":41,"end_character":31},"updated":"2024-08-05 07:40:03.000000000","message":"-1: before","commit_id":"30aa1f3a06cd3dae6e0c77f9e39ce18fe0cff8ba"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"85ba6c901bdf75fa8124e39325c73c111b6fec4f","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                    \u0027for each retry is ``base ^ attempt * interval``, so for \u0027"},{"line_number":39,"context_line":"                    \u00274 attempts (1 attempt 3 retries) and 1 second interval \u0027"},{"line_number":40,"context_line":"                    \u0027will yield: 2, 4 and 8 seconds. Note that there is no \u0027"},{"line_number":41,"context_line":"                    \u0027wait after first attempt. Default value is 1.\u0027),"},{"line_number":42,"context_line":"]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"cfg.CONF.register_opts(_opts, group\u003d\u0027os_brick\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"f4dfa30f_e6d943b4","line":41,"range":{"start_line":41,"start_character":26,"end_line":41,"end_character":31},"in_reply_to":"f9aff42b_9cdc21d8","updated":"2024-08-05 09:26:29.000000000","message":"Done","commit_id":"30aa1f3a06cd3dae6e0c77f9e39ce18fe0cff8ba"}],"releasenotes/notes/wait-mpath-io-703605e74ee009ef.yaml":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8a519d5bc861efdcbf638ea2688a97c02627aef6","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    `Bug #2067949 \u003chttps://bugs.launchpad.net/cinder/+bug/2067949\u003e`_:"},{"line_number":5,"context_line":"    Fixed issue where we try to write into a multipath device and fail"},{"line_number":6,"context_line":"    since it is not ready for I/O. Now we wait for the multipath device"},{"line_number":7,"context_line":"    to be ready to perform read/write before returning it to the caller."},{"line_number":8,"context_line":"    We introduced 2 new config options to make the wait time"},{"line_number":9,"context_line":"    configurable, ``wait_mpath_device_retries`` and"},{"line_number":10,"context_line":"    ``wait_mpath_device_interval`` which defaults to 3 attempts and"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"8ebd7d98_71de0b6e","line":7,"range":{"start_line":6,"start_character":35,"end_line":7,"end_character":72},"updated":"2024-07-30 10:55:02.000000000","message":"nit: We actually wait until the I/O is likely to succeed, which is not exactly the same thing.","commit_id":"6e1b65e103bf9c14b812ebc40990d2b6c1865314"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4342f45b36ebc207d62049b6cdfff00e814c8b0c","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    `Bug #2067949 \u003chttps://bugs.launchpad.net/cinder/+bug/2067949\u003e`_:"},{"line_number":5,"context_line":"    Fixed issue where we try to write into a multipath device and fail"},{"line_number":6,"context_line":"    since it is not ready for I/O. Now we wait for the multipath device"},{"line_number":7,"context_line":"    to be ready to perform read/write before returning it to the caller."},{"line_number":8,"context_line":"    We introduced 2 new config options to make the wait time"},{"line_number":9,"context_line":"    configurable, ``wait_mpath_device_retries`` and"},{"line_number":10,"context_line":"    ``wait_mpath_device_interval`` which defaults to 3 attempts and"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"c4d8c9a0_5818494b","line":7,"range":{"start_line":6,"start_character":35,"end_line":7,"end_character":72},"in_reply_to":"8ebd7d98_71de0b6e","updated":"2024-07-30 19:07:21.000000000","message":"Done","commit_id":"6e1b65e103bf9c14b812ebc40990d2b6c1865314"}]}
