)]}'
{"swift/container/sharder.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"dc5119aabc4ae14881e2e039f58b624c99d490f5","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        for category in ("},{"line_number":159,"context_line":"                \u0027visited\u0027, \u0027scanned\u0027, \u0027created\u0027, \u0027cleaved\u0027, \u0027misplaced\u0027):"},{"line_number":160,"context_line":"            stats \u003d sharding_stats[category]"},{"line_number":161,"context_line":"            msg \u003d \u0027, \u0027.join([\u0027%s %s\u0027 % (str(stats[k]), k)"},{"line_number":162,"context_line":"                             for k in category_stats[category]])"},{"line_number":163,"context_line":"            self.logger.info("},{"line_number":164,"context_line":"                \u0027Since %s: %s: %s\u0027, last_report, category, msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_8f4e5b94","line":161,"range":{"start_line":161,"start_character":30,"end_line":161,"end_character":35},"updated":"2018-03-21 01:18:16.000000000","message":"FWIW, db_replicator uses \u0027 \u0027.join([\u0027%s:%s\u0027 % ...])","commit_id":"2cdcfbf7a5684249b9e43888c6c4909344064900"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"dc5119aabc4ae14881e2e039f58b624c99d490f5","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                \u0027visited\u0027, \u0027scanned\u0027, \u0027created\u0027, \u0027cleaved\u0027, \u0027misplaced\u0027):"},{"line_number":160,"context_line":"            stats \u003d sharding_stats[category]"},{"line_number":161,"context_line":"            msg \u003d \u0027, \u0027.join([\u0027%s %s\u0027 % (str(stats[k]), k)"},{"line_number":162,"context_line":"                             for k in category_stats[category]])"},{"line_number":163,"context_line":"            self.logger.info("},{"line_number":164,"context_line":"                \u0027Since %s: %s: %s\u0027, last_report, category, msg)"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_b2c86874","line":162,"range":{"start_line":162,"start_character":38,"end_line":162,"end_character":62},"updated":"2018-03-21 01:18:16.000000000","message":"Could use stats here. Might even want to iterate over sorted(stats.items()) or something.","commit_id":"2cdcfbf7a5684249b9e43888c6c4909344064900"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"dc5119aabc4ae14881e2e039f58b624c99d490f5","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        self.reported \u003d now"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def _periodic_report_stats(self):"},{"line_number":174,"context_line":"        if (time.time() - self.reported) \u003e\u003d 3600:  # once an hour"},{"line_number":175,"context_line":"            self._report_stats()"},{"line_number":176,"context_line":"            self._zero_stats()"},{"line_number":177,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_92f2046f","line":174,"range":{"start_line":174,"start_character":44,"end_line":174,"end_character":65},"updated":"2018-03-21 01:18:16.000000000","message":"Off-topic: we should really make this configurable...","commit_id":"2cdcfbf7a5684249b9e43888c6c4909344064900"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"dc5119aabc4ae14881e2e039f58b624c99d490f5","unresolved":false,"context_lines":[{"line_number":495,"context_line":""},{"line_number":496,"context_line":"        if misplaced_items:"},{"line_number":497,"context_line":"            self.logger.increment(\u0027misplaced_items_found\u0027)"},{"line_number":498,"context_line":"            self._increment_stat(\u0027misplaced\u0027, \u0027success\u0027)"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"        # wipe out the cache to disable bypass in delete_db"},{"line_number":501,"context_line":"        cleanups \u003d self.shard_cleanups or {}"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_f22340bd","line":498,"range":{"start_line":498,"start_character":47,"end_line":498,"end_character":54},"updated":"2018-03-21 01:18:16.000000000","message":"\"success\" seems a bit of a misnomer -- \"N attempted, 0 success\" would seem disconcerting, when really there just wasn\u0027t any work to do :-/","commit_id":"2cdcfbf7a5684249b9e43888c6c4909344064900"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"dc5119aabc4ae14881e2e039f58b624c99d490f5","unresolved":false,"context_lines":[{"line_number":528,"context_line":"        #       needed. Maybe something as simple as sharding lock older then"},{"line_number":529,"context_line":"        #       reclaim age."},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"        self.logger.info(\u0027Auditing %s/%s\u0027, broker.account, broker.container)"},{"line_number":532,"context_line":"        continue_with_container \u003d True"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"        # if the container has been marked as deleted, all metadata will"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_f20ca043","line":531,"updated":"2018-03-21 01:18:16.000000000","message":"Could use a\n\n self._increment_stat(\u0027audit\u0027, \u0027attempted\u0027)","commit_id":"2cdcfbf7a5684249b9e43888c6c4909344064900"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"dc5119aabc4ae14881e2e039f58b624c99d490f5","unresolved":false,"context_lines":[{"line_number":770,"context_line":"        if not check_drive(self.root, node[\u0027device\u0027],"},{"line_number":771,"context_line":"                           self.mount_check):"},{"line_number":772,"context_line":"            self.logger.warning("},{"line_number":773,"context_line":"                \u0027Skipping %(device)s as it is not mounted\u0027 % node)"},{"line_number":774,"context_line":"            return False"},{"line_number":775,"context_line":"        return True"},{"line_number":776,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_d516264a","line":773,"range":{"start_line":773,"start_character":40,"end_line":773,"end_character":57},"updated":"2018-03-21 01:18:16.000000000","message":"*grumble grumble* https://review.openstack.org/#/c/504341/","commit_id":"2cdcfbf7a5684249b9e43888c6c4909344064900"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"dc5119aabc4ae14881e2e039f58b624c99d490f5","unresolved":false,"context_lines":[{"line_number":839,"context_line":"                else:"},{"line_number":840,"context_line":"                    self._increment_stat(\u0027visited\u0027, \u0027success\u0027)"},{"line_number":841,"context_line":"            else:"},{"line_number":842,"context_line":"                self._increment_stat(\u0027visited\u0027, \u0027skipped\u0027)"},{"line_number":843,"context_line":"                self.logger.info(\u0027Skipping %s; sharding is not enabled\u0027, path)"},{"line_number":844,"context_line":""},{"line_number":845,"context_line":"            self._periodic_report_stats()"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_f596ca94","line":842,"updated":"2018-03-21 01:18:16.000000000","message":"Oh man, I love the clarity of the visited stats! It\u0027s just like, \"yeah, of COURSE that\u0027s what should be recorded when!\"","commit_id":"2cdcfbf7a5684249b9e43888c6c4909344064900"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"dc5119aabc4ae14881e2e039f58b624c99d490f5","unresolved":false,"context_lines":[{"line_number":856,"context_line":""},{"line_number":857,"context_line":"        # Now we wait for all threads to finish."},{"line_number":858,"context_line":"        self.cpool.waitall(None)"},{"line_number":859,"context_line":"        self._report_stats()"},{"line_number":860,"context_line":""},{"line_number":861,"context_line":"    @staticmethod"},{"line_number":862,"context_line":"    def check_complete_ranges(ranges):"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_ef3fd7b2","line":859,"updated":"2018-03-21 01:18:16.000000000","message":"Ah, ok... I was getting a little worried when I saw the removals in run_forever/run_once...","commit_id":"2cdcfbf7a5684249b9e43888c6c4909344064900"}]}
