)]}'
{"swift/obj/auditor.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c2b81c46cecb4c66b292174262793e79593d576b","unresolved":true,"context_lines":[{"line_number":283,"context_line":"                    watcher.see_object("},{"line_number":284,"context_line":"                        metadata, location.policy.idx, int(location.partition),"},{"line_number":285,"context_line":"                        df._ondisk_info[\u0027data_file\u0027])"},{"line_number":286,"context_line":"                except DiskFileQuarantined:"},{"line_number":287,"context_line":"                    raise df._quarantine("},{"line_number":288,"context_line":"                        df._data_file,"},{"line_number":289,"context_line":"                        \"Requested by %s\" % watcher.watcher_name)"},{"line_number":290,"context_line":"        except DiskFileQuarantined as err:"},{"line_number":291,"context_line":"            self.quarantines +\u003d 1"},{"line_number":292,"context_line":"            self.logger.error(_(\u0027ERROR Object %(obj)s failed audit and was\u0027"},{"line_number":293,"context_line":"                                \u0027 quarantined: %(err)s\u0027),"},{"line_number":294,"context_line":"                              {\u0027obj\u0027: location, \u0027err\u0027: err})"},{"line_number":295,"context_line":"        except DiskFileExpired:"},{"line_number":296,"context_line":"            pass  # ignore expired objects"},{"line_number":297,"context_line":"        except DiskFileDeleted:"}],"source_content_type":"text/x-python","patch_set":1,"id":"55741994_14aca21f","line":294,"range":{"start_line":286,"start_character":0,"end_line":294,"end_character":60},"updated":"2020-12-10 21:40:38.000000000","message":"So this part definitely reads strangely -- maybe it\u0027d help if I\u0027d introduced a new exception for watcher-says-this-should-quarantine?","commit_id":"46d62fcddbb43314e384c029b9e003a1b73027c5"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"1710589aae0b12f0b3286e3201a86612da091ed5","unresolved":true,"context_lines":[{"line_number":283,"context_line":"                    watcher.see_object("},{"line_number":284,"context_line":"                        metadata, location.policy.idx, int(location.partition),"},{"line_number":285,"context_line":"                        df._ondisk_info[\u0027data_file\u0027])"},{"line_number":286,"context_line":"                except DiskFileQuarantined:"},{"line_number":287,"context_line":"                    raise df._quarantine("},{"line_number":288,"context_line":"                        df._data_file,"},{"line_number":289,"context_line":"                        \"Requested by %s\" % watcher.watcher_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1d578979_a2389092","line":286,"updated":"2020-12-11 00:30:15.000000000","message":"I feel uncomfortable with this semantic overloading of this exception. What do you think about adding a different exception as a protocol of see_object() specifically? Like, DiskFileQuarantineRequested?","commit_id":"00c3607ea4d527e41b51bc6c187f20bb5b501d01"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5043153b6329817fd8ff73a04131d7ab512332d4","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                    watcher.see_object("},{"line_number":284,"context_line":"                        metadata, location.policy.idx, int(location.partition),"},{"line_number":285,"context_line":"                        df._ondisk_info[\u0027data_file\u0027])"},{"line_number":286,"context_line":"                except DiskFileQuarantined:"},{"line_number":287,"context_line":"                    raise df._quarantine("},{"line_number":288,"context_line":"                        df._data_file,"},{"line_number":289,"context_line":"                        \"Requested by %s\" % watcher.watcher_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"cd59b11f_f90acddf","line":286,"in_reply_to":"1d578979_a2389092","updated":"2020-12-11 19:14:13.000000000","message":"Perfectly reasonable; I was debating about doing that, too.","commit_id":"00c3607ea4d527e41b51bc6c187f20bb5b501d01"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"f01ea1455eeaf5492bf668d17e24a9c4ef2ac0c1","unresolved":true,"context_lines":[{"line_number":493,"context_line":"    \"\"\""},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"    def __init__(self, watcher_class, watcher_name, conf, logger):"},{"line_number":496,"context_line":"        self.watcher_class \u003d watcher_class"},{"line_number":497,"context_line":"        self.watcher_in_error \u003d False"},{"line_number":498,"context_line":"        self.logger \u003d PrefixLoggerAdapter(logger, {})"},{"line_number":499,"context_line":"        self.logger.set_prefix(\u0027[audit-watcher %s] \u0027 % self.watcher_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3eadace9_6ec8d813","line":496,"updated":"2020-12-11 05:31:37.000000000","message":"I don\u0027t like this complication. I plumbed the qualified watcher name her just so this is not necessary. Is there a reason why we aren\u0027t using watcher_name? It contains a \u0027#\u0027 symbol, does it trip a problem with logger?","commit_id":"00c3607ea4d527e41b51bc6c187f20bb5b501d01"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5043153b6329817fd8ff73a04131d7ab512332d4","unresolved":false,"context_lines":[{"line_number":493,"context_line":"    \"\"\""},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"    def __init__(self, watcher_class, watcher_name, conf, logger):"},{"line_number":496,"context_line":"        self.watcher_class \u003d watcher_class"},{"line_number":497,"context_line":"        self.watcher_in_error \u003d False"},{"line_number":498,"context_line":"        self.logger \u003d PrefixLoggerAdapter(logger, {})"},{"line_number":499,"context_line":"        self.logger.set_prefix(\u0027[audit-watcher %s] \u0027 % self.watcher_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"97f11419_2ebb4591","line":496,"in_reply_to":"3eadace9_6ec8d813","updated":"2020-12-11 19:14:13.000000000","message":"Great point! I didn\u0027t even notice that; was too busy looking at the existing logging. #willfix","commit_id":"00c3607ea4d527e41b51bc6c187f20bb5b501d01"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5043153b6329817fd8ff73a04131d7ab512332d4","unresolved":true,"context_lines":[{"line_number":524,"context_line":"            self.watcher.see_object(**kwargs)"},{"line_number":525,"context_line":"        except QuarantineRequest as err:"},{"line_number":526,"context_line":"            # Avoid extra logging."},{"line_number":527,"context_line":"            raise err"},{"line_number":528,"context_line":"        except (Exception, Timeout):"},{"line_number":529,"context_line":"            self.logger.exception("},{"line_number":530,"context_line":"                \u0027Error in see_object(meta\u003d%r, policy_index\u003d%r, partition\u003d%r, \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"27bfe5b4_415d9fd4","line":527,"range":{"start_line":527,"start_character":12,"end_line":527,"end_character":21},"updated":"2020-12-11 19:14:13.000000000","message":"nit: We probably want it to be a bare\n\n raise\n\nso we preserve the stack (not that we look at it...)","commit_id":"9f780b434e6d34bfa429d8845dcfc8d979a65a4a"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"3aa4f1cff62f8b16164b325a8d22edbe59fbcfc6","unresolved":false,"context_lines":[{"line_number":524,"context_line":"            self.watcher.see_object(**kwargs)"},{"line_number":525,"context_line":"        except QuarantineRequest as err:"},{"line_number":526,"context_line":"            # Avoid extra logging."},{"line_number":527,"context_line":"            raise err"},{"line_number":528,"context_line":"        except (Exception, Timeout):"},{"line_number":529,"context_line":"            self.logger.exception("},{"line_number":530,"context_line":"                \u0027Error in see_object(meta\u003d%r, policy_index\u003d%r, partition\u003d%r, \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"96694d18_88f6bdeb","line":527,"range":{"start_line":527,"start_character":12,"end_line":527,"end_character":21},"in_reply_to":"27bfe5b4_415d9fd4","updated":"2020-12-12 00:32:47.000000000","message":"Done","commit_id":"9f780b434e6d34bfa429d8845dcfc8d979a65a4a"}],"swift/obj/watchers/dark_data.py":[{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"f88472418ba38a75aa88cd2348091434729e6d61","unresolved":true,"context_lines":[{"line_number":68,"context_line":"            self.logger.info(\"reporting dark data %s\" % (obj_path,))"},{"line_number":69,"context_line":"        elif self.dark_data_policy \u003d\u003d \"delete\":"},{"line_number":70,"context_line":"            self.logger.info(\"deleting dark data %s\" % (obj_path,))"},{"line_number":71,"context_line":"            os.unlink(data_file_path)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def see_object(self, object_metadata, policy_index, partition,"},{"line_number":74,"context_line":"                   data_file_path, **other_kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9d39d4f4_dca3f032","line":71,"updated":"2020-12-11 02:22:05.000000000","message":"Removing just the data file is not enough. Any *.meta with the same timestamp need to be removed, too, I think.","commit_id":"00c3607ea4d527e41b51bc6c187f20bb5b501d01"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5043153b6329817fd8ff73a04131d7ab512332d4","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            self.logger.info(\"reporting dark data %s\" % (obj_path,))"},{"line_number":69,"context_line":"        elif self.dark_data_policy \u003d\u003d \"delete\":"},{"line_number":70,"context_line":"            self.logger.info(\"deleting dark data %s\" % (obj_path,))"},{"line_number":71,"context_line":"            os.unlink(data_file_path)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def see_object(self, object_metadata, policy_index, partition,"},{"line_number":74,"context_line":"                   data_file_path, **other_kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"172a69a6_1ccfe430","line":71,"in_reply_to":"9d39d4f4_dca3f032","updated":"2020-12-11 19:14:13.000000000","message":"Yeah, we probably should go ahead and remove the whole hash dir...","commit_id":"00c3607ea4d527e41b51bc6c187f20bb5b501d01"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5043153b6329817fd8ff73a04131d7ab512332d4","unresolved":true,"context_lines":[{"line_number":68,"context_line":"        elif self.dark_data_policy \u003d\u003d \"log\":"},{"line_number":69,"context_line":"            self.logger.info(\"reporting dark data %s\" % obj_path)"},{"line_number":70,"context_line":"        elif self.dark_data_policy \u003d\u003d \"delete\":"},{"line_number":71,"context_line":"            obj_dir \u003d os.path.sep.join(data_file_path.split(os.path.sep)[:-1])"},{"line_number":72,"context_line":"            self.logger.info(\"deleting dark data %s\" % obj_dir)"},{"line_number":73,"context_line":"            shutil.rmtree(obj_dir)"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"a075b55f_dfbee3f9","line":71,"range":{"start_line":71,"start_character":22,"end_line":71,"end_character":78},"updated":"2020-12-11 19:14:13.000000000","message":"Better as\n\n os.path.dirname(data_file_path)\n\n?","commit_id":"9f780b434e6d34bfa429d8845dcfc8d979a65a4a"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"3aa4f1cff62f8b16164b325a8d22edbe59fbcfc6","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        elif self.dark_data_policy \u003d\u003d \"log\":"},{"line_number":69,"context_line":"            self.logger.info(\"reporting dark data %s\" % obj_path)"},{"line_number":70,"context_line":"        elif self.dark_data_policy \u003d\u003d \"delete\":"},{"line_number":71,"context_line":"            obj_dir \u003d os.path.sep.join(data_file_path.split(os.path.sep)[:-1])"},{"line_number":72,"context_line":"            self.logger.info(\"deleting dark data %s\" % obj_dir)"},{"line_number":73,"context_line":"            shutil.rmtree(obj_dir)"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"c9b52439_59aebd00","line":71,"range":{"start_line":71,"start_character":22,"end_line":71,"end_character":78},"in_reply_to":"a075b55f_dfbee3f9","updated":"2020-12-12 00:32:47.000000000","message":"Done","commit_id":"9f780b434e6d34bfa429d8845dcfc8d979a65a4a"}]}
