)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"4da5e610dd8e050d4924e10685b3137315560081","unresolved":false,"context_lines":[{"line_number":32,"context_line":"   remove t1.data because it doesn\u0027t have .durable and older than reclaim age."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"4. After that, object-server makes a t1.durable and call cleanup_list_dir will"},{"line_number":35,"context_line":"   remove all .data .durable file older than the newest t1.durable."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"5. finally all .data files are gone, unexpectedly."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5aef4532_5873a9e7","line":35,"updated":"2016-03-08 07:24:01.000000000","message":"Oh, maybe we should return failure response if t1.durable missing any .data in the put sequesnce, otherwise a client regard it as success even if it is still t0 object....","commit_id":"a2f7fa17a4a723abeea36fb0818710c552c91b26"}],"swift/obj/diskfile.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"0cb709fd4a0c91ca478374ae90ca1638e7d2899b","unresolved":false,"context_lines":[{"line_number":2400,"context_line":"                    files \u003d self.manager.cleanup_ondisk_files("},{"line_number":2401,"context_line":"                        self._datadir)[\u0027files\u0027]"},{"line_number":2402,"context_line":"                    expected_durable \u003d \u0027%s.durable\u0027 % timestamp.internal"},{"line_number":2403,"context_line":"                    if expected_durable not in files:"},{"line_number":2404,"context_line":"                        raise DiskFileError(\u0027Expected durable file is missing\u0027)"},{"line_number":2405,"context_line":"                except OSError as os_err:"},{"line_number":2406,"context_line":"                    self.manager.logger.exception("}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_273428fa","line":2403,"updated":"2016-03-10 12:47:55.000000000","message":"Its not necessary to pass the timestamp and construct the durable file name, because the expected_durable filename is the name of the file at durable_file_path, so you could just use:\n\n  if os.path.basename(durable_file_path) not in files:","commit_id":"68c08e3774513c23bc61a9f6ceda7e4d9029a942"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"4cf6925b9b1f6acae638b4c6f0a88c5e45236597","unresolved":false,"context_lines":[{"line_number":2400,"context_line":"                    files \u003d self.manager.cleanup_ondisk_files("},{"line_number":2401,"context_line":"                        self._datadir)[\u0027files\u0027]"},{"line_number":2402,"context_line":"                    expected_durable \u003d \u0027%s.durable\u0027 % timestamp.internal"},{"line_number":2403,"context_line":"                    if expected_durable not in files:"},{"line_number":2404,"context_line":"                        raise DiskFileError(\u0027Expected durable file is missing\u0027)"},{"line_number":2405,"context_line":"                except OSError as os_err:"},{"line_number":2406,"context_line":"                    self.manager.logger.exception("}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_29164d55","line":2403,"in_reply_to":"5aef4532_273428fa","updated":"2016-03-14 08:11:11.000000000","message":"Nice, thx! Will do!","commit_id":"68c08e3774513c23bc61a9f6ceda7e4d9029a942"}],"test/unit/obj/test_diskfile.py":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"ae028acd8c15498926dbe3d4393fc7dd7e98e7f9","unresolved":false,"context_lines":[{"line_number":569,"context_line":"            expected_after_cleanup \u003d set([f[0] for f in test"},{"line_number":570,"context_line":"                                          if (f[2] if len(f) \u003e 2 else f[1])])"},{"line_number":571,"context_line":"            if reclaim_age:"},{"line_number":572,"context_line":"                print class_under_test.hash_cleanup_listdir("},{"line_number":573,"context_line":"                    hashdir, reclaim_age\u003dreclaim_age)"},{"line_number":574,"context_line":"            else:"},{"line_number":575,"context_line":"                with mock.patch(\u0027swift.obj.diskfile.time\u0027) as mock_time:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_3c24565e","line":572,"updated":"2016-03-10 01:25:37.000000000","message":"aghhh, don\u0027t use print statement. will fix.","commit_id":"f61df9550b3e084bec6d8ac9725b908a89da5606"}]}
