)]}'
{"swift/proxy/controllers/base.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"458cd60eb4580faa3c201df0899569bf93b3d7f9","unresolved":false,"context_lines":[{"line_number":787,"context_line":"                           this request. This will change the Range header"},{"line_number":788,"context_line":"                           so that the next req will start where it left off."},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"        :raises ValueError: if invalid range header"},{"line_number":791,"context_line":"        :raises HTTPRequestedRangeNotSatisfiable: if begin + num_bytes"},{"line_number":792,"context_line":"                                                  \u003e end of range + 1"},{"line_number":793,"context_line":"        :raises RangeAlreadyComplete: if begin + num_bytes \u003d\u003d end of range + 1"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf57530f_4e7ac788","side":"PARENT","line":790,"updated":"2017-09-20 01:13:28.000000000","message":"this I think was just a lie","commit_id":"d2e32b39e8bead7984d205d532a489908be655ef"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"458cd60eb4580faa3c201df0899569bf93b3d7f9","unresolved":false,"context_lines":[{"line_number":796,"context_line":"        except ValueError:"},{"line_number":797,"context_line":"            req_range \u003d None"},{"line_number":798,"context_line":""},{"line_number":799,"context_line":"        if req_range:"},{"line_number":800,"context_line":"            begin, end \u003d req_range.ranges[0]"},{"line_number":801,"context_line":"            if begin is None:"},{"line_number":802,"context_line":"                # this is a -50 range req (last 50 bytes of file)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf57530f_2e567308","line":799,"updated":"2017-09-20 01:13:28.000000000","message":"as near as I can tell all of this is equivalent, just cleanup","commit_id":"6b19ca7a7d5833f5648976d8d30c776975e361db"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"458cd60eb4580faa3c201df0899569bf93b3d7f9","unresolved":false,"context_lines":[{"line_number":821,"context_line":"            self.backend_headers[\u0027Range\u0027] \u003d \u0027bytes\u003d%d-\u0027 % num_bytes"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":"        # Reset so if we need to do this more than once, we don\u0027t double-up"},{"line_number":824,"context_line":"        self.bytes_used_from_backend \u003d 0"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"    def pop_range(self):"},{"line_number":827,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"bf57530f_ce3c77c1","line":824,"updated":"2017-09-20 01:13:28.000000000","message":"this is the fix","commit_id":"6b19ca7a7d5833f5648976d8d30c776975e361db"}],"test/unit/proxy/controllers/test_base.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"458cd60eb4580faa3c201df0899569bf93b3d7f9","unresolved":false,"context_lines":[{"line_number":881,"context_line":"                if self.chunks:"},{"line_number":882,"context_line":"                    chunk \u003d self.chunks.pop(0)"},{"line_number":883,"context_line":"                    if chunk is None:"},{"line_number":884,"context_line":"                        raise exceptions.ChunkReadTimeout()"},{"line_number":885,"context_line":"                    else:"},{"line_number":886,"context_line":"                        return chunk"},{"line_number":887,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf57530f_ced8f780","line":884,"updated":"2017-09-20 01:13:28.000000000","message":"this is what\u0027s forcing the handler to bounce to the next source...","commit_id":"6b19ca7a7d5833f5648976d8d30c776975e361db"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"458cd60eb4580faa3c201df0899569bf93b3d7f9","unresolved":false,"context_lines":[{"line_number":890,"context_line":"            def getheader(self, header):"},{"line_number":891,"context_line":"                if header.lower() \u003d\u003d \"content-length\":"},{"line_number":892,"context_line":"                    return str(sum(len(c) for c in self.chunks"},{"line_number":893,"context_line":"                                   if c is not None))"},{"line_number":894,"context_line":""},{"line_number":895,"context_line":"            def getheaders(self):"},{"line_number":896,"context_line":"                return [(\u0027content-length\u0027, self.getheader(\u0027content-length\u0027))]"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf57530f_ce791730","line":893,"updated":"2017-09-20 01:13:28.000000000","message":"oh, this is interesting... but does any of the content-length besides the first really matter... I think I\u0027ve got it now - i\u0027ll just do a followup ;)","commit_id":"6b19ca7a7d5833f5648976d8d30c776975e361db"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"458cd60eb4580faa3c201df0899569bf93b3d7f9","unresolved":false,"context_lines":[{"line_number":901,"context_line":""},{"line_number":902,"context_line":"        # NB: content length on source1 should be correct"},{"line_number":903,"context_line":"        # but that reversed piece never makes it to the client"},{"line_number":904,"context_line":"        source1 \u003d TestSource(data[:2] + [data[2][::-1], None] + data[3:])"},{"line_number":905,"context_line":"        source2 \u003d TestSource(data[2:4] + [\u0027nope\u0027, None])"},{"line_number":906,"context_line":"        source3 \u003d TestSource(data[4:])"},{"line_number":907,"context_line":"        req \u003d Request.blank(\u0027/v1/a/c/o\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf57530f_6ed10b58","line":904,"updated":"2017-09-20 01:13:28.000000000","message":"I\u0027m not sure including the bogus data as an incomplete read adds that much to the test... or the data *after* the None for that matter?","commit_id":"6b19ca7a7d5833f5648976d8d30c776975e361db"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"458cd60eb4580faa3c201df0899569bf93b3d7f9","unresolved":false,"context_lines":[{"line_number":907,"context_line":"        req \u003d Request.blank(\u0027/v1/a/c/o\u0027)"},{"line_number":908,"context_line":"        handler \u003d GetOrHeadHandler("},{"line_number":909,"context_line":"            self.app, req, \u0027Object\u0027, None, None, None, {},"},{"line_number":910,"context_line":"            client_chunk_size\u003d8)"},{"line_number":911,"context_line":""},{"line_number":912,"context_line":"        range_headers \u003d []"},{"line_number":913,"context_line":"        sources \u003d [(source2, node), (source3, node)]"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf57530f_cec11783","line":910,"updated":"2017-09-20 01:13:28.000000000","message":"I mean I guess the [\u0027aaaa\u0027, \u0027bbbb\u0027, \u0027junk\u0027, None] sort of idea is trying to highlight the chunk_size here is 8 and we\u0027ll discard/re-request incomplete chunks...","commit_id":"6b19ca7a7d5833f5648976d8d30c776975e361db"}]}
