)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"e43d324542080e6fa6568183ecf29dae5ff2cf9b","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"TODO:"},{"line_number":10,"context_line":"- unit test is_file_older"},{"line_number":11,"context_line":"- fix probe test"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The reconstructor may revert a non-durable datafile concurrently with"},{"line_number":14,"context_line":"an object server PUT to the handoff that is about to make the datafile"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"541beda5_f2b6c14f","line":11,"updated":"2021-06-22 22:32:53.000000000","message":"Maybe just update the configs in doc/saio with something like\n\n nondurable_purge_delay \u003d 0\n\n?","commit_id":"85a01c8aa1fa93edc953263baa0b1fccaa99b3ec"}],"swift/obj/diskfile.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8111efe3656dfe13b829b8a9235db46855f2cced","unresolved":true,"context_lines":[{"line_number":3308,"context_line":"            frag_prefs\u003dself._frag_prefs, policy\u003dpolicy)"},{"line_number":3309,"context_line":"        return self._ondisk_info"},{"line_number":3310,"context_line":""},{"line_number":3311,"context_line":"    def purge(self, timestamp, frag_index, nondurable_purge_delay\u003d0):"},{"line_number":3312,"context_line":"        \"\"\""},{"line_number":3313,"context_line":"        Remove a tombstone file matching the specified timestamp or"},{"line_number":3314,"context_line":"        datafile matching the specified timestamp and fragment index"}],"source_content_type":"text/x-python","patch_set":3,"id":"1dec1bc8_ba699230","line":3311,"range":{"start_line":3311,"start_character":43,"end_line":3311,"end_character":67},"updated":"2021-07-02 17:20:14.000000000","message":"Should this default to 60, too? I guess test_purge_last_fragment_index_legacy_durable (and a couple tests in test_ssync_sender) break if I do that...","commit_id":"2934818d608e6cedd30ecb81900d02969476275c"}],"test/unit/common/test_utils.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8111efe3656dfe13b829b8a9235db46855f2cced","unresolved":true,"context_lines":[{"line_number":2875,"context_line":"        file_name \u003d os.path.join(tempdir, \u0027%s.data\u0027 % ts.internal)"},{"line_number":2876,"context_line":"        # assert no raise"},{"line_number":2877,"context_line":"        self.assertFalse(os.path.exists(file_name))"},{"line_number":2878,"context_line":"        self.assertTrue(utils.is_file_older(file_name, 0))"},{"line_number":2879,"context_line":"        self.assertFalse(utils.is_file_older(file_name, 1))"},{"line_number":2880,"context_line":""},{"line_number":2881,"context_line":"        with open(file_name, \u0027w\u0027) as f:"}],"source_content_type":"text/x-python","patch_set":3,"id":"86fc779d_490621fb","line":2878,"updated":"2021-07-02 17:20:14.000000000","message":"This one feels a little funny, but w/e.","commit_id":"2934818d608e6cedd30ecb81900d02969476275c"}],"test/unit/obj/test_reconstructor.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8111efe3656dfe13b829b8a9235db46855f2cced","unresolved":true,"context_lines":[{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    def _create_diskfile(self, policy\u003dNone, part\u003d0, object_name\u003d\u0027o\u0027,"},{"line_number":293,"context_line":"                         frag_index\u003d0, timestamp\u003dNone, test_data\u003dNone,"},{"line_number":294,"context_line":"                         commit\u003dTrue):"},{"line_number":295,"context_line":"        policy \u003d policy or self.policy"},{"line_number":296,"context_line":"        df_mgr \u003d self.reconstructor._df_router[policy]"},{"line_number":297,"context_line":"        df \u003d df_mgr.get_diskfile(\u0027sda1\u0027, part, \u0027a\u0027, \u0027c\u0027, object_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dded2aa6_e60c29a1","line":294,"updated":"2021-07-02 17:20:14.000000000","message":"Cool -- new arg\u0027s default matches the default for the write_diskfile helper.","commit_id":"2934818d608e6cedd30ecb81900d02969476275c"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8111efe3656dfe13b829b8a9235db46855f2cced","unresolved":true,"context_lines":[{"line_number":1232,"context_line":"            self.assertTrue(True, context.get(\u0027include_non_durable\u0027))"},{"line_number":1233,"context_line":"        # neither nondurable should be removed yet with default purge delay"},{"line_number":1234,"context_line":"        # because their mtimes are too recent"},{"line_number":1235,"context_line":"        self.assertTrue(os.path.exists(datafile_recent))"},{"line_number":1236,"context_line":"        self.assertTrue(os.path.exists(datafile_older))"},{"line_number":1237,"context_line":"        # but durable is purged"},{"line_number":1238,"context_line":"        self.assertFalse(os.path.exists(datafile_durable))"}],"source_content_type":"text/x-python","patch_set":3,"id":"f0baaef7_d0cdaab7","line":1235,"updated":"2021-07-02 17:20:14.000000000","message":"check","commit_id":"2934818d608e6cedd30ecb81900d02969476275c"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8111efe3656dfe13b829b8a9235db46855f2cced","unresolved":true,"context_lines":[{"line_number":1235,"context_line":"        self.assertTrue(os.path.exists(datafile_recent))"},{"line_number":1236,"context_line":"        self.assertTrue(os.path.exists(datafile_older))"},{"line_number":1237,"context_line":"        # but durable is purged"},{"line_number":1238,"context_line":"        self.assertFalse(os.path.exists(datafile_durable))"},{"line_number":1239,"context_line":""},{"line_number":1240,"context_line":"        ssync_calls \u003d []"},{"line_number":1241,"context_line":"        with mock.patch(\u0027swift.obj.reconstructor.ssync_sender\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"2ba942ca_e9b4cd0b","line":1238,"updated":"2021-07-02 17:20:14.000000000","message":"And this will catch the 0-if-durable-else-... case -- in addition to like 3 other tests.","commit_id":"2934818d608e6cedd30ecb81900d02969476275c"}]}
