)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"0ff9a77f54878b554d2e47196ab607856046e502","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"57e44da1_b1050f33","updated":"2023-03-01 15:01:58.000000000","message":"Thanks @Tim for spotting the over-eager deletes!\n\nIf this change to warnings and errors is acceptable then it can be squashed into the parent patch.","commit_id":"fe51e64d20108d9e6ac983505a80c0c27931fe76"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fa0b7b53e49ce26cb7b37d502fdc9e7aa6dd3d3f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"4d21bb92_afea4655","updated":"2023-03-01 05:14:09.000000000","message":"There are a handful of spots where we lost some info -- was that intentional?","commit_id":"fe51e64d20108d9e6ac983505a80c0c27931fe76"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"c04a231bdcc9e8e7d492cd84a5d4ca669e515f10","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7ce039ee_88f19ad1","updated":"2023-03-01 19:39:45.000000000","message":"recheck\n\nI cannot reproduce the probe test failures","commit_id":"cb3c119e10a9de704a773aaaf81ed38b4ccd6b24"}],"swift/container/sharder.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8c35033d012145cf3821f6e7611244c6a25d7125","unresolved":true,"context_lines":[{"line_number":1174,"context_line":"                                 response_timeout\u003dself.node_timeout,"},{"line_number":1175,"context_line":"                                 headers\u003dheaders, contents\u003dbody)"},{"line_number":1176,"context_line":"        except DirectClientException as err:"},{"line_number":1177,"context_line":"            self.logger.warning("},{"line_number":1178,"context_line":"                \u0027Failed to put shard ranges to %s:%s/%s %s/%s: %s\u0027,"},{"line_number":1179,"context_line":"                node[\u0027ip\u0027], node[\u0027port\u0027], node[\u0027device\u0027],"},{"line_number":1180,"context_line":"                quote(account), quote(container), err.http_status)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f69d10d_ec4c4e8f","line":1177,"updated":"2023-02-24 17:45:32.000000000","message":"We don\u0027t currently have a broker plumbed in here, but I feel like it\u0027d be useful.","commit_id":"97cc23896be585b135b0ed86124249287c4905f2"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"0ff9a77f54878b554d2e47196ab607856046e502","unresolved":false,"context_lines":[{"line_number":1174,"context_line":"                                 response_timeout\u003dself.node_timeout,"},{"line_number":1175,"context_line":"                                 headers\u003dheaders, contents\u003dbody)"},{"line_number":1176,"context_line":"        except DirectClientException as err:"},{"line_number":1177,"context_line":"            self.logger.warning("},{"line_number":1178,"context_line":"                \u0027Failed to put shard ranges to %s:%s/%s %s/%s: %s\u0027,"},{"line_number":1179,"context_line":"                node[\u0027ip\u0027], node[\u0027port\u0027], node[\u0027device\u0027],"},{"line_number":1180,"context_line":"                quote(account), quote(container), err.http_status)"}],"source_content_type":"text/x-python","patch_set":1,"id":"289dca52_3f2cad58","line":1177,"in_reply_to":"9f69d10d_ec4c4e8f","updated":"2023-03-01 15:01:58.000000000","message":"Done","commit_id":"97cc23896be585b135b0ed86124249287c4905f2"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8c35033d012145cf3821f6e7611244c6a25d7125","unresolved":true,"context_lines":[{"line_number":2447,"context_line":"                    self._increment_stat(\u0027visited\u0027, \u0027skipped\u0027)"},{"line_number":2448,"context_line":"            except (Exception, Timeout) as err:"},{"line_number":2449,"context_line":"                self._increment_stat(\u0027visited\u0027, \u0027failure\u0027, statsd\u003dTrue)"},{"line_number":2450,"context_line":"                self.logger.exception("},{"line_number":2451,"context_line":"                    \u0027Unhandled exception while processing %s: %s\u0027, path, err)"},{"line_number":2452,"context_line":"                error \u003d err"},{"line_number":2453,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"c8f5c5cb_6e3f18d1","line":2450,"updated":"2023-02-24 17:45:32.000000000","message":"Might do well to include broker info here.","commit_id":"97cc23896be585b135b0ed86124249287c4905f2"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"0ff9a77f54878b554d2e47196ab607856046e502","unresolved":false,"context_lines":[{"line_number":2447,"context_line":"                    self._increment_stat(\u0027visited\u0027, \u0027skipped\u0027)"},{"line_number":2448,"context_line":"            except (Exception, Timeout) as err:"},{"line_number":2449,"context_line":"                self._increment_stat(\u0027visited\u0027, \u0027failure\u0027, statsd\u003dTrue)"},{"line_number":2450,"context_line":"                self.logger.exception("},{"line_number":2451,"context_line":"                    \u0027Unhandled exception while processing %s: %s\u0027, path, err)"},{"line_number":2452,"context_line":"                error \u003d err"},{"line_number":2453,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"997e1d83_1ed868e1","line":2450,"in_reply_to":"c8f5c5cb_6e3f18d1","updated":"2023-03-01 15:01:58.000000000","message":"Done","commit_id":"97cc23896be585b135b0ed86124249287c4905f2"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9af9018107997c5f63c3052290f540dd93e39b12","unresolved":true,"context_lines":[{"line_number":2231,"context_line":"        else:"},{"line_number":2232,"context_line":"            self.logger.warning("},{"line_number":2233,"context_line":"                \u0027Repeat cleaving required for %r with context: %s\u0027,"},{"line_number":2234,"context_line":"                broker.db_files[0], dict(cleaving_context))"},{"line_number":2235,"context_line":"            cleaving_context.reset()"},{"line_number":2236,"context_line":"            cleaving_context.store(broker)"},{"line_number":2237,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"54404cbf_d28659bf","side":"PARENT","line":2234,"range":{"start_line":2234,"start_character":16,"end_line":2234,"end_character":34},"updated":"2023-02-28 10:50:25.000000000","message":"Note: this will change to log broker.db_files[-1]. I couldn\u0027t think of a reason why we need to call the retiring db file (the path will take us to the dir), and it simplifies things not to have to plumb through for this anomaly.","commit_id":"7001a9278d4b5f013b3b8f2195966a5e6b48f95a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fa0b7b53e49ce26cb7b37d502fdc9e7aa6dd3d3f","unresolved":true,"context_lines":[{"line_number":2231,"context_line":"        else:"},{"line_number":2232,"context_line":"            self.logger.warning("},{"line_number":2233,"context_line":"                \u0027Repeat cleaving required for %r with context: %s\u0027,"},{"line_number":2234,"context_line":"                broker.db_files[0], dict(cleaving_context))"},{"line_number":2235,"context_line":"            cleaving_context.reset()"},{"line_number":2236,"context_line":"            cleaving_context.store(broker)"},{"line_number":2237,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ad352f09_6d1e22b6","side":"PARENT","line":2234,"range":{"start_line":2234,"start_character":16,"end_line":2234,"end_character":34},"in_reply_to":"54404cbf_d28659bf","updated":"2023-03-01 05:14:09.000000000","message":"Seems reasonable to me.","commit_id":"7001a9278d4b5f013b3b8f2195966a5e6b48f95a"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"0ff9a77f54878b554d2e47196ab607856046e502","unresolved":false,"context_lines":[{"line_number":2231,"context_line":"        else:"},{"line_number":2232,"context_line":"            self.logger.warning("},{"line_number":2233,"context_line":"                \u0027Repeat cleaving required for %r with context: %s\u0027,"},{"line_number":2234,"context_line":"                broker.db_files[0], dict(cleaving_context))"},{"line_number":2235,"context_line":"            cleaving_context.reset()"},{"line_number":2236,"context_line":"            cleaving_context.store(broker)"},{"line_number":2237,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"f778e776_1abac0a8","side":"PARENT","line":2234,"range":{"start_line":2234,"start_character":16,"end_line":2234,"end_character":34},"in_reply_to":"ad352f09_6d1e22b6","updated":"2023-03-01 15:01:58.000000000","message":"Ack","commit_id":"7001a9278d4b5f013b3b8f2195966a5e6b48f95a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fa0b7b53e49ce26cb7b37d502fdc9e7aa6dd3d3f","unresolved":true,"context_lines":[{"line_number":925,"context_line":"        # formatting."},{"line_number":926,"context_line":"        if args:"},{"line_number":927,"context_line":"            msg \u003d msg % args"},{"line_number":928,"context_line":"        return msg + \u0027, path: %s, db: %s\u0027 % (quote(path), db_file)"},{"line_number":929,"context_line":""},{"line_number":930,"context_line":"    def _log(self, level, broker, msg, *args):"},{"line_number":931,"context_line":"        if not self.logger.isEnabledFor(level):"}],"source_content_type":"text/x-python","patch_set":3,"id":"206d24f6_0828ad1b","line":928,"updated":"2023-03-01 05:14:09.000000000","message":"nit:\n\n return \u0027%s, path: %s, db: %s\u0027 % (msg, quote(path), db_file)\n\n*shrug*","commit_id":"fe51e64d20108d9e6ac983505a80c0c27931fe76"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"0ff9a77f54878b554d2e47196ab607856046e502","unresolved":false,"context_lines":[{"line_number":925,"context_line":"        # formatting."},{"line_number":926,"context_line":"        if args:"},{"line_number":927,"context_line":"            msg \u003d msg % args"},{"line_number":928,"context_line":"        return msg + \u0027, path: %s, db: %s\u0027 % (quote(path), db_file)"},{"line_number":929,"context_line":""},{"line_number":930,"context_line":"    def _log(self, level, broker, msg, *args):"},{"line_number":931,"context_line":"        if not self.logger.isEnabledFor(level):"}],"source_content_type":"text/x-python","patch_set":3,"id":"e3bccf67_8ed18643","line":928,"in_reply_to":"206d24f6_0828ad1b","updated":"2023-03-01 15:01:58.000000000","message":"Done in parent patch","commit_id":"fe51e64d20108d9e6ac983505a80c0c27931fe76"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fa0b7b53e49ce26cb7b37d502fdc9e7aa6dd3d3f","unresolved":true,"context_lines":[{"line_number":1174,"context_line":"        record_type \u003d resp.headers.get(\u0027x-backend-record-type\u0027)"},{"line_number":1175,"context_line":"        if record_type !\u003d \u0027shard\u0027:"},{"line_number":1176,"context_line":"            err \u003d \u0027unexpected record type %r\u0027 % record_type"},{"line_number":1177,"context_line":"            self.error(broker, \"Failed to get shard ranges: %s\", err)"},{"line_number":1178,"context_line":"            return None"},{"line_number":1179,"context_line":""},{"line_number":1180,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"06498c61_12859f78","line":1177,"updated":"2023-03-01 05:14:09.000000000","message":"Lost `.root_path`","commit_id":"fe51e64d20108d9e6ac983505a80c0c27931fe76"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"0ff9a77f54878b554d2e47196ab607856046e502","unresolved":false,"context_lines":[{"line_number":1174,"context_line":"        record_type \u003d resp.headers.get(\u0027x-backend-record-type\u0027)"},{"line_number":1175,"context_line":"        if record_type !\u003d \u0027shard\u0027:"},{"line_number":1176,"context_line":"            err \u003d \u0027unexpected record type %r\u0027 % record_type"},{"line_number":1177,"context_line":"            self.error(broker, \"Failed to get shard ranges: %s\", err)"},{"line_number":1178,"context_line":"            return None"},{"line_number":1179,"context_line":""},{"line_number":1180,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"f79e1404_532f50a2","line":1177,"in_reply_to":"06498c61_12859f78","updated":"2023-03-01 15:01:58.000000000","message":"Done","commit_id":"fe51e64d20108d9e6ac983505a80c0c27931fe76"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fa0b7b53e49ce26cb7b37d502fdc9e7aa6dd3d3f","unresolved":true,"context_lines":[{"line_number":1184,"context_line":"            return [ShardRange.from_dict(shard_range)"},{"line_number":1185,"context_line":"                    for shard_range in data]"},{"line_number":1186,"context_line":"        except (ValueError, TypeError, KeyError) as err:"},{"line_number":1187,"context_line":"            self.error(broker, \"Failed to get shard ranges, invalid data: %r\","},{"line_number":1188,"context_line":"                       err)"},{"line_number":1189,"context_line":"        return None"},{"line_number":1190,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"851cede3_526a3e39","line":1187,"updated":"2023-03-01 05:14:09.000000000","message":"Lost `.root_path`","commit_id":"fe51e64d20108d9e6ac983505a80c0c27931fe76"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"0ff9a77f54878b554d2e47196ab607856046e502","unresolved":false,"context_lines":[{"line_number":1184,"context_line":"            return [ShardRange.from_dict(shard_range)"},{"line_number":1185,"context_line":"                    for shard_range in data]"},{"line_number":1186,"context_line":"        except (ValueError, TypeError, KeyError) as err:"},{"line_number":1187,"context_line":"            self.error(broker, \"Failed to get shard ranges, invalid data: %r\","},{"line_number":1188,"context_line":"                       err)"},{"line_number":1189,"context_line":"        return None"},{"line_number":1190,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5676b148_fec8a7d0","line":1187,"in_reply_to":"851cede3_526a3e39","updated":"2023-03-01 15:01:58.000000000","message":"Done","commit_id":"fe51e64d20108d9e6ac983505a80c0c27931fe76"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fa0b7b53e49ce26cb7b37d502fdc9e7aa6dd3d3f","unresolved":true,"context_lines":[{"line_number":1700,"context_line":"            success \u003d True"},{"line_number":1701,"context_line":""},{"line_number":1702,"context_line":"        if not success:"},{"line_number":1703,"context_line":"            self.warning(broker, \u0027Refused to remove misplaced objects\u0027)"},{"line_number":1704,"context_line":"        return success"},{"line_number":1705,"context_line":""},{"line_number":1706,"context_line":"    def _move_objects(self, src_broker, src_shard_range, policy_index,"}],"source_content_type":"text/x-python","patch_set":3,"id":"42b4ce8f_d0182f0b","line":1703,"updated":"2023-03-01 05:14:09.000000000","message":"Lost `dest_shard_range`","commit_id":"fe51e64d20108d9e6ac983505a80c0c27931fe76"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"0ff9a77f54878b554d2e47196ab607856046e502","unresolved":false,"context_lines":[{"line_number":1700,"context_line":"            success \u003d True"},{"line_number":1701,"context_line":""},{"line_number":1702,"context_line":"        if not success:"},{"line_number":1703,"context_line":"            self.warning(broker, \u0027Refused to remove misplaced objects\u0027)"},{"line_number":1704,"context_line":"        return success"},{"line_number":1705,"context_line":""},{"line_number":1706,"context_line":"    def _move_objects(self, src_broker, src_shard_range, policy_index,"}],"source_content_type":"text/x-python","patch_set":3,"id":"cd973cfa_7b258caa","line":1703,"in_reply_to":"42b4ce8f_d0182f0b","updated":"2023-03-01 15:01:58.000000000","message":"Done","commit_id":"fe51e64d20108d9e6ac983505a80c0c27931fe76"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fa0b7b53e49ce26cb7b37d502fdc9e7aa6dd3d3f","unresolved":true,"context_lines":[{"line_number":1839,"context_line":"        # (ab)use ShardRange instances to encapsulate source namespaces"},{"line_number":1840,"context_line":"        src_ranges \u003d [ShardRange(\u0027dont/care\u0027, Timestamp.now(), lower, upper)"},{"line_number":1841,"context_line":"                      for lower, upper in src_bounds]"},{"line_number":1842,"context_line":"        self.debug(broker, \u0027misplaced object source bounds %s\u0027, src_bounds)"},{"line_number":1843,"context_line":"        policy_index \u003d broker.storage_policy_index"},{"line_number":1844,"context_line":"        success \u003d True"},{"line_number":1845,"context_line":"        num_placed \u003d num_unplaced \u003d 0"}],"source_content_type":"text/x-python","patch_set":3,"id":"29992cd0_a5f7d59c","line":1842,"range":{"start_line":1842,"start_character":62,"end_line":1842,"end_character":63},"updated":"2023-03-01 05:14:09.000000000","message":"Took me a bit, but good call -- should it go in the parent patch, though?","commit_id":"fe51e64d20108d9e6ac983505a80c0c27931fe76"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"0ff9a77f54878b554d2e47196ab607856046e502","unresolved":false,"context_lines":[{"line_number":1839,"context_line":"        # (ab)use ShardRange instances to encapsulate source namespaces"},{"line_number":1840,"context_line":"        src_ranges \u003d [ShardRange(\u0027dont/care\u0027, Timestamp.now(), lower, upper)"},{"line_number":1841,"context_line":"                      for lower, upper in src_bounds]"},{"line_number":1842,"context_line":"        self.debug(broker, \u0027misplaced object source bounds %s\u0027, src_bounds)"},{"line_number":1843,"context_line":"        policy_index \u003d broker.storage_policy_index"},{"line_number":1844,"context_line":"        success \u003d True"},{"line_number":1845,"context_line":"        num_placed \u003d num_unplaced \u003d 0"}],"source_content_type":"text/x-python","patch_set":3,"id":"30447878_a9dcd2e5","line":1842,"range":{"start_line":1842,"start_character":62,"end_line":1842,"end_character":63},"in_reply_to":"29992cd0_a5f7d59c","updated":"2023-03-01 15:01:58.000000000","message":"Done","commit_id":"fe51e64d20108d9e6ac983505a80c0c27931fe76"}]}
