)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"e9a72104e86470429cef1d18cff301cbe8e3f3b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d1ca151c_1441fcba","updated":"2021-11-22 17:36:40.000000000","message":"Thanks Tim. I squashed into the parent, but changed to condition a little to also check that the one remaining data file has the timestamp that is about to be deleted.","commit_id":"7bd92df63c3504923cdfb1a8fe0a7efe56b3c8f3"}],"swift/obj/reconstructor.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"3661b894496c4006ae84c9f7f4ae6ac831474ba7","unresolved":true,"context_lines":[{"line_number":986,"context_line":"                nondurable_purge_delay \u003d (0 if timestamps.get(\u0027durable\u0027)"},{"line_number":987,"context_line":"                                          else df_mgr.commit_window)"},{"line_number":988,"context_line":"                if job[\u0027primary_frag_index\u0027] is None and 1 \u003e\u003d len(["},{"line_number":989,"context_line":"                        f for f in os.listdir(df._datadir)"},{"line_number":990,"context_line":"                        if f.endswith(\u0027.data\u0027)]):"},{"line_number":991,"context_line":"                    # pure handoff node so it\u0027s ok to remove any meta file that"},{"line_number":992,"context_line":"                    # may have been reverted"}],"source_content_type":"text/x-python","patch_set":1,"id":"1e91e961_9d2f36df","line":989,"range":{"start_line":989,"start_character":49,"end_line":989,"end_character":57},"updated":"2021-11-19 23:45:23.000000000","message":"I\u0027m not thrilled about needing to grab this \"private\" attr, but (for better or worse) there\u0027s already some precedent in auditor and ssync_receiver.","commit_id":"7bd92df63c3504923cdfb1a8fe0a7efe56b3c8f3"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"e9a72104e86470429cef1d18cff301cbe8e3f3b8","unresolved":true,"context_lines":[{"line_number":986,"context_line":"                nondurable_purge_delay \u003d (0 if timestamps.get(\u0027durable\u0027)"},{"line_number":987,"context_line":"                                          else df_mgr.commit_window)"},{"line_number":988,"context_line":"                if job[\u0027primary_frag_index\u0027] is None and 1 \u003e\u003d len(["},{"line_number":989,"context_line":"                        f for f in os.listdir(df._datadir)"},{"line_number":990,"context_line":"                        if f.endswith(\u0027.data\u0027)]):"},{"line_number":991,"context_line":"                    # pure handoff node so it\u0027s ok to remove any meta file that"},{"line_number":992,"context_line":"                    # may have been reverted"}],"source_content_type":"text/x-python","patch_set":1,"id":"2db33454_c74c4ade","line":989,"range":{"start_line":989,"start_character":49,"end_line":989,"end_character":57},"in_reply_to":"1e91e961_9d2f36df","updated":"2021-11-22 17:36:40.000000000","message":"we use it so much in tests - one day we\u0027ll make it a public attr!","commit_id":"7bd92df63c3504923cdfb1a8fe0a7efe56b3c8f3"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"e9a72104e86470429cef1d18cff301cbe8e3f3b8","unresolved":true,"context_lines":[{"line_number":987,"context_line":"                                          else df_mgr.commit_window)"},{"line_number":988,"context_line":"                if job[\u0027primary_frag_index\u0027] is None and 1 \u003e\u003d len(["},{"line_number":989,"context_line":"                        f for f in os.listdir(df._datadir)"},{"line_number":990,"context_line":"                        if f.endswith(\u0027.data\u0027)]):"},{"line_number":991,"context_line":"                    # pure handoff node so it\u0027s ok to remove any meta file that"},{"line_number":992,"context_line":"                    # may have been reverted"},{"line_number":993,"context_line":"                    meta_timestamp \u003d timestamps.get(\u0027ts_meta\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"e2bfd0a0_ead8be3b","line":990,"range":{"start_line":990,"start_character":27,"end_line":990,"end_character":46},"updated":"2021-11-22 17:36:40.000000000","message":"I think to be sure we should also check that the remaining .data file has same timestamp as we are about to pass to purge method - it\u0027s possible that the reverted frag has already been deleted but another frag was written, in which case the meta file should be retained.\n\nhmmm, the same possibility exists in the window between this line and the actual os.unlink???","commit_id":"7bd92df63c3504923cdfb1a8fe0a7efe56b3c8f3"}]}
