)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"d3b6419038890e7ad00b8bdb94b8dcde4f86c862","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e3e27afe_dea2efbb","updated":"2022-07-15 15:10:27.000000000","message":"Is this still needed?","commit_id":"e451dbbb688ffb7ad727e238157c54355c0c0072"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b0e3748c2e60ce2457c4c387c8073d1775502613","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d5545bd8_359981a5","in_reply_to":"e3e27afe_dea2efbb","updated":"2022-07-18 18:48:45.000000000","message":"Yes, it is still an issue. I almost forgot about this but thanks to your comment that revived it.","commit_id":"e451dbbb688ffb7ad727e238157c54355c0c0072"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b0e3748c2e60ce2457c4c387c8073d1775502613","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"75386da6_253fc00e","updated":"2022-07-18 18:48:45.000000000","message":"Added unit tests and releasenote","commit_id":"5f2e066db904ea2945fd41a38c4c810f8c4a907b"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"2fdc2611b93cbdaa2513fac87c15a3b051ee763f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"37872dbf_430b76ca","updated":"2022-07-18 18:48:55.000000000","message":"This code needs to handle likely race conditions.","commit_id":"5f2e066db904ea2945fd41a38c4c810f8c4a907b"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"ba5197ac0b95b237c53d7b133e053ab60b354c85","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"61874de9_d16d8dd1","updated":"2022-07-21 20:31:44.000000000","message":"I use devstack + generic nfs and the file was successfully removed, but an opt/stack/data/cinder/cinder-cleanup_incomplete_backups_344180 file remained after deletion. Is this the expected behavior?","commit_id":"383ed0fe22d661794c5670156f296a2fc83eea1d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"de26516e07e464ef0451dfc6e64d63e5e5b6b42e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"2182d212_f3a2cdbb","updated":"2022-07-19 06:55:17.000000000","message":"Thanks Eric for the review.","commit_id":"383ed0fe22d661794c5670156f296a2fc83eea1d"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"f90a42ef5e1b1a5d546b73b24f846161d7bdcff8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"55cdd4a8_3d515acb","updated":"2024-08-13 14:35:03.000000000","message":"run Pure Storage CI","commit_id":"383ed0fe22d661794c5670156f296a2fc83eea1d"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"9605b91538e7baf49752f834d3ade7696b49397e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"bb4d9f48_4103addf","updated":"2024-10-30 19:42:05.000000000","message":"run Pure Storage CI","commit_id":"383ed0fe22d661794c5670156f296a2fc83eea1d"}],"cinder/backup/drivers/posix.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"2fdc2611b93cbdaa2513fac87c15a3b051ee763f","unresolved":true,"context_lines":[{"line_number":142,"context_line":"            try:"},{"line_number":143,"context_line":"                os.rmdir(dir_path)"},{"line_number":144,"context_line":"            except OSError:"},{"line_number":145,"context_line":"                raise"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def _generate_object_name_prefix(self, backup):"},{"line_number":148,"context_line":"        timestamp \u003d timeutils.utcnow().strftime(\"%Y%m%d%H%M%S\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a920df7_e489e2aa","line":145,"range":{"start_line":145,"start_character":16,"end_line":145,"end_character":21},"updated":"2022-07-18 18:48:55.000000000","message":"You\u0027ll want to ignore this error (ENOENT) if two different operations called delete_object() and reached line 143 at the same time.\n\nThere is probably also a race between delete_object and put_container() as implemented here -- between line 102 and 103.","commit_id":"5f2e066db904ea2945fd41a38c4c810f8c4a907b"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"de26516e07e464ef0451dfc6e64d63e5e5b6b42e","unresolved":false,"context_lines":[{"line_number":142,"context_line":"            try:"},{"line_number":143,"context_line":"                os.rmdir(dir_path)"},{"line_number":144,"context_line":"            except OSError:"},{"line_number":145,"context_line":"                raise"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def _generate_object_name_prefix(self, backup):"},{"line_number":148,"context_line":"        timestamp \u003d timeutils.utcnow().strftime(\"%Y%m%d%H%M%S\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f37757d_d92c78a3","line":145,"range":{"start_line":145,"start_character":16,"end_line":145,"end_character":21},"in_reply_to":"5a920df7_e489e2aa","updated":"2022-07-19 06:55:17.000000000","message":"Initially i thought about the race between put and delete using the same dir but was convinced they won\u0027t do it because of the update_container_name logic creating directory based on the backup ID that should mostly be unique\n\nos.path.join(id[0:2], id[2:4], id) # id \u003d backup.id\n\nbut I looked more closely now and we also have CONF.backup_container config option which will create the objects in the same container dir so we should handle the case.","commit_id":"5f2e066db904ea2945fd41a38c4c810f8c4a907b"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"6b9be321743fc1770ee259ae0c005904e8376f68","unresolved":true,"context_lines":[{"line_number":123,"context_line":"            stat.S_IWUSR |"},{"line_number":124,"context_line":"            stat.S_IRGRP |"},{"line_number":125,"context_line":"            stat.S_IWGRP)"},{"line_number":126,"context_line":"        os.chmod(path, permissions)"},{"line_number":127,"context_line":"        return f"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def get_object_reader(self, container, object_name, extra_metadata\u003dNone):"}],"source_content_type":"text/x-python","patch_set":5,"id":"e8c3c2ac_b33793f3","line":126,"range":{"start_line":126,"start_character":8,"end_line":126,"end_character":16},"updated":"2022-07-20 15:13:28.000000000","message":"This looks potentially racy in other ways too, between open and chmod of the path which is not guaranteed to point to the same file that is open.  Needs a closer look.","commit_id":"383ed0fe22d661794c5670156f296a2fc83eea1d"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"ba5197ac0b95b237c53d7b133e053ab60b354c85","unresolved":true,"context_lines":[{"line_number":123,"context_line":"            stat.S_IWUSR |"},{"line_number":124,"context_line":"            stat.S_IRGRP |"},{"line_number":125,"context_line":"            stat.S_IWGRP)"},{"line_number":126,"context_line":"        os.chmod(path, permissions)"},{"line_number":127,"context_line":"        return f"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def get_object_reader(self, container, object_name, extra_metadata\u003dNone):"}],"source_content_type":"text/x-python","patch_set":5,"id":"28330f7a_fc97e4fd","line":126,"range":{"start_line":126,"start_character":8,"end_line":126,"end_character":16},"in_reply_to":"e8c3c2ac_b33793f3","updated":"2022-07-21 20:31:44.000000000","message":"I am not quite sure if this directly affects the bug. Should I create a new bug for this and continue working on it in a follow up or update this patch?","commit_id":"383ed0fe22d661794c5670156f296a2fc83eea1d"}]}
