)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"ec252fa2fbc5ffe1034de3b8f958a35c33bf6434","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Rutuja Pawar \u003crutuja.pawar@ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-10-13 15:10:02 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fixed IBM Storwize/FlashSystem GMCV volume resize failure by waiting for replication relationship synchronization and added configurable sync timeout and polling options."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I0fd46412be7a8f7520d5a57692cf06005d46fbdf"},{"line_number":10,"context_line":"Signed-off-by: Rutuja Pawar \u003crutuja.pawar@ibm.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bbc3bbb3_775544e4","line":7,"updated":"2026-10-15 14:19:20.000000000","message":"Please add the launchpad bug 2155894 in the commit message:\n\nSyntax:\nCloses-Bug: #2155894","commit_id":"a558107a3a1f2cbf537e8b9c1596fc8aa02823a7"},{"author":{"_account_id":38319,"name":"Rutuja Pawar","email":"rutuja.pawar@ibm.com","username":"rutuja.pawar"},"change_message_id":"ad2506d8e4d61c94cdf4151e6f5ba6fdb4f050eb","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Rutuja Pawar \u003crutuja.pawar@ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-10-13 15:10:02 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fixed IBM Storwize/FlashSystem GMCV volume resize failure by waiting for replication relationship synchronization and added configurable sync timeout and polling options."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I0fd46412be7a8f7520d5a57692cf06005d46fbdf"},{"line_number":10,"context_line":"Signed-off-by: Rutuja Pawar \u003crutuja.pawar@ibm.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"4e5161f6_d0f8c080","line":7,"in_reply_to":"bbc3bbb3_775544e4","updated":"2026-11-04 09:18:09.000000000","message":"Done","commit_id":"a558107a3a1f2cbf537e8b9c1596fc8aa02823a7"}],"cinder/tests/unit/volume/drivers/ibm/test_storwize_svc.py":[{"author":{"_account_id":37888,"name":"Akshay Ranade","display_name":"Akshay Ranade","email":"akshay.ranade@ibm.com","username":"rakshay"},"change_message_id":"717804f119ea5c7e9986069f6248fb82bfbca2bb","unresolved":true,"context_lines":[{"line_number":13717,"context_line":"        self.driver.delete_volume(volume)"},{"line_number":13718,"context_line":"        self._validate_replic_vol_deletion(volume)"},{"line_number":13719,"context_line":""},{"line_number":13720,"context_line":"    def test_storwize_extend_gmcv_volume_wait_sync_timeout(self):"},{"line_number":13721,"context_line":"        \"\"\"GMCV resize fails when sync times out — exception raised, original"},{"line_number":13722,"context_line":""},{"line_number":13723,"context_line":"        size preserved and GMCV relationship rolled back."}],"source_content_type":"text/x-python","patch_set":4,"id":"c64086a4_eef0a792","line":13720,"updated":"2026-11-13 18:57:45.000000000","message":"This UT only verifies rollback capability. The timeout logic is still not tested here. \nPlease keep this UT as well and rename it accordingly. The real timeout UT is still missing.","commit_id":"b5db6b0cc0b927b10bff2169a579e6477580d877"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_common.py":[{"author":{"_account_id":37888,"name":"Akshay Ranade","display_name":"Akshay Ranade","email":"akshay.ranade@ibm.com","username":"rakshay"},"change_message_id":"717804f119ea5c7e9986069f6248fb82bfbca2bb","unresolved":true,"context_lines":[{"line_number":183,"context_line":"                help\u003d\u0027Parameter to allow or prevent volumes with legacy \u0027"},{"line_number":184,"context_line":"                     \u0027FlashCopy mappings to be part of volume_group_enabled \u0027"},{"line_number":185,"context_line":"                     \u0027and temporary_volume_group_enabled groups.\u0027),"},{"line_number":186,"context_line":"    cfg.IntOpt(\u0027resize_replication_sync_timeout\u0027,"},{"line_number":187,"context_line":"               default\u003d300,"},{"line_number":188,"context_line":"               min\u003d60, max\u003d3600,"},{"line_number":189,"context_line":"               help\u003d\u0027Maximum time in seconds to wait for replication \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"76fa8ca8_41cc9d57","line":186,"updated":"2026-11-13 18:57:45.000000000","message":"please add prefix storwize_svc_ to every option being introduced.\n\nthese option must also be noted in release notes.","commit_id":"b5db6b0cc0b927b10bff2169a579e6477580d877"},{"author":{"_account_id":37888,"name":"Akshay Ranade","display_name":"Akshay Ranade","email":"akshay.ranade@ibm.com","username":"rakshay"},"change_message_id":"717804f119ea5c7e9986069f6248fb82bfbca2bb","unresolved":true,"context_lines":[{"line_number":4554,"context_line":""},{"line_number":4555,"context_line":"    def _wait_for_relationship_sync(self, volume_name, rc_name):"},{"line_number":4556,"context_line":"        \"\"\"Wait for replication relationship to reach c"},{"line_number":4557,"context_line":"        onsistent_synchronized state."},{"line_number":4558,"context_line":""},{"line_number":4559,"context_line":"        After converting GMCV to GM (changing cycling mode"},{"line_number":4560,"context_line":"        from \u0027multi\u0027 to \u0027none\u0027), the relationship needs time to"}],"source_content_type":"text/x-python","patch_set":4,"id":"705bf629_ac8f70d7","line":4557,"updated":"2026-11-13 18:57:45.000000000","message":"please correct this split word.","commit_id":"b5db6b0cc0b927b10bff2169a579e6477580d877"},{"author":{"_account_id":37888,"name":"Akshay Ranade","display_name":"Akshay Ranade","email":"akshay.ranade@ibm.com","username":"rakshay"},"change_message_id":"717804f119ea5c7e9986069f6248fb82bfbca2bb","unresolved":true,"context_lines":[{"line_number":4575,"context_line":"        last_state \u003d None"},{"line_number":4576,"context_line":""},{"line_number":4577,"context_line":"        while time.time() - start_time \u003c timeout:"},{"line_number":4578,"context_line":"            rel_info \u003d self._helpers.get_relationship_info(volume_name)"},{"line_number":4579,"context_line":"            if rel_info:"},{"line_number":4580,"context_line":"                state \u003d rel_info.get(\u0027state\u0027)"},{"line_number":4581,"context_line":"                last_state \u003d state"}],"source_content_type":"text/x-python","patch_set":4,"id":"8e921e0f_a3d5b565","line":4578,"updated":"2026-11-13 18:57:45.000000000","message":"for whatever reasons, a None rel_info will put this code in sleep for the poll_interval and the retries follows until timeout. We need to fail fast here. Please add a UT for this scenario as well.","commit_id":"b5db6b0cc0b927b10bff2169a579e6477580d877"},{"author":{"_account_id":37888,"name":"Akshay Ranade","display_name":"Akshay Ranade","email":"akshay.ranade@ibm.com","username":"rakshay"},"change_message_id":"717804f119ea5c7e9986069f6248fb82bfbca2bb","unresolved":true,"context_lines":[{"line_number":4581,"context_line":"                last_state \u003d state"},{"line_number":4582,"context_line":"                LOG.info(\u0027Relationship %s current state: %s\u0027, rc_name, state)"},{"line_number":4583,"context_line":""},{"line_number":4584,"context_line":"                if state \u003d\u003d \u0027consistent_synchronized\u0027:"},{"line_number":4585,"context_line":"                    elapsed \u003d time.time() - start_time"},{"line_number":4586,"context_line":"                    LOG.info(\u0027Relationship %s reached consistent_synchronized \u0027"},{"line_number":4587,"context_line":"                             \u0027state after %.2f seconds\u0027, rc_name, elapsed)"}],"source_content_type":"text/x-python","patch_set":4,"id":"4bed4ebf_ed8b8f51","line":4584,"updated":"2026-11-13 18:57:45.000000000","message":"please make use of constants wherever applicable and define one if not present already.","commit_id":"b5db6b0cc0b927b10bff2169a579e6477580d877"},{"author":{"_account_id":37888,"name":"Akshay Ranade","display_name":"Akshay Ranade","email":"akshay.ranade@ibm.com","username":"rakshay"},"change_message_id":"717804f119ea5c7e9986069f6248fb82bfbca2bb","unresolved":true,"context_lines":[{"line_number":4586,"context_line":"                    LOG.info(\u0027Relationship %s reached consistent_synchronized \u0027"},{"line_number":4587,"context_line":"                             \u0027state after %.2f seconds\u0027, rc_name, elapsed)"},{"line_number":4588,"context_line":"                    return"},{"line_number":4589,"context_line":"                elif state in [\"inconsistent_stopped\", \"consistent_stopped\","},{"line_number":4590,"context_line":"                               \"idling\", \"idling_disconnected\","},{"line_number":4591,"context_line":"                               \"inconsistent_disconnected\","},{"line_number":4592,"context_line":"                               \"consistent_disconnected\"]:"}],"source_content_type":"text/x-python","patch_set":4,"id":"cd174ea6_cd1ea4d1","line":4589,"updated":"2026-11-13 18:57:45.000000000","message":"why are we keeping *_disconnected states in the same bucket as *_stopped? Won;t the *_disconnected state be recoverable? if yes will this code unnecessarily does a rollback and hence a resync?","commit_id":"b5db6b0cc0b927b10bff2169a579e6477580d877"},{"author":{"_account_id":37888,"name":"Akshay Ranade","display_name":"Akshay Ranade","email":"akshay.ranade@ibm.com","username":"rakshay"},"change_message_id":"717804f119ea5c7e9986069f6248fb82bfbca2bb","unresolved":true,"context_lines":[{"line_number":4596,"context_line":"                    LOG.error(msg)"},{"line_number":4597,"context_line":"                    raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":4598,"context_line":""},{"line_number":4599,"context_line":"            time.sleep(poll_interval)"},{"line_number":4600,"context_line":""},{"line_number":4601,"context_line":"        msg \u003d (_(\u0027Timeout occurred, extend failed. Relationship %(rc)s \u0027"},{"line_number":4602,"context_line":"                 \u0027did not reach consistent_synchronized state after \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"70361e1a_af3e100f","line":4599,"updated":"2026-11-13 18:57:45.000000000","message":"this can easily over-step the intended timeout value. consider a timeout of 60s and interval of 50s, this will end at 100s. So, for teh configured 60s wait it takes 100s to actually raise the exception. This holds true when we tend to set interval as close to timeout as possible.\nThe sleep should rather be: \n            remaining_timeout \u003d timeout - (time.time() - start_time)\n            time.sleep(max(0, min(poll_interval, remaining_timeout)))","commit_id":"b5db6b0cc0b927b10bff2169a579e6477580d877"},{"author":{"_account_id":37888,"name":"Akshay Ranade","display_name":"Akshay Ranade","email":"akshay.ranade@ibm.com","username":"rakshay"},"change_message_id":"717804f119ea5c7e9986069f6248fb82bfbca2bb","unresolved":true,"context_lines":[{"line_number":4603,"context_line":"                 \u0027%(timeout)d  seconds. Last known state: %(state)s\u0027)"},{"line_number":4604,"context_line":"               % {\u0027rc\u0027: rc_name, \u0027timeout\u0027: timeout,"},{"line_number":4605,"context_line":"                  \u0027state\u0027: last_state or \u0027unknown\u0027})"},{"line_number":4606,"context_line":"        LOG.error(msg)"},{"line_number":4607,"context_line":"        raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":4608,"context_line":""},{"line_number":4609,"context_line":"    def _extend_volume_op(self, volume, new_size, old_size\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"d21392ab_7eae3b2e","line":4606,"updated":"2026-11-13 18:57:45.000000000","message":"we are logging this error msg here and also sending it to callers except block. This must result in log duplication. please check once in the log for the correct scenario and avoid duplication.","commit_id":"b5db6b0cc0b927b10bff2169a579e6477580d877"},{"author":{"_account_id":37888,"name":"Akshay Ranade","display_name":"Akshay Ranade","email":"akshay.ranade@ibm.com","username":"rakshay"},"change_message_id":"717804f119ea5c7e9986069f6248fb82bfbca2bb","unresolved":true,"context_lines":[{"line_number":4736,"context_line":"                        # source_volume is the primary volume or"},{"line_number":4737,"context_line":"                        # onboarded auxiliary volume is primary"},{"line_number":4738,"context_line":"                        # [Reverse replication failover]"},{"line_number":4739,"context_line":"                        if storwize_const.GMCV_MULTI \u003d\u003d cyclingmode:"},{"line_number":4740,"context_line":"                            self._wait_for_relationship_sync("},{"line_number":4741,"context_line":"                                volume.name, rel_info[\u0027name\u0027])"},{"line_number":4742,"context_line":"                        target_helper.extend_vdisk(tgt_vol, extend_amt)"}],"source_content_type":"text/x-python","patch_set":4,"id":"03a27909_b2029dbd","line":4739,"updated":"2026-11-13 18:57:45.000000000","message":"in either cases, the call to _wait_for_relationship_sync is common. can we please reduce it to 1?","commit_id":"b5db6b0cc0b927b10bff2169a579e6477580d877"}]}
