)]}'
{"swift/obj/reconstructor.py":[{"author":{"_account_id":12050,"name":"Charles Hsu","email":"charles0126@gmail.com","username":"charz"},"change_message_id":"fafe29c9e3884cc7817c31a5a24dfd9157fe1089","unresolved":false,"context_lines":[{"line_number":345,"context_line":"                return False"},{"line_number":346,"context_line":"        return True"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    def _get_response(self, node, part, path, headers, full_path):"},{"line_number":349,"context_line":"        \"\"\""},{"line_number":350,"context_line":"        Helper method for reconstruction that GETs a single EC fragment"},{"line_number":351,"context_line":"        archive"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_8fafda7b","line":348,"range":{"start_line":348,"start_character":55,"end_line":348,"end_character":64},"updated":"2017-08-15 07:56:35.000000000","message":"The full_path includes \"replciation_ip\":\"replication_port\", so that\u0027s the reason the connect should talk with the \"replication_ip\" and \"replication_port\".\n\nSo if we prefer to use \"ip\" and \"port\", the reconstructor will talk with object-server (1.conf). That\u0027s fine too, but we need to correct the error message in below.","commit_id":"06680cb65af71cd6ff4049876ce9fa93717183c5"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"48d7fcbc1de7a2c321fd8213cf2cfd1ac787ad2d","unresolved":false,"context_lines":[{"line_number":345,"context_line":"                return False"},{"line_number":346,"context_line":"        return True"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    def _get_response(self, node, part, path, headers, full_path):"},{"line_number":349,"context_line":"        \"\"\""},{"line_number":350,"context_line":"        Helper method for reconstruction that GETs a single EC fragment"},{"line_number":351,"context_line":"        archive"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_806a09ea","line":348,"range":{"start_line":348,"start_character":55,"end_line":348,"end_character":64},"in_reply_to":"9f436f4f_8fafda7b","updated":"2017-08-15 12:24:28.000000000","message":"full_path with replication_port/ip does look like a bug","commit_id":"06680cb65af71cd6ff4049876ce9fa93717183c5"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"48d7fcbc1de7a2c321fd8213cf2cfd1ac787ad2d","unresolved":false,"context_lines":[{"line_number":360,"context_line":"        resp \u003d None"},{"line_number":361,"context_line":"        try:"},{"line_number":362,"context_line":"            with ConnectionTimeout(self.conn_timeout):"},{"line_number":363,"context_line":"                conn \u003d http_connect(node[\u0027replication_ip\u0027],"},{"line_number":364,"context_line":"                                    node[\u0027replication_port\u0027],"},{"line_number":365,"context_line":"                                    node[\u0027device\u0027], part,"},{"line_number":366,"context_line":"                                    \u0027GET\u0027, path, headers\u003dheaders)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_bb29bc8a","line":363,"range":{"start_line":363,"start_character":42,"end_line":363,"end_character":57},"updated":"2017-08-15 12:24:28.000000000","message":"need to be careful here - when replication_server\u003dTrue a GET will return 405 [1] which I think is why \u0027ip\u0027 and \u0027port\u0027 are used here. If you have setup a replication network according to [2] then I think this change might break reconstruction\n\n[1] see https://bugs.launchpad.net/swift/+bug/1446873\n\n[2] https://docs.openstack.org/swift/latest/replication_network.html","commit_id":"06680cb65af71cd6ff4049876ce9fa93717183c5"},{"author":{"_account_id":12050,"name":"Charles Hsu","email":"charles0126@gmail.com","username":"charz"},"change_message_id":"fafe29c9e3884cc7817c31a5a24dfd9157fe1089","unresolved":false,"context_lines":[{"line_number":370,"context_line":"            if resp.status not in [HTTP_OK, HTTP_NOT_FOUND]:"},{"line_number":371,"context_line":"                self.logger.warning("},{"line_number":372,"context_line":"                    _(\"Invalid response %(resp)s from %(full_path)s\"),"},{"line_number":373,"context_line":"                    {\u0027resp\u0027: resp.status, \u0027full_path\u0027: full_path})"},{"line_number":374,"context_line":"                resp \u003d None"},{"line_number":375,"context_line":"            elif resp.status \u003d\u003d HTTP_NOT_FOUND:"},{"line_number":376,"context_line":"                resp \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_afe3bed8","line":373,"updated":"2017-08-15 07:56:35.000000000","message":"if we go for \"ip\" and \"port\" from ring file, we should correct the string in full_path.","commit_id":"06680cb65af71cd6ff4049876ce9fa93717183c5"},{"author":{"_account_id":12050,"name":"Charles Hsu","email":"charles0126@gmail.com","username":"charz"},"change_message_id":"fafe29c9e3884cc7817c31a5a24dfd9157fe1089","unresolved":false,"context_lines":[{"line_number":376,"context_line":"                resp \u003d None"},{"line_number":377,"context_line":"        except (Exception, Timeout):"},{"line_number":378,"context_line":"            self.logger.exception("},{"line_number":379,"context_line":"                _(\"Trying to GET %(full_path)s\"), {"},{"line_number":380,"context_line":"                    \u0027full_path\u0027: full_path})"},{"line_number":381,"context_line":"        return resp"},{"line_number":382,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_6fe956b5","line":379,"updated":"2017-08-15 07:56:35.000000000","message":"ditto","commit_id":"06680cb65af71cd6ff4049876ce9fa93717183c5"}]}
