)]}'
{"lockfile/mkdirlockfile.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"a1dde5713259b6f80d5ea40075bd7f5a1e8e617b","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                os.path.exists(self.unique_name))"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def break_lock(self):"},{"line_number":81,"context_line":"        if os.path.exists(self.lock_file):"},{"line_number":82,"context_line":"            shutil.rmtree(self.lock_file)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_191b4b75","line":81,"updated":"2015-09-08 09:02:37.000000000","message":"So this is bad because it can be a race. The path can be deleted between the .exists() and the .rmtree() call.\n\nBetter is to rmtree() and catch any exception if the patch does not exist.","commit_id":"0ad16de332834a624977f73649370ab61422981a"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"afaaec190dda6f99df6e571f64e9a59e835fe3a1","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                os.path.exists(self.unique_name))"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def break_lock(self):"},{"line_number":90,"context_line":"        if os.path.exists(self.lock_file):"},{"line_number":91,"context_line":"            self.delete_directory()"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_765da014","line":90,"updated":"2015-09-08 16:13:59.000000000","message":"If you do what you said there\u0027s no need to check here. :)","commit_id":"5eb43685f6d85949a43caddb639c6b6f9f9cea6f"}]}
