)]}'
{"swift/proxy/controllers/obj.py":[{"author":{"_account_id":7652,"name":"Luis Pabón","email":"lpabon@gmail.com","username":"lpabon"},"change_message_id":"b5da35a4bcefe8745e0f9202575e3c984153f087","unresolved":false,"context_lines":[{"line_number":506,"context_line":"            new_req.headers[\u0027X-Static-Large-Object\u0027] \u003d \\"},{"line_number":507,"context_line":"                source_resp.headers[\u0027X-Static-Large-Object\u0027]"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"        def update_response(req, resp):"},{"line_number":510,"context_line":"            acct, path \u003d source_resp.environ[\u0027PATH_INFO\u0027].split(\u0027/\u0027, 3)[2:4]"},{"line_number":511,"context_line":"            resp.headers[\u0027X-Copied-From-Account\u0027] \u003d quote(acct)"},{"line_number":512,"context_line":"            resp.headers[\u0027X-Copied-From\u0027] \u003d quote(path)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_5d48772d","line":509,"updated":"2015-03-04 21:09:50.000000000","message":"It is confusing to use the same name as the variable in line 720.  Maybe call this one something like \"copy_context_update_response\"","commit_id":"9faf18742c2c7a999b1af038125409cc900836d3"},{"author":{"_account_id":7652,"name":"Luis Pabón","email":"lpabon@gmail.com","username":"lpabon"},"change_message_id":"b5da35a4bcefe8745e0f9202575e3c984153f087","unresolved":false,"context_lines":[{"line_number":693,"context_line":"        if not container_info[\u0027nodes\u0027]:"},{"line_number":694,"context_line":"            return HTTPNotFound(request\u003dreq)"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"        self._update_content_type(req)"},{"line_number":697,"context_line":""},{"line_number":698,"context_line":"        error_response \u003d check_object_creation(req, self.object_name) or \\"},{"line_number":699,"context_line":"            check_content_type(req)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_3295b240","line":696,"updated":"2015-03-04 21:09:50.000000000","message":"Add comment","commit_id":"9faf18742c2c7a999b1af038125409cc900836d3"},{"author":{"_account_id":7652,"name":"Luis Pabón","email":"lpabon@gmail.com","username":"lpabon"},"change_message_id":"b5da35a4bcefe8745e0f9202575e3c984153f087","unresolved":false,"context_lines":[{"line_number":725,"context_line":"            update_response \u003d lambda req, resp: resp"},{"line_number":726,"context_line":""},{"line_number":727,"context_line":"        try:"},{"line_number":728,"context_line":"            partition, nodes \u003d obj_ring.get_nodes("},{"line_number":729,"context_line":"                self.account_name, self.container_name, self.object_name)"},{"line_number":730,"context_line":"            req, delete_at_container, delete_at_part, \\"},{"line_number":731,"context_line":"                delete_at_nodes \u003d self._config_obj_expiration(req)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_f26dda05","line":728,"updated":"2015-03-04 21:09:50.000000000","message":"This probably can be done inside _store_object()","commit_id":"9faf18742c2c7a999b1af038125409cc900836d3"},{"author":{"_account_id":7652,"name":"Luis Pabón","email":"lpabon@gmail.com","username":"lpabon"},"change_message_id":"b5da35a4bcefe8745e0f9202575e3c984153f087","unresolved":false,"context_lines":[{"line_number":727,"context_line":"        try:"},{"line_number":728,"context_line":"            partition, nodes \u003d obj_ring.get_nodes("},{"line_number":729,"context_line":"                self.account_name, self.container_name, self.object_name)"},{"line_number":730,"context_line":"            req, delete_at_container, delete_at_part, \\"},{"line_number":731,"context_line":"                delete_at_nodes \u003d self._config_obj_expiration(req)"},{"line_number":732,"context_line":"        except HTTPException as resp:"},{"line_number":733,"context_line":"            return resp"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_52adc630","line":730,"updated":"2015-03-04 21:09:50.000000000","message":"Does this need to share the same \u0027try\u0027? It could be confusing.","commit_id":"9faf18742c2c7a999b1af038125409cc900836d3"},{"author":{"_account_id":7652,"name":"Luis Pabón","email":"lpabon@gmail.com","username":"lpabon"},"change_message_id":"b5da35a4bcefe8745e0f9202575e3c984153f087","unresolved":false,"context_lines":[{"line_number":732,"context_line":"        except HTTPException as resp:"},{"line_number":733,"context_line":"            return resp"},{"line_number":734,"context_line":""},{"line_number":735,"context_line":"        resp \u003d self._store_object("},{"line_number":736,"context_line":"            req, data_source, partition\u003dpartition, obj_ring\u003dobj_ring,"},{"line_number":737,"context_line":"            nodes\u003dnodes,"},{"line_number":738,"context_line":"            container_partition\u003dcontainer_info[\u0027partition\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_b231a20d","line":735,"updated":"2015-03-04 21:09:50.000000000","message":"Do we really need to pass all these arguments?  Could this call get the information from req or other arguments?","commit_id":"9faf18742c2c7a999b1af038125409cc900836d3"},{"author":{"_account_id":7652,"name":"Luis Pabón","email":"lpabon@gmail.com","username":"lpabon"},"change_message_id":"b5da35a4bcefe8745e0f9202575e3c984153f087","unresolved":false,"context_lines":[{"line_number":740,"context_line":"            delete_at_nodes\u003ddelete_at_nodes,"},{"line_number":741,"context_line":"            delete_at_part\u003ddelete_at_part,"},{"line_number":742,"context_line":"            delete_at_container\u003ddelete_at_container)"},{"line_number":743,"context_line":"        return update_response(req, resp)"},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"    @public"},{"line_number":746,"context_line":"    @cors_validation"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_320cd242","line":743,"updated":"2015-03-04 21:09:50.000000000","message":"This needs a comment on what it is trying to do here.","commit_id":"9faf18742c2c7a999b1af038125409cc900836d3"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"83dc1a92b13edb96e14a2036298c7d01cbeeb787","unresolved":false,"context_lines":[{"line_number":440,"context_line":"            req.headers[\u0027X-Timestamp\u0027] \u003d req_timestamp.internal"},{"line_number":441,"context_line":"        else:"},{"line_number":442,"context_line":"            req.headers[\u0027X-Timestamp\u0027] \u003d Timestamp(time.time()).internal"},{"line_number":443,"context_line":"        return None"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"    def _make_copy_request(self, req):"},{"line_number":446,"context_line":"        if req.environ.get(\u0027swift.orig_req_method\u0027, req.method) !\u003d \u0027POST\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_67402008","line":443,"updated":"2015-03-18 02:23:32.000000000","message":"Why are we passing in policy_index when it isn\u0027t being used?","commit_id":"c3b473387a2d4053169c3c278efcf87d3c64d7d6"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"5b53ecacee948f7e9d25d8b40438e7094b42d90a","unresolved":false,"context_lines":[{"line_number":440,"context_line":"            req.headers[\u0027X-Timestamp\u0027] \u003d req_timestamp.internal"},{"line_number":441,"context_line":"        else:"},{"line_number":442,"context_line":"            req.headers[\u0027X-Timestamp\u0027] \u003d Timestamp(time.time()).internal"},{"line_number":443,"context_line":"        return None"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"    def _make_copy_request(self, req):"},{"line_number":446,"context_line":"        if req.environ.get(\u0027swift.orig_req_method\u0027, req.method) !\u003d \u0027POST\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_05602a34","line":443,"in_reply_to":"9a80dd14_67402008","updated":"2015-03-18 13:52:29.000000000","message":"Done","commit_id":"c3b473387a2d4053169c3c278efcf87d3c64d7d6"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"83dc1a92b13edb96e14a2036298c7d01cbeeb787","unresolved":false,"context_lines":[{"line_number":723,"context_line":"        if error_response:"},{"line_number":724,"context_line":"            return error_response"},{"line_number":725,"context_line":""},{"line_number":726,"context_line":"        self._update_x_timestamp(req, policy_index)"},{"line_number":727,"context_line":""},{"line_number":728,"context_line":"        source_header \u003d req.headers.get(\u0027X-Copy-From\u0027)"},{"line_number":729,"context_line":"        source_resp \u003d None"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_8100a467","line":726,"updated":"2015-03-18 02:23:32.000000000","message":"Like I said earlier, policy_index isn\u0027t used in the _update_x_timestamp so doesn\u0027t need to be passed. If it ever does then above we make sure the policy_index is placed inside the req, so we should never need to pass it.","commit_id":"c3b473387a2d4053169c3c278efcf87d3c64d7d6"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"5b53ecacee948f7e9d25d8b40438e7094b42d90a","unresolved":false,"context_lines":[{"line_number":723,"context_line":"        if error_response:"},{"line_number":724,"context_line":"            return error_response"},{"line_number":725,"context_line":""},{"line_number":726,"context_line":"        self._update_x_timestamp(req, policy_index)"},{"line_number":727,"context_line":""},{"line_number":728,"context_line":"        source_header \u003d req.headers.get(\u0027X-Copy-From\u0027)"},{"line_number":729,"context_line":"        source_resp \u003d None"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_25636e42","line":726,"in_reply_to":"9a80dd14_8100a467","updated":"2015-03-18 13:52:29.000000000","message":"Done","commit_id":"c3b473387a2d4053169c3c278efcf87d3c64d7d6"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"31c3a5a3ba50169edb50223e25d01fc5160150e2","unresolved":false,"context_lines":[{"line_number":506,"context_line":"        orig_account_name \u003d self.account_name"},{"line_number":507,"context_line":"        sink_req \u003d Request.blank(req.path_info,"},{"line_number":508,"context_line":"                                 environ\u003dreq.environ, headers\u003dreq.headers)"},{"line_number":509,"context_line":"        try:"},{"line_number":510,"context_line":"            self.object_name \u003d src_obj_name"},{"line_number":511,"context_line":"            self.container_name \u003d src_container_name"},{"line_number":512,"context_line":"            self.account_name \u003d src_account_name"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a80dd14_17b4dbf0","line":509,"updated":"2015-03-18 13:55:18.000000000","message":"I think I\u0027m missing something here.\n\nWhat kind of exception might be raised here? I think something like\n\n except SomeTerribleException:\n     pass\n     # Explaining comment what might happen\n\nshould be added, to make clear why there is a try..finally block  after the refactoring.","commit_id":"f970aed8b6a41e0ce438d24fc2bcff8e19d5c11e"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"3881453289632eea840d5d9e93ca7b378d3e9fe2","unresolved":false,"context_lines":[{"line_number":506,"context_line":"        orig_account_name \u003d self.account_name"},{"line_number":507,"context_line":"        sink_req \u003d Request.blank(req.path_info,"},{"line_number":508,"context_line":"                                 environ\u003dreq.environ, headers\u003dreq.headers)"},{"line_number":509,"context_line":"        try:"},{"line_number":510,"context_line":"            self.object_name \u003d src_obj_name"},{"line_number":511,"context_line":"            self.container_name \u003d src_container_name"},{"line_number":512,"context_line":"            self.account_name \u003d src_account_name"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a80dd14_0ecb9872","line":509,"in_reply_to":"9a80dd14_17b4dbf0","updated":"2015-03-19 20:16:15.000000000","message":"Done. Changed the code back to be just one method instead of spreading copy handling in 3 different places. I think this should be easy to digest for now until this functionality moves to middleware.","commit_id":"f970aed8b6a41e0ce438d24fc2bcff8e19d5c11e"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"ac77e99ddaf1f152c4adde7ffddedd40c3fb914c","unresolved":false,"context_lines":[{"line_number":366,"context_line":"                    node, _(\u0027Object\u0027),"},{"line_number":367,"context_line":"                    _(\u0027Expect: 100-continue on %s\u0027) % path)"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    def _await_response(self, conn, **kwargs):"},{"line_number":370,"context_line":"        with Timeout(self.app.node_timeout):"},{"line_number":371,"context_line":"            if conn.resp:"},{"line_number":372,"context_line":"                return conn.resp"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_555250de","line":369,"updated":"2015-03-21 01:59:40.000000000","message":"I had a debate with Clay before about wiring kwargs everywhere ahead of time, no matter if used. But in this case, it\u0027s internal function, not an API. I see no point in doing it. Do you have an implementation in EC branch which uses these? Fine, but you could add that later.","commit_id":"51de5bb482fc91ad003202e0a37ad05a2ed8963e"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"aad3c97964b4513f29f9ff5f958ebab305e2062c","unresolved":false,"context_lines":[{"line_number":366,"context_line":"                    node, _(\u0027Object\u0027),"},{"line_number":367,"context_line":"                    _(\u0027Expect: 100-continue on %s\u0027) % path)"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    def _await_response(self, conn, **kwargs):"},{"line_number":370,"context_line":"        with Timeout(self.app.node_timeout):"},{"line_number":371,"context_line":"            if conn.resp:"},{"line_number":372,"context_line":"                return conn.resp"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a75e904_e0927ef5","line":369,"in_reply_to":"9a80dd14_555250de","updated":"2015-03-21 16:31:44.000000000","message":"Yeah, the reason for doing this is because in EC there will be a different _await_response for ECObjectController.","commit_id":"51de5bb482fc91ad003202e0a37ad05a2ed8963e"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"a945604512cabb683d90acb8b0f77f63168c8300","unresolved":false,"context_lines":[{"line_number":391,"context_line":""},{"line_number":392,"context_line":"        pile \u003d GreenAsyncPile(len(conns))"},{"line_number":393,"context_line":"        for conn in conns:"},{"line_number":394,"context_line":"            pile.spawn(self._get_conn_response, conn, req)"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"        def _handle_response(conn, response):"},{"line_number":397,"context_line":"            statuses.append(response.status)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_ff416863","line":394,"updated":"2015-03-20 16:53:24.000000000","message":"Why do we need the \"req\" argument now?","commit_id":"51de5bb482fc91ad003202e0a37ad05a2ed8963e"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"902a189c316f8066f4c12107c4af1752ce1798e9","unresolved":false,"context_lines":[{"line_number":391,"context_line":""},{"line_number":392,"context_line":"        pile \u003d GreenAsyncPile(len(conns))"},{"line_number":393,"context_line":"        for conn in conns:"},{"line_number":394,"context_line":"            pile.spawn(self._get_conn_response, conn, req)"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"        def _handle_response(conn, response):"},{"line_number":397,"context_line":"            statuses.append(response.status)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_e4839cc8","line":394,"in_reply_to":"9a80dd14_ff416863","updated":"2015-03-20 18:30:50.000000000","message":"it\u0027s used to get the patch of the object in the call to exception_occurred","commit_id":"51de5bb482fc91ad003202e0a37ad05a2ed8963e"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"ac77e99ddaf1f152c4adde7ffddedd40c3fb914c","unresolved":false,"context_lines":[{"line_number":573,"context_line":"        This method was added as part of the PUT method refactoring and the"},{"line_number":574,"context_line":"        functionality is expected to be moved to middleware"},{"line_number":575,"context_line":"        \"\"\""},{"line_number":576,"context_line":"        container_info \u003d self.container_info("},{"line_number":577,"context_line":"            self.account_name, self.container_name, req)"},{"line_number":578,"context_line":"        policy_index \u003d req.headers.get(\u0027X-Backend-Storage-Policy-Index\u0027,"},{"line_number":579,"context_line":"                                       container_info[\u0027storage_policy\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_b857fc58","line":576,"updated":"2015-03-21 01:59:40.000000000","message":"Probably this was discussed, but why did you not pass container_info as an argument to _handle_object_versions?","commit_id":"51de5bb482fc91ad003202e0a37ad05a2ed8963e"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"aad3c97964b4513f29f9ff5f958ebab305e2062c","unresolved":false,"context_lines":[{"line_number":573,"context_line":"        This method was added as part of the PUT method refactoring and the"},{"line_number":574,"context_line":"        functionality is expected to be moved to middleware"},{"line_number":575,"context_line":"        \"\"\""},{"line_number":576,"context_line":"        container_info \u003d self.container_info("},{"line_number":577,"context_line":"            self.account_name, self.container_name, req)"},{"line_number":578,"context_line":"        policy_index \u003d req.headers.get(\u0027X-Backend-Storage-Policy-Index\u0027,"},{"line_number":579,"context_line":"                                       container_info[\u0027storage_policy\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a75e904_c0aca238","line":576,"in_reply_to":"9a80dd14_b857fc58","updated":"2015-03-21 16:31:44.000000000","message":"Basically just to keep the number of parameters low, we can get all the info we need from the request. We had previous versions where we were passing a really high number of parameters, so I tried to reduce it this way.\nI was thinking that this information is cached, so it wouldn\u0027t be costly to just call container_info again. does that seem correct?","commit_id":"51de5bb482fc91ad003202e0a37ad05a2ed8963e"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"ac77e99ddaf1f152c4adde7ffddedd40c3fb914c","unresolved":false,"context_lines":[{"line_number":779,"context_line":"        returned based on statuses from all connections"},{"line_number":780,"context_line":"        \"\"\""},{"line_number":781,"context_line":""},{"line_number":782,"context_line":"        # TODO: check if policy is None and return error???"},{"line_number":783,"context_line":"        policy \u003d POLICIES.get_by_index(policy_index)"},{"line_number":784,"context_line":"        if not nodes:"},{"line_number":785,"context_line":"            return HTTPNotFound()"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_981cf878","line":782,"updated":"2015-03-21 01:59:40.000000000","message":"It seems to me that you would not need this comment here if only you passed the object ring as an argument instead of policy_index. This is the only thing you\u0027re using policy_index here for. I presume this is pulled in by needs of EC, but in the code as it is it looks wrong.\n\nIf it is, then yea, you need to check. Even if it only lives for a week on master.","commit_id":"51de5bb482fc91ad003202e0a37ad05a2ed8963e"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"aad3c97964b4513f29f9ff5f958ebab305e2062c","unresolved":false,"context_lines":[{"line_number":779,"context_line":"        returned based on statuses from all connections"},{"line_number":780,"context_line":"        \"\"\""},{"line_number":781,"context_line":""},{"line_number":782,"context_line":"        # TODO: check if policy is None and return error???"},{"line_number":783,"context_line":"        policy \u003d POLICIES.get_by_index(policy_index)"},{"line_number":784,"context_line":"        if not nodes:"},{"line_number":785,"context_line":"            return HTTPNotFound()"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a6ff13c_c41cbe6d","line":782,"in_reply_to":"9a80dd14_981cf878","updated":"2015-03-21 16:31:44.000000000","message":"we will need the policy object in EC, so for now I\u0027m actually reverting back to getting the policy_index from the X-Backend-Storage-Policy-Index header in req that was set in the PUT method.\n\nThe policy_index could be \u0027None\u0027, but in that case get_by_index will just use policy 0 which must always exist.","commit_id":"51de5bb482fc91ad003202e0a37ad05a2ed8963e"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"ac77e99ddaf1f152c4adde7ffddedd40c3fb914c","unresolved":false,"context_lines":[{"line_number":793,"context_line":"                                          outgoing_headers, policy, expect)"},{"line_number":794,"context_line":""},{"line_number":795,"context_line":"        try:"},{"line_number":796,"context_line":"            # check that a minimun number of connections were established and"},{"line_number":797,"context_line":"            # meet all the correct conditions set in the request"},{"line_number":798,"context_line":"            self._check_failure_put_connections(conns, req, nodes)"},{"line_number":799,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a75e904_c6192224","line":796,"updated":"2015-03-21 01:59:40.000000000","message":"\"minimum\" certainly","commit_id":"51de5bb482fc91ad003202e0a37ad05a2ed8963e"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"aad3c97964b4513f29f9ff5f958ebab305e2062c","unresolved":false,"context_lines":[{"line_number":793,"context_line":"                                          outgoing_headers, policy, expect)"},{"line_number":794,"context_line":""},{"line_number":795,"context_line":"        try:"},{"line_number":796,"context_line":"            # check that a minimun number of connections were established and"},{"line_number":797,"context_line":"            # meet all the correct conditions set in the request"},{"line_number":798,"context_line":"            self._check_failure_put_connections(conns, req, nodes)"},{"line_number":799,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a6ff13c_e419ba7a","line":796,"in_reply_to":"7a75e904_c6192224","updated":"2015-03-21 16:31:44.000000000","message":"Done","commit_id":"51de5bb482fc91ad003202e0a37ad05a2ed8963e"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"6e3e07992713b3e185546d6b48b1b713bdbc9862","unresolved":false,"context_lines":[{"line_number":508,"context_line":"            # this is a bit of ugly code, but I\u0027m willing to live with it"},{"line_number":509,"context_line":"            # until copy request handling moves to middleware"},{"line_number":510,"context_line":"            return source_resp, None, None, None"},{"line_number":511,"context_line":"        if source_resp.content_length is None:"},{"line_number":512,"context_line":"            # This indicates a transfer-encoding: chunked source object,"},{"line_number":513,"context_line":"            # which currently only happens because there are more than"},{"line_number":514,"context_line":"            # CONTAINER_LISTING_LIMIT segments in a segmented object. In"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6ced46_de0e3234","line":511,"updated":"2015-03-23 10:44:49.000000000","message":"Hmm, looks like this is never touched, neither in unit tests, nor in functional tests. I also think that content_length is never None? Might be removed later on though, to keep this change separate","commit_id":"23d0842dec250905f68df601926ba8228392b322"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"3648f7a3a577a7dad51d61f279ba2aed9cc1ce42","unresolved":false,"context_lines":[{"line_number":508,"context_line":"            # this is a bit of ugly code, but I\u0027m willing to live with it"},{"line_number":509,"context_line":"            # until copy request handling moves to middleware"},{"line_number":510,"context_line":"            return source_resp, None, None, None"},{"line_number":511,"context_line":"        if source_resp.content_length is None:"},{"line_number":512,"context_line":"            # This indicates a transfer-encoding: chunked source object,"},{"line_number":513,"context_line":"            # which currently only happens because there are more than"},{"line_number":514,"context_line":"            # CONTAINER_LISTING_LIMIT segments in a segmented object. In"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6ced46_2cb1bcf8","line":511,"in_reply_to":"1a6ced46_de0e3234","updated":"2015-03-24 01:33:36.000000000","message":"I also think that the question of source_resp.content_length ought to be kept separate. Otherwise refactoring is no longer refactoring. That said, I\u0027m not sure that the comment below is false.","commit_id":"23d0842dec250905f68df601926ba8228392b322"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"6e3e07992713b3e185546d6b48b1b713bdbc9862","unresolved":false,"context_lines":[{"line_number":761,"context_line":"            self.app.logger.exception("},{"line_number":762,"context_line":"                _(\u0027ERROR Exception causing client disconnect\u0027))"},{"line_number":763,"context_line":"            raise HTTPClientDisconnect(request\u003dreq)"},{"line_number":764,"context_line":"        if req.content_length and bytes_transferred \u003c req.content_length:"},{"line_number":765,"context_line":"            req.client_disconnect \u003d True"},{"line_number":766,"context_line":"            self.app.logger.warn("},{"line_number":767,"context_line":"                _(\u0027Client disconnected without sending enough data\u0027))"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6ced46_caa2f199","line":764,"updated":"2015-03-23 10:44:49.000000000","message":"Untested as well?","commit_id":"23d0842dec250905f68df601926ba8228392b322"}]}
