)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"971abad7f532a10c24bbfc26f143103aaf924afa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9d841af8_c4c568c3","updated":"2022-10-21 14:39:34.000000000","message":"just one place where I think replication\u003dTrue is needed - otherwise super cleanup, I\u0027m all in favour of the helper method and more uniform log messaging","commit_id":"72df7b95eda34b7b3d82b74df6831fdcdf0fd4c2"}],"swift/obj/updater.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"971abad7f532a10c24bbfc26f143103aaf924afa","unresolved":true,"context_lines":[{"line_number":735,"context_line":"            if not success:"},{"line_number":736,"context_line":"                self.logger.debug("},{"line_number":737,"context_line":"                    \u0027Error code %(status)d is returned from remote \u0027"},{"line_number":738,"context_line":"                    \u0027server %(ip)s: %(port)s / %(device)s\u0027,"},{"line_number":739,"context_line":"                    {\u0027status\u0027: resp.status, \u0027ip\u0027: node[\u0027replication_ip\u0027],"},{"line_number":740,"context_line":"                     \u0027port\u0027: node[\u0027replication_port\u0027],"},{"line_number":741,"context_line":"                     \u0027device\u0027: node[\u0027device\u0027]})"}],"source_content_type":"text/x-python","patch_set":4,"id":"7c85fe11_1ad279c0","side":"PARENT","line":738,"range":{"start_line":738,"start_character":44,"end_line":738,"end_character":47},"updated":"2022-10-21 14:39:34.000000000","message":"huh, spaces in this one!","commit_id":"4ed2b89cb78f06cbd08b8a3f94745613def12e97"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ba12a286aacd9548f8c7586f4cf58f063bbb4650","unresolved":false,"context_lines":[{"line_number":735,"context_line":"            if not success:"},{"line_number":736,"context_line":"                self.logger.debug("},{"line_number":737,"context_line":"                    \u0027Error code %(status)d is returned from remote \u0027"},{"line_number":738,"context_line":"                    \u0027server %(ip)s: %(port)s / %(device)s\u0027,"},{"line_number":739,"context_line":"                    {\u0027status\u0027: resp.status, \u0027ip\u0027: node[\u0027replication_ip\u0027],"},{"line_number":740,"context_line":"                     \u0027port\u0027: node[\u0027replication_port\u0027],"},{"line_number":741,"context_line":"                     \u0027device\u0027: node[\u0027device\u0027]})"}],"source_content_type":"text/x-python","patch_set":4,"id":"213608ed_1080888b","side":"PARENT","line":738,"range":{"start_line":738,"start_character":44,"end_line":738,"end_character":47},"in_reply_to":"7c85fe11_1ad279c0","updated":"2022-10-23 22:24:54.000000000","message":"I have no idea why we had it that way before :-(","commit_id":"4ed2b89cb78f06cbd08b8a3f94745613def12e97"}],"swift/proxy/server.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"971abad7f532a10c24bbfc26f143103aaf924afa","unresolved":true,"context_lines":[{"line_number":669,"context_line":"        limited \u003d error_stats[\u0027errors\u0027] \u003e self.error_suppression_limit"},{"line_number":670,"context_line":"        if limited:"},{"line_number":671,"context_line":"            self.logger.debug("},{"line_number":672,"context_line":"                \u0027Node error limited %(ip)s:%(port)s (%(device)s)\u0027, node)"},{"line_number":673,"context_line":"        return limited"},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"    def error_limit(self, node, msg):"}],"source_content_type":"text/x-python","patch_set":4,"id":"47bd57fb_45f3426c","side":"PARENT","line":672,"range":{"start_line":672,"start_character":51,"end_line":672,"end_character":52},"updated":"2022-10-21 14:39:34.000000000","message":"no \u0027/\u0027","commit_id":"4ed2b89cb78f06cbd08b8a3f94745613def12e97"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ba12a286aacd9548f8c7586f4cf58f063bbb4650","unresolved":false,"context_lines":[{"line_number":669,"context_line":"        limited \u003d error_stats[\u0027errors\u0027] \u003e self.error_suppression_limit"},{"line_number":670,"context_line":"        if limited:"},{"line_number":671,"context_line":"            self.logger.debug("},{"line_number":672,"context_line":"                \u0027Node error limited %(ip)s:%(port)s (%(device)s)\u0027, node)"},{"line_number":673,"context_line":"        return limited"},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"    def error_limit(self, node, msg):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1d81048c_fe8eb304","side":"PARENT","line":672,"range":{"start_line":672,"start_character":51,"end_line":672,"end_character":52},"in_reply_to":"47bd57fb_45f3426c","updated":"2022-10-23 22:24:54.000000000","message":"Yeah, the helper seems worth it if only so we finally get some consistency!","commit_id":"4ed2b89cb78f06cbd08b8a3f94745613def12e97"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"971abad7f532a10c24bbfc26f143103aaf924afa","unresolved":true,"context_lines":[{"line_number":647,"context_line":"        self.node_timings[node[\u0027ip\u0027]] \u003d (timing, now + self.timing_expiry)"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    def _error_limit_node_key(self, node):"},{"line_number":650,"context_line":"        return node_to_string(node)"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"    def error_limited(self, node):"},{"line_number":653,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"abf4ffe6_9efd30ff","line":650,"updated":"2022-10-21 14:39:34.000000000","message":"+1 probably with keeping the indirection for now","commit_id":"72df7b95eda34b7b3d82b74df6831fdcdf0fd4c2"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ba12a286aacd9548f8c7586f4cf58f063bbb4650","unresolved":false,"context_lines":[{"line_number":647,"context_line":"        self.node_timings[node[\u0027ip\u0027]] \u003d (timing, now + self.timing_expiry)"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    def _error_limit_node_key(self, node):"},{"line_number":650,"context_line":"        return node_to_string(node)"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"    def error_limited(self, node):"},{"line_number":653,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"c0365f44_b8eef60b","line":650,"in_reply_to":"abf4ffe6_9efd30ff","updated":"2022-10-23 22:24:54.000000000","message":"Ack","commit_id":"72df7b95eda34b7b3d82b74df6831fdcdf0fd4c2"}],"test/unit/obj/test_replicator.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"971abad7f532a10c24bbfc26f143103aaf924afa","unresolved":true,"context_lines":[{"line_number":1986,"context_line":"            self.replicator.update(job)"},{"line_number":1987,"context_line":"            # ... only the primaries"},{"line_number":1988,"context_line":"            expected \u003d [error % {\"resp\": 400,"},{"line_number":1989,"context_line":"                                 \"node\": utils.node_to_string(node)}"},{"line_number":1990,"context_line":"                        for node in job[\u0027nodes\u0027]]"},{"line_number":1991,"context_line":"            self.assertEqual(expected,"},{"line_number":1992,"context_line":"                             self.logger.get_lines_for_level(\u0027error\u0027))"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffe73a37_ec8fb20f","line":1989,"updated":"2022-10-21 14:39:34.000000000","message":"shouldn\u0027t this have replication\u003dTrue? I think the test rings may not have disinct replication_ip/port for devs","commit_id":"72df7b95eda34b7b3d82b74df6831fdcdf0fd4c2"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ba12a286aacd9548f8c7586f4cf58f063bbb4650","unresolved":false,"context_lines":[{"line_number":1986,"context_line":"            self.replicator.update(job)"},{"line_number":1987,"context_line":"            # ... only the primaries"},{"line_number":1988,"context_line":"            expected \u003d [error % {\"resp\": 400,"},{"line_number":1989,"context_line":"                                 \"node\": utils.node_to_string(node)}"},{"line_number":1990,"context_line":"                        for node in job[\u0027nodes\u0027]]"},{"line_number":1991,"context_line":"            self.assertEqual(expected,"},{"line_number":1992,"context_line":"                             self.logger.get_lines_for_level(\u0027error\u0027))"}],"source_content_type":"text/x-python","patch_set":4,"id":"7d279dbf_6ffc1335","line":1989,"in_reply_to":"ffe73a37_ec8fb20f","updated":"2022-10-23 22:24:54.000000000","message":"Good catch! Fixed.","commit_id":"72df7b95eda34b7b3d82b74df6831fdcdf0fd4c2"}]}
