)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"2485f99570a1d111044512eb0c39d962b9307530","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"99a214c7_df825414","updated":"2022-10-18 13:45:29.000000000","message":"it\u0027s not obvoius to me that what we really need for 529 is \"just\u0027 a unique set of configured limit/interval - i think you said you were trying to avoid doing something too clever, but I think maybe I need to think harder about how different rates of different kinds of errors and timeouts will interact when answering questions of node \"availability\" ","commit_id":"5c9d9c217a328bcabcd1e3724c0fdad227d25c48"}],"swift/proxy/controllers/base.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"2485f99570a1d111044512eb0c39d962b9307530","unresolved":true,"context_lines":[{"line_number":1694,"context_line":"                handoffs +\u003d 1"},{"line_number":1695,"context_line":"                self.log_handoffs(handoffs)"},{"line_number":1696,"context_line":"                yield node"},{"line_number":1697,"context_line":"                if self.app.is_node_available(node):"},{"line_number":1698,"context_line":"                    self.nodes_left -\u003d 1"},{"line_number":1699,"context_line":"                    if self.nodes_left \u003c\u003d 0:"},{"line_number":1700,"context_line":"                        return"}],"source_content_type":"text/x-python","patch_set":1,"id":"75aa3ef5_b80e28c0","line":1697,"updated":"2022-10-18 13:45:29.000000000","message":"it\u0027s pretty handy all the node error limiting was consolidated in one place","commit_id":"5c9d9c217a328bcabcd1e3724c0fdad227d25c48"}],"swift/proxy/server.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"2485f99570a1d111044512eb0c39d962b9307530","unresolved":true,"context_lines":[{"line_number":227,"context_line":"                                          error_suppression_limit)"},{"line_number":228,"context_line":"        self.rate_control \u003d ErrorLimiter("},{"line_number":229,"context_line":"            float(conf.get(\u0027rate_control_suppression_interval\u0027, .1)),"},{"line_number":230,"context_line":"            int(conf.get(\u0027rate_control_suppression_limit\u0027, 0)))"},{"line_number":231,"context_line":"        self.recheck_container_existence \u003d \\"},{"line_number":232,"context_line":"            int(conf.get(\u0027recheck_container_existence\u0027,"},{"line_number":233,"context_line":"                         DEFAULT_RECHECK_CONTAINER_EXISTENCE))"}],"source_content_type":"text/x-python","patch_set":1,"id":"0a9a7025_d2ae5fc4","line":230,"updated":"2022-10-18 13:45:29.000000000","message":"is this off-by-default?  I think 529 would previously accumulate in error limits.","commit_id":"5c9d9c217a328bcabcd1e3724c0fdad227d25c48"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"2485f99570a1d111044512eb0c39d962b9307530","unresolved":true,"context_lines":[{"line_number":739,"context_line":""},{"line_number":740,"context_line":"    def is_node_available(self, node):"},{"line_number":741,"context_line":"        return (not self.error_limited(node) and"},{"line_number":742,"context_line":"                not self.rate_control.error_limited(node))"},{"line_number":743,"context_line":""},{"line_number":744,"context_line":"    def iter_nodes(self, ring, partition, logger, node_iter\u003dNone, policy\u003dNone):"},{"line_number":745,"context_line":"        return NodeIter(self, ring, partition, logger, node_iter\u003dnode_iter,"}],"source_content_type":"text/x-python","patch_set":1,"id":"31dda9ee_f390b220","line":742,"updated":"2022-10-18 13:45:29.000000000","message":"\"available\" - ok","commit_id":"5c9d9c217a328bcabcd1e3724c0fdad227d25c48"}]}
