)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"6b53c5e066042eca1f68d7a198339f5ebdace8e6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"a75476fb_8d736efd","updated":"2026-08-20 14:16:36.000000000","message":"Code looks good - please add a release note for this change :)","commit_id":"edadced03969a8ba514af3dfa132df92793dace2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a85cef7436f5d5f5d1e0a55126ca74f0b3223d8f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"bf16c233_cf4c87c7","updated":"2026-08-23 09:37:19.000000000","message":"Hey @siddharth.kumar1@dell.com\n\nPTAL at the comments inline","commit_id":"edadced03969a8ba514af3dfa132df92793dace2"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"055c671f0b06fce101617d556779bd1abcddd272","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"064da4f0_8b948ca7","updated":"2026-08-17 11:07:37.000000000","message":"Please review it.","commit_id":"edadced03969a8ba514af3dfa132df92793dace2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"24ec5a08975a13234122d1fcb8ce5a0cf7a2e03c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"5dec4d30_7d85a063","updated":"2026-08-25 11:03:58.000000000","message":"LGTM, thank you Siddharth. Could you please add a release note for this change?","commit_id":"9a913747262bd3b58049077b05f30ba929c26651"}],"manila/message/message_field.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a85cef7436f5d5f5d1e0a55126ca74f0b3223d8f","unresolved":true,"context_lines":[{"line_number":228,"context_line":"        TARGETED_RESTORE_UNSUPPORTED,"},{"line_number":229,"context_line":"        NEUTRON_SUBNET_FULL,"},{"line_number":230,"context_line":"        UNSUPPORTED_REPLICA_CREATE_CONFIG,"},{"line_number":231,"context_line":"        DRIVER_FAILED_REVERTING_TO_SNAPSHOT"},{"line_number":232,"context_line":"    )"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    # Exception and detail mappings"}],"source_content_type":"text/x-python","patch_set":1,"id":"e7e1cbf0_f9d84483","line":231,"range":{"start_line":231,"start_character":8,"end_line":231,"end_character":43},"updated":"2026-08-23 09:37:19.000000000","message":"add a trailing comma at the end of this line","commit_id":"edadced03969a8ba514af3dfa132df92793dace2"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"90f264e01d63302b88acc8a9c72ff8c737579cf7","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        TARGETED_RESTORE_UNSUPPORTED,"},{"line_number":229,"context_line":"        NEUTRON_SUBNET_FULL,"},{"line_number":230,"context_line":"        UNSUPPORTED_REPLICA_CREATE_CONFIG,"},{"line_number":231,"context_line":"        DRIVER_FAILED_REVERTING_TO_SNAPSHOT"},{"line_number":232,"context_line":"    )"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    # Exception and detail mappings"}],"source_content_type":"text/x-python","patch_set":1,"id":"f0a53093_cb620dd7","line":231,"range":{"start_line":231,"start_character":8,"end_line":231,"end_character":43},"in_reply_to":"e7e1cbf0_f9d84483","updated":"2026-08-25 04:54:28.000000000","message":"Added trailing comma after DRIVER_FAILED_REVERTING_TO_SNAPSHOT","commit_id":"edadced03969a8ba514af3dfa132df92793dace2"}],"manila/share/manager.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a85cef7436f5d5f5d1e0a55126ca74f0b3223d8f","unresolved":true,"context_lines":[{"line_number":5864,"context_line":"        for si in share_instances:"},{"line_number":5865,"context_line":"            si_dict \u003d self._get_share_instance_dict(context, si)"},{"line_number":5866,"context_line":"            self._update_share_status(context, si_dict)"},{"line_number":5867,"context_line":""},{"line_number":5868,"context_line":"    @periodic_task.periodic_task(spacing\u003dCONF.periodic_interval)"},{"line_number":5869,"context_line":"    @utils.require_driver_initialized"},{"line_number":5870,"context_line":"    def periodic_share_revert_status_update(self, context):"},{"line_number":5871,"context_line":"        \"\"\"Invokes share driver to update revert shares status.\"\"\""},{"line_number":5872,"context_line":"        LOG.debug(\"Updating status of revert share instances.\")"},{"line_number":5873,"context_line":"        share_instances \u003d self.db.share_instance_get_all_by_host("},{"line_number":5874,"context_line":"            context, self.host, with_share_data\u003dTrue,"},{"line_number":5875,"context_line":"            status\u003dconstants.STATUS_REVERTING_TO_SNAPSHOT)"},{"line_number":5876,"context_line":""},{"line_number":5877,"context_line":"        for si in share_instances:"},{"line_number":5878,"context_line":"            si_dict \u003d self._get_share_instance_dict(context, si)"},{"line_number":5879,"context_line":"            self._update_share_status(context, si_dict)"},{"line_number":5880,"context_line":""},{"line_number":5881,"context_line":"    def _update_share_status(self, context, share_instance):"},{"line_number":5882,"context_line":"        share_server \u003d self._get_share_server(context, share_instance)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f48878c_a4f0c3e3","line":5879,"range":{"start_line":5867,"start_character":0,"end_line":5879,"end_character":55},"updated":"2026-08-23 09:37:19.000000000","message":"Why can\u0027t we just add this to the existing periodic task above, i.e., filter by either status","commit_id":"edadced03969a8ba514af3dfa132df92793dace2"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"90f264e01d63302b88acc8a9c72ff8c737579cf7","unresolved":false,"context_lines":[{"line_number":5864,"context_line":"        for si in share_instances:"},{"line_number":5865,"context_line":"            si_dict \u003d self._get_share_instance_dict(context, si)"},{"line_number":5866,"context_line":"            self._update_share_status(context, si_dict)"},{"line_number":5867,"context_line":""},{"line_number":5868,"context_line":"    @periodic_task.periodic_task(spacing\u003dCONF.periodic_interval)"},{"line_number":5869,"context_line":"    @utils.require_driver_initialized"},{"line_number":5870,"context_line":"    def periodic_share_revert_status_update(self, context):"},{"line_number":5871,"context_line":"        \"\"\"Invokes share driver to update revert shares status.\"\"\""},{"line_number":5872,"context_line":"        LOG.debug(\"Updating status of revert share instances.\")"},{"line_number":5873,"context_line":"        share_instances \u003d self.db.share_instance_get_all_by_host("},{"line_number":5874,"context_line":"            context, self.host, with_share_data\u003dTrue,"},{"line_number":5875,"context_line":"            status\u003dconstants.STATUS_REVERTING_TO_SNAPSHOT)"},{"line_number":5876,"context_line":""},{"line_number":5877,"context_line":"        for si in share_instances:"},{"line_number":5878,"context_line":"            si_dict \u003d self._get_share_instance_dict(context, si)"},{"line_number":5879,"context_line":"            self._update_share_status(context, si_dict)"},{"line_number":5880,"context_line":""},{"line_number":5881,"context_line":"    def _update_share_status(self, context, share_instance):"},{"line_number":5882,"context_line":"        share_server \u003d self._get_share_server(context, share_instance)"}],"source_content_type":"text/x-python","patch_set":1,"id":"4a5a0bd4_29035b56","line":5879,"range":{"start_line":5867,"start_character":0,"end_line":5879,"end_character":55},"in_reply_to":"9f48878c_a4f0c3e3","updated":"2026-08-25 04:54:28.000000000","message":"Merged periodic_share_revert_status_update into periodic_share_status_update. The periodic task now queries both STATUS_CREATING_FROM_SNAPSHOT and STATUS_REVERTING_TO_SNAPSHOT instances.","commit_id":"edadced03969a8ba514af3dfa132df92793dace2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a51dfd25414c00e8b2f60e50ae16e6f323d325d5","unresolved":true,"context_lines":[{"line_number":5893,"context_line":"                {\u0027id\u0027: share_instance[\u0027id\u0027],"},{"line_number":5894,"context_line":"                 \u0027share_id\u0027: share_instance[\u0027share_id\u0027]}"},{"line_number":5895,"context_line":"            )"},{"line_number":5896,"context_line":"            data_updates \u003d {"},{"line_number":5897,"context_line":"                \u0027status\u0027: constants.STATUS_ERROR"},{"line_number":5898,"context_line":"            }"},{"line_number":5899,"context_line":""},{"line_number":5900,"context_line":"        status \u003d data_updates.get(\u0027status\u0027)"},{"line_number":5901,"context_line":"        if (status \u003d\u003d constants.STATUS_ERROR or"}],"source_content_type":"text/x-python","patch_set":1,"id":"64726b14_c700b41e","line":5898,"range":{"start_line":5896,"start_character":12,"end_line":5898,"end_character":13},"updated":"2026-08-23 09:42:11.000000000","message":"if the previous status was \"reverting_to_snapshot\", shouldn\u0027t the new error state be \"reverting_error\", \n\nalso, the snapshot that\u0027s restoring should go back to \"available\"","commit_id":"edadced03969a8ba514af3dfa132df92793dace2"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"90f264e01d63302b88acc8a9c72ff8c737579cf7","unresolved":false,"context_lines":[{"line_number":5893,"context_line":"                {\u0027id\u0027: share_instance[\u0027id\u0027],"},{"line_number":5894,"context_line":"                 \u0027share_id\u0027: share_instance[\u0027share_id\u0027]}"},{"line_number":5895,"context_line":"            )"},{"line_number":5896,"context_line":"            data_updates \u003d {"},{"line_number":5897,"context_line":"                \u0027status\u0027: constants.STATUS_ERROR"},{"line_number":5898,"context_line":"            }"},{"line_number":5899,"context_line":""},{"line_number":5900,"context_line":"        status \u003d data_updates.get(\u0027status\u0027)"},{"line_number":5901,"context_line":"        if (status \u003d\u003d constants.STATUS_ERROR or"}],"source_content_type":"text/x-python","patch_set":1,"id":"99b8338e_ab675669","line":5898,"range":{"start_line":5896,"start_character":12,"end_line":5898,"end_character":13},"in_reply_to":"64726b14_c700b41e","updated":"2026-08-25 04:54:28.000000000","message":"Updated exception handler in _update_share_status to set STATUS_REVERTING_ERROR (not generic STATUS_ERROR) when previous status was STATUS_REVERTING_TO_SNAPSHOT.","commit_id":"edadced03969a8ba514af3dfa132df92793dace2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a85cef7436f5d5f5d1e0a55126ca74f0b3223d8f","unresolved":true,"context_lines":[{"line_number":5898,"context_line":"            }"},{"line_number":5899,"context_line":""},{"line_number":5900,"context_line":"        status \u003d data_updates.get(\u0027status\u0027)"},{"line_number":5901,"context_line":"        if (status \u003d\u003d constants.STATUS_ERROR or"},{"line_number":5902,"context_line":"                status \u003d\u003d constants.STATUS_REVERTING_ERROR):"},{"line_number":5903,"context_line":"            msg \u003d (\"Status of share instance %(id)s that belongs to share \""},{"line_number":5904,"context_line":"                   \"%(share_id)s was updated to \u0027%(status)s\u0027.\""},{"line_number":5905,"context_line":"                   % {\u0027id\u0027: share_instance[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"b63598d9_643906b1","line":5902,"range":{"start_line":5901,"start_character":11,"end_line":5902,"end_character":60},"updated":"2026-08-23 09:37:19.000000000","message":"\"constants.STATUS_ERROR in status\"\n\ncovers both cases","commit_id":"edadced03969a8ba514af3dfa132df92793dace2"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"90f264e01d63302b88acc8a9c72ff8c737579cf7","unresolved":false,"context_lines":[{"line_number":5898,"context_line":"            }"},{"line_number":5899,"context_line":""},{"line_number":5900,"context_line":"        status \u003d data_updates.get(\u0027status\u0027)"},{"line_number":5901,"context_line":"        if (status \u003d\u003d constants.STATUS_ERROR or"},{"line_number":5902,"context_line":"                status \u003d\u003d constants.STATUS_REVERTING_ERROR):"},{"line_number":5903,"context_line":"            msg \u003d (\"Status of share instance %(id)s that belongs to share \""},{"line_number":5904,"context_line":"                   \"%(share_id)s was updated to \u0027%(status)s\u0027.\""},{"line_number":5905,"context_line":"                   % {\u0027id\u0027: share_instance[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"7fb5736a_ca4f50db","line":5902,"range":{"start_line":5901,"start_character":11,"end_line":5902,"end_character":60},"in_reply_to":"b63598d9_643906b1","updated":"2026-08-25 04:54:28.000000000","message":"Simplified error check from `status \u003d\u003d STATUS_ERROR or status \u003d\u003d STATUS_REVERTING_ERROR` to `constants.STATUS_ERROR in status` (covers both cases since \u0027error\u0027 is a substring).","commit_id":"edadced03969a8ba514af3dfa132df92793dace2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a85cef7436f5d5f5d1e0a55126ca74f0b3223d8f","unresolved":true,"context_lines":[{"line_number":5923,"context_line":"                detail\u003dmsg_details)"},{"line_number":5924,"context_line":"            return"},{"line_number":5925,"context_line":""},{"line_number":5926,"context_line":"        export_locations \u003d data_updates.get(\u0027export_locations\u0027)"},{"line_number":5927,"context_line":"        progress \u003d data_updates.get(\u0027progress\u0027)"},{"line_number":5928,"context_line":""},{"line_number":5929,"context_line":"        statuses_requiring_update \u003d ["},{"line_number":5930,"context_line":"            constants.STATUS_AVAILABLE,"}],"source_content_type":"text/x-python","patch_set":1,"id":"2d9ed4fd_e01e8652","line":5927,"range":{"start_line":5926,"start_character":0,"end_line":5927,"end_character":47},"updated":"2026-08-23 09:37:19.000000000","message":"reverted shares will need an updated size reported by the driver. And that size change informs the quota change that we\u0027ll commit. See the revert method.. perhaps extract the quota change logic so it can be reused here as well","commit_id":"edadced03969a8ba514af3dfa132df92793dace2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a51dfd25414c00e8b2f60e50ae16e6f323d325d5","unresolved":true,"context_lines":[{"line_number":5923,"context_line":"                detail\u003dmsg_details)"},{"line_number":5924,"context_line":"            return"},{"line_number":5925,"context_line":""},{"line_number":5926,"context_line":"        export_locations \u003d data_updates.get(\u0027export_locations\u0027)"},{"line_number":5927,"context_line":"        progress \u003d data_updates.get(\u0027progress\u0027)"},{"line_number":5928,"context_line":""},{"line_number":5929,"context_line":"        statuses_requiring_update \u003d ["},{"line_number":5930,"context_line":"            constants.STATUS_AVAILABLE,"}],"source_content_type":"text/x-python","patch_set":1,"id":"c8cee17c_4d67eb37","line":5927,"range":{"start_line":5926,"start_character":0,"end_line":5927,"end_character":47},"in_reply_to":"2d9ed4fd_e01e8652","updated":"2026-08-23 09:42:11.000000000","message":"for share instances that previously had a \"reverting_from_snapshot\" status, you\u0027ll need to restore the snapshot\u0027s status from \"restoring\" to \"available\" too?","commit_id":"edadced03969a8ba514af3dfa132df92793dace2"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"90f264e01d63302b88acc8a9c72ff8c737579cf7","unresolved":false,"context_lines":[{"line_number":5923,"context_line":"                detail\u003dmsg_details)"},{"line_number":5924,"context_line":"            return"},{"line_number":5925,"context_line":""},{"line_number":5926,"context_line":"        export_locations \u003d data_updates.get(\u0027export_locations\u0027)"},{"line_number":5927,"context_line":"        progress \u003d data_updates.get(\u0027progress\u0027)"},{"line_number":5928,"context_line":""},{"line_number":5929,"context_line":"        statuses_requiring_update \u003d ["},{"line_number":5930,"context_line":"            constants.STATUS_AVAILABLE,"}],"source_content_type":"text/x-python","patch_set":1,"id":"a8918069_1874bacd","line":5927,"range":{"start_line":5926,"start_character":0,"end_line":5927,"end_character":47},"in_reply_to":"c8cee17c_4d67eb37","updated":"2026-08-25 04:54:28.000000000","message":"Added _restore_snapshot_after_revert() helper to restore snapshots from STATUS_RESTORING to STATUS_AVAILABLE. Called on both success and error paths when previous status was STATUS_REVERTING_TO_SNAPSHOT. This ensures snapshots are restored even if the revert fails, matching the synchronous revert error path behavior.","commit_id":"edadced03969a8ba514af3dfa132df92793dace2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"24ec5a08975a13234122d1fcb8ce5a0cf7a2e03c","unresolved":false,"context_lines":[{"line_number":5959,"context_line":"    def _restore_snapshot_after_revert(self, context, share_instance):"},{"line_number":5960,"context_line":"        \"\"\"Restore snapshots from \u0027restoring\u0027 to \u0027available\u0027 after revert.\"\"\""},{"line_number":5961,"context_line":"        share_id \u003d share_instance[\u0027share_id\u0027]"},{"line_number":5962,"context_line":"        snapshots \u003d self.db.share_snapshot_get_all_for_share("},{"line_number":5963,"context_line":"            context, share_id,"},{"line_number":5964,"context_line":"            filters\u003d{\u0027status\u0027: constants.STATUS_RESTORING})"},{"line_number":5965,"context_line":"        for snap in snapshots:"},{"line_number":5966,"context_line":"            self.db.share_snapshot_update("},{"line_number":5967,"context_line":"                context, snap[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"010c0f6e_83aa8fdf","line":5964,"range":{"start_line":5962,"start_character":8,"end_line":5964,"end_character":59},"updated":"2026-08-25 11:03:58.000000000","message":"we risk also updating other snapshots that might be stuck in restoring but I think it should be fine, as if one share is being restored to a snapshot, it mean other operations should not be happening in parallel, so I\u0027m okay with this and only wanted to leave a note for this possible scenario","commit_id":"9a913747262bd3b58049077b05f30ba929c26651"}]}
