)]}'
{"storlets/swift_middleware/handlers/obj.py":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"232cc5e2e0a4c3fc6dd905ff51d47f353094510a","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            srange \u003d Range(req.headers[\u0027X-Storlet-Range\u0027])"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"            # As we should include the end byte in HTTP Range, here we +1"},{"line_number":59,"context_line":"            # for the end cursol so that we can treat it as general range"},{"line_number":60,"context_line":"            # (include start, and exclude end)"},{"line_number":61,"context_line":"            options[\u0027range_start\u0027] \u003d srange.ranges[0][0]"},{"line_number":62,"context_line":"            options[\u0027range_end\u0027] \u003d srange.ranges[0][1] + 1"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_985694cc","line":59,"range":{"start_line":59,"start_character":26,"end_line":59,"end_character":32},"updated":"2017-02-07 10:36:56.000000000","message":"cursor","commit_id":"cd5e37b79229affb2b833282dfc4ad2526c51dc7"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"af6293feb058f99b9e035ebe18d53cea96a698eb","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            srange \u003d Range(req.headers[\u0027X-Storlet-Range\u0027])"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"            # As we should include the end byte in HTTP Range, here we +1"},{"line_number":59,"context_line":"            # for the end cursol so that we can treat it as general range"},{"line_number":60,"context_line":"            # (include start, and exclude end)"},{"line_number":61,"context_line":"            options[\u0027range_start\u0027] \u003d srange.ranges[0][0]"},{"line_number":62,"context_line":"            options[\u0027range_end\u0027] \u003d srange.ranges[0][1] + 1"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_49d5401a","line":59,"range":{"start_line":59,"start_character":26,"end_line":59,"end_character":32},"in_reply_to":"1a430d35_985694cc","updated":"2017-02-07 12:54:58.000000000","message":"will fix","commit_id":"cd5e37b79229affb2b833282dfc4ad2526c51dc7"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"232cc5e2e0a4c3fc6dd905ff51d47f353094510a","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            # for the end cursol so that we can treat it as general range"},{"line_number":60,"context_line":"            # (include start, and exclude end)"},{"line_number":61,"context_line":"            options[\u0027range_start\u0027] \u003d srange.ranges[0][0]"},{"line_number":62,"context_line":"            options[\u0027range_end\u0027] \u003d srange.ranges[0][1] + 1"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        return options"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_185464c8","line":62,"updated":"2017-02-07 10:36:56.000000000","message":"I\u0027m not sure this looks odd to me because the srange which is an instance of swob.Range should be consistent with RFC but we should add +1 at this???\n\nSo probably that is from the difference range start and range end in the RFC and Storlet agent that could make us hard to maintain so imo we may need an encapsulation or definition.\n\nPerhaps, we should not use same words for the include/exclude end as *range_end*. Maybe?","commit_id":"cd5e37b79229affb2b833282dfc4ad2526c51dc7"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"af6293feb058f99b9e035ebe18d53cea96a698eb","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            # for the end cursol so that we can treat it as general range"},{"line_number":60,"context_line":"            # (include start, and exclude end)"},{"line_number":61,"context_line":"            options[\u0027range_start\u0027] \u003d srange.ranges[0][0]"},{"line_number":62,"context_line":"            options[\u0027range_end\u0027] \u003d srange.ranges[0][1] + 1"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        return options"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_d0ae3097","line":62,"in_reply_to":"1a430d35_185464c8","updated":"2017-02-07 12:54:58.000000000","message":"The reason why I made change in this layer is that it is more popular that we do not include the last byte of range[1][2], and HTTP Range which include last byte seems a kind of exception case to me.\n\n[1] Java case: https://docs.oracle.com/javase/jp/8/docs/api/java/util/stream/IntStream.html#range-int-int-\n[2] Python case: https://docs.python.org/2.7/library/functions.html?highlight\u003drange#range\n\nIMO, Storlet, which can be a general framework to realize in-storage computation, should not depends deeply on HTTP protocol, and in this point, we use mor general semantics which does not include end case inside storlet engine (here I mean gateway)","commit_id":"cd5e37b79229affb2b833282dfc4ad2526c51dc7"}],"tests/functional/java/test_identity_storlet.py":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"232cc5e2e0a4c3fc6dd905ff51d47f353094510a","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        srange \u003d \u0027bytes\u003d%d-%d\u0027 % (start, end)"},{"line_number":180,"context_line":"        headers \u003d {\u0027X-Run-Storlet\u0027: self.storlet_name,"},{"line_number":181,"context_line":"                   \u0027X-Storlet-Range\u0027: srange}"},{"line_number":182,"context_line":"        headers.update(self.additional_headers)"},{"line_number":183,"context_line":"        junk, content \u003d c.get_object(self.url, self.token,"},{"line_number":184,"context_line":"                                     \u0027myobjects\u0027,"},{"line_number":185,"context_line":"                                     \u0027small\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_9d7126ab","line":182,"updated":"2017-02-07 10:36:56.000000000","message":"I\u0027m wondering why we need to update the header dict with empty additional_headers?\n\nExactly some places seem to be doing as well though.","commit_id":"cd5e37b79229affb2b833282dfc4ad2526c51dc7"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"af6293feb058f99b9e035ebe18d53cea96a698eb","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        srange \u003d \u0027bytes\u003d%d-%d\u0027 % (start, end)"},{"line_number":180,"context_line":"        headers \u003d {\u0027X-Run-Storlet\u0027: self.storlet_name,"},{"line_number":181,"context_line":"                   \u0027X-Storlet-Range\u0027: srange}"},{"line_number":182,"context_line":"        headers.update(self.additional_headers)"},{"line_number":183,"context_line":"        junk, content \u003d c.get_object(self.url, self.token,"},{"line_number":184,"context_line":"                                     \u0027myobjects\u0027,"},{"line_number":185,"context_line":"                                     \u0027small\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_4991c046","line":182,"in_reply_to":"1a430d35_9d7126ab","updated":"2017-02-07 12:54:58.000000000","message":"In current test codes, we need this kind of update in all storlet execution so that we can set X-Storlet-Run-On-Proxy header in Test****OnProxy class.\n\nI have some ideas to refactor this odd update here, but as short-term solution I\u0027d like to add here this update, so that range request is executed with run-on-proxy header in TestIdentityStorletOnProxy class.","commit_id":"cd5e37b79229affb2b833282dfc4ad2526c51dc7"}],"tests/functional/python/test_simple_storlet.py":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"232cc5e2e0a4c3fc6dd905ff51d47f353094510a","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            response_dict\u003dresp, headers\u003dreq_headers)"},{"line_number":46,"context_line":"        self.assertEqual(200, resp[\u0027status\u0027])"},{"line_number":47,"context_line":"        self.assertEqual(\u0027simple\u0027, headers[\u0027x-object-meta-test\u0027])"},{"line_number":48,"context_line":"        self.assertEqual(self.content[1:5], content)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def test_put(self):"},{"line_number":51,"context_line":"        objname \u003d self.storlet_file + \u0027-put\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_9da846dd","line":48,"updated":"2017-02-07 10:36:56.000000000","message":"This looks good.","commit_id":"cd5e37b79229affb2b833282dfc4ad2526c51dc7"}],"tests/unit/swift_middleware/handlers/test_obj.py":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"f91a6270a18fa175db1b2cc84009d7571b3bf2a7","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        self.assertFalse(options[\u0027generate_log\u0027])"},{"line_number":266,"context_line":"        self.assertNotIn(\u0027storlet_range\u0027, options)"},{"line_number":267,"context_line":"        self.assertEqual(1, options[\u0027range_start\u0027])"},{"line_number":268,"context_line":"        self.assertEqual(7, options[\u0027range_end\u0027])"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a22e58a_f4456617","line":268,"updated":"2017-03-14 08:19:17.000000000","message":"Ok, so the general range should be [1, 7) and the http range [1, 6], they should be equal to each other in the bytes world.","commit_id":"80ca2dacb91aefbc67659fabe4b8a6ee8c092b9d"}]}
