)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"20bd39b389c5ba70c88be767ede57e5971b06412","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: enforce running multi-input on the proxy"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Now, multi-input storlet(with \u0027X-Storlet-Extra-Resources\u0027) run"},{"line_number":10,"context_line":"on object-server side."},{"line_number":11,"context_line":"We expected that it run on proxy-server side."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5a3905b3_9c2a91e6","line":9,"updated":"2017-01-19 04:14:26.000000000","message":"(nit) runs","commit_id":"e5df6216b7b893918d2f19b93da5fed5edc6985b"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"20bd39b389c5ba70c88be767ede57e5971b06412","unresolved":false,"context_lines":[{"line_number":7,"context_line":"WIP: enforce running multi-input on the proxy"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Now, multi-input storlet(with \u0027X-Storlet-Extra-Resources\u0027) run"},{"line_number":10,"context_line":"on object-server side."},{"line_number":11,"context_line":"We expected that it run on proxy-server side."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Therefore, we enforce running multi-input on the proxy."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5a3905b3_dc8259c8","line":11,"range":{"start_line":10,"start_character":21,"end_line":11,"end_character":45},"updated":"2017-01-19 04:14:26.000000000","message":"but it causes that specified extra resources get ignored, as current object-server does not support X-Storlet-Extra-Resources.","commit_id":"e5df6216b7b893918d2f19b93da5fed5edc6985b"},{"author":{"_account_id":17901,"name":"Akihito Takai","email":"takaiak@nttdata.co.jp","username":"AkihitoTakai"},"change_message_id":"8d855b49a53d75a1c5482951e20d49c1b0c76691","unresolved":false,"context_lines":[{"line_number":7,"context_line":"WIP: enforce running multi-input on the proxy"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Now, multi-input storlet(with \u0027X-Storlet-Extra-Resources\u0027) run"},{"line_number":10,"context_line":"on object-server side."},{"line_number":11,"context_line":"We expected that it run on proxy-server side."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Therefore, we enforce running multi-input on the proxy."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5a3905b3_f63ad1e6","line":11,"range":{"start_line":10,"start_character":21,"end_line":11,"end_character":45},"in_reply_to":"5a3905b3_dc8259c8","updated":"2017-01-19 06:50:38.000000000","message":"Done","commit_id":"e5df6216b7b893918d2f19b93da5fed5edc6985b"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"20bd39b389c5ba70c88be767ede57e5971b06412","unresolved":false,"context_lines":[{"line_number":10,"context_line":"on object-server side."},{"line_number":11,"context_line":"We expected that it run on proxy-server side."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Therefore, we enforce running multi-input on the proxy."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I7fc2e72c3f39b5461f502ef314d0aba5686aa3f7"},{"line_number":16,"context_line":"Closes-Bug: #1657044"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5a3905b3_1c6dc132","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":55},"updated":"2017-01-19 04:14:26.000000000","message":"This patch forces multi-input storlet to run on proxy servers.","commit_id":"e5df6216b7b893918d2f19b93da5fed5edc6985b"},{"author":{"_account_id":17901,"name":"Akihito Takai","email":"takaiak@nttdata.co.jp","username":"AkihitoTakai"},"change_message_id":"8d855b49a53d75a1c5482951e20d49c1b0c76691","unresolved":false,"context_lines":[{"line_number":10,"context_line":"on object-server side."},{"line_number":11,"context_line":"We expected that it run on proxy-server side."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Therefore, we enforce running multi-input on the proxy."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I7fc2e72c3f39b5461f502ef314d0aba5686aa3f7"},{"line_number":16,"context_line":"Closes-Bug: #1657044"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5a3905b3_16403d56","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":55},"in_reply_to":"5a3905b3_1c6dc132","updated":"2017-01-19 06:50:38.000000000","message":"Done","commit_id":"e5df6216b7b893918d2f19b93da5fed5edc6985b"}],"storlets/swift_middleware/handlers/base.py":[{"author":{"_account_id":11317,"name":"Eran Rom","email":"eran@itsonlyme.name","username":"eranr"},"change_message_id":"3674e06550dd2291ef48ffcd07861069b2e9fa03","unresolved":false,"context_lines":[{"line_number":318,"context_line":"                raise HTTPBadRequest(\u0027X-Storlet-Run-On-Proxy header should \u0027"},{"line_number":319,"context_line":"                                     \u0027be empty\u0027, request\u003dself.request)"},{"line_number":320,"context_line":"            return True"},{"line_number":321,"context_line":"        if \u0027X-Storlet-Extra-Resources\u0027 in self.request.headers:"},{"line_number":322,"context_line":"            return True"},{"line_number":323,"context_line":"        return False"},{"line_number":324,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a3c09a3_5fc04650","line":321,"updated":"2017-01-18 09:29:26.000000000","message":"While this does the job, I think its not the optimal way, as we mix here two things:\n1. the run_on_proxy header\n2. the extra resources feature\nI think that a better way is to implement a new function:\n_has_extra_resources_header\nand modify the execute_on_proxy function in line 326 adding:\n\"or self._has_extra_resources_header()\"","commit_id":"21700fae1dda9ea9d21ad9c835646a33b7ef6f2d"},{"author":{"_account_id":17901,"name":"Akihito Takai","email":"takaiak@nttdata.co.jp","username":"AkihitoTakai"},"change_message_id":"a2d0095f9386e6eda605099ae48d89e87d0c9e76","unresolved":false,"context_lines":[{"line_number":318,"context_line":"                raise HTTPBadRequest(\u0027X-Storlet-Run-On-Proxy header should \u0027"},{"line_number":319,"context_line":"                                     \u0027be empty\u0027, request\u003dself.request)"},{"line_number":320,"context_line":"            return True"},{"line_number":321,"context_line":"        if \u0027X-Storlet-Extra-Resources\u0027 in self.request.headers:"},{"line_number":322,"context_line":"            return True"},{"line_number":323,"context_line":"        return False"},{"line_number":324,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a3c09a3_5aa134f7","line":321,"in_reply_to":"7a3c09a3_5fc04650","updated":"2017-01-18 09:43:02.000000000","message":"I see!\nI will create \u0027_has_extra_resources_header\u0027 method.\nThank you.","commit_id":"21700fae1dda9ea9d21ad9c835646a33b7ef6f2d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"20bd39b389c5ba70c88be767ede57e5971b06412","unresolved":false,"context_lines":[{"line_number":307,"context_line":"        r \u003d self.request.headers[\u0027X-Storlet-Range\u0027]"},{"line_number":308,"context_line":"        return len(Range(r).ranges) \u003e 1"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    def _has_run_on_proxy_header(self):"},{"line_number":311,"context_line":"        \"\"\""},{"line_number":312,"context_line":"        Check whether there is a header mandating storlet execution on proxy"},{"line_number":313,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_7cd8851e","line":310,"range":{"start_line":310,"start_character":8,"end_line":310,"end_character":32},"updated":"2017-01-19 04:14:26.000000000","message":"Please see my comment below first.\nIf we make has_extra_resources_header as property, I think it is more consistent to have also this function as property.","commit_id":"e5df6216b7b893918d2f19b93da5fed5edc6985b"},{"author":{"_account_id":17901,"name":"Akihito Takai","email":"takaiak@nttdata.co.jp","username":"AkihitoTakai"},"change_message_id":"8d855b49a53d75a1c5482951e20d49c1b0c76691","unresolved":false,"context_lines":[{"line_number":307,"context_line":"        r \u003d self.request.headers[\u0027X-Storlet-Range\u0027]"},{"line_number":308,"context_line":"        return len(Range(r).ranges) \u003e 1"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    def _has_run_on_proxy_header(self):"},{"line_number":311,"context_line":"        \"\"\""},{"line_number":312,"context_line":"        Check whether there is a header mandating storlet execution on proxy"},{"line_number":313,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_962c2dad","line":310,"range":{"start_line":310,"start_character":8,"end_line":310,"end_character":32},"in_reply_to":"5a3905b3_7cd8851e","updated":"2017-01-19 06:50:38.000000000","message":"Done","commit_id":"e5df6216b7b893918d2f19b93da5fed5edc6985b"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"20bd39b389c5ba70c88be767ede57e5971b06412","unresolved":false,"context_lines":[{"line_number":320,"context_line":"            return True"},{"line_number":321,"context_line":"        return False"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    def _has_extra_resources_header(self):"},{"line_number":324,"context_line":"        \"\"\""},{"line_number":325,"context_line":"        Check whether there is a header mandating storlet execution on proxy"},{"line_number":326,"context_line":"        Enforce running on proxy if \u0027X-Storlet-Extra-Resources\u0027 exists in"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_dce6d9e7","line":323,"range":{"start_line":323,"start_character":8,"end_line":323,"end_character":35},"updated":"2017-01-19 04:14:26.000000000","message":"Does it make sense to have this function as property? Please note that we can remove the beginning \u0027_\u0027 in that case.","commit_id":"e5df6216b7b893918d2f19b93da5fed5edc6985b"},{"author":{"_account_id":17901,"name":"Akihito Takai","email":"takaiak@nttdata.co.jp","username":"AkihitoTakai"},"change_message_id":"8d855b49a53d75a1c5482951e20d49c1b0c76691","unresolved":false,"context_lines":[{"line_number":320,"context_line":"            return True"},{"line_number":321,"context_line":"        return False"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    def _has_extra_resources_header(self):"},{"line_number":324,"context_line":"        \"\"\""},{"line_number":325,"context_line":"        Check whether there is a header mandating storlet execution on proxy"},{"line_number":326,"context_line":"        Enforce running on proxy if \u0027X-Storlet-Extra-Resources\u0027 exists in"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_d61cf579","line":323,"range":{"start_line":323,"start_character":8,"end_line":323,"end_character":35},"in_reply_to":"5a3905b3_dce6d9e7","updated":"2017-01-19 06:50:38.000000000","message":"Done","commit_id":"e5df6216b7b893918d2f19b93da5fed5edc6985b"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"20bd39b389c5ba70c88be767ede57e5971b06412","unresolved":false,"context_lines":[{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    def _has_extra_resources_header(self):"},{"line_number":324,"context_line":"        \"\"\""},{"line_number":325,"context_line":"        Check whether there is a header mandating storlet execution on proxy"},{"line_number":326,"context_line":"        Enforce running on proxy if \u0027X-Storlet-Extra-Resources\u0027 exists in"},{"line_number":327,"context_line":"        request header"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        :return: Whether a header exists mandating storlet execution on proxy"},{"line_number":330,"context_line":"        \"\"\""},{"line_number":331,"context_line":"        if \u0027X-Storlet-Extra-Resources\u0027 in self.request.headers:"},{"line_number":332,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_dcafb97b","line":329,"range":{"start_line":325,"start_character":8,"end_line":329,"end_character":77},"updated":"2017-01-19 04:14:26.000000000","message":"Please change this comment like \n\nCheck if the client specifies multi input storlet execution\n\nIf the request contains \u0027X-Storlet-Extra-Resources\u0027 header,\nStorlets gathers multiple object data into the place, which\ncurrently should happen in proxy-server currently.\n\n:return: Whether the request contains X-Storlet-Extra-Resources header","commit_id":"e5df6216b7b893918d2f19b93da5fed5edc6985b"},{"author":{"_account_id":17901,"name":"Akihito Takai","email":"takaiak@nttdata.co.jp","username":"AkihitoTakai"},"change_message_id":"8d855b49a53d75a1c5482951e20d49c1b0c76691","unresolved":false,"context_lines":[{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    def _has_extra_resources_header(self):"},{"line_number":324,"context_line":"        \"\"\""},{"line_number":325,"context_line":"        Check whether there is a header mandating storlet execution on proxy"},{"line_number":326,"context_line":"        Enforce running on proxy if \u0027X-Storlet-Extra-Resources\u0027 exists in"},{"line_number":327,"context_line":"        request header"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        :return: Whether a header exists mandating storlet execution on proxy"},{"line_number":330,"context_line":"        \"\"\""},{"line_number":331,"context_line":"        if \u0027X-Storlet-Extra-Resources\u0027 in self.request.headers:"},{"line_number":332,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_f611f15e","line":329,"range":{"start_line":325,"start_character":8,"end_line":329,"end_character":77},"in_reply_to":"5a3905b3_dcafb97b","updated":"2017-01-19 06:50:38.000000000","message":"Done","commit_id":"e5df6216b7b893918d2f19b93da5fed5edc6985b"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"20bd39b389c5ba70c88be767ede57e5971b06412","unresolved":false,"context_lines":[{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        :return: Whether a header exists mandating storlet execution on proxy"},{"line_number":330,"context_line":"        \"\"\""},{"line_number":331,"context_line":"        if \u0027X-Storlet-Extra-Resources\u0027 in self.request.headers:"},{"line_number":332,"context_line":"            return True"},{"line_number":333,"context_line":"        return False"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"    @property"},{"line_number":336,"context_line":"    def execute_on_proxy(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_1cf8617c","line":333,"range":{"start_line":331,"start_character":0,"end_line":333,"end_character":20},"updated":"2017-01-19 04:14:26.000000000","message":"Why not just \n\nreturn \u0027X-Storlet-Extra-Resources\u0027 in self.request.headers","commit_id":"e5df6216b7b893918d2f19b93da5fed5edc6985b"},{"author":{"_account_id":17901,"name":"Akihito Takai","email":"takaiak@nttdata.co.jp","username":"AkihitoTakai"},"change_message_id":"8d855b49a53d75a1c5482951e20d49c1b0c76691","unresolved":false,"context_lines":[{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        :return: Whether a header exists mandating storlet execution on proxy"},{"line_number":330,"context_line":"        \"\"\""},{"line_number":331,"context_line":"        if \u0027X-Storlet-Extra-Resources\u0027 in self.request.headers:"},{"line_number":332,"context_line":"            return True"},{"line_number":333,"context_line":"        return False"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"    @property"},{"line_number":336,"context_line":"    def execute_on_proxy(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_16175d52","line":333,"range":{"start_line":331,"start_character":0,"end_line":333,"end_character":20},"in_reply_to":"5a3905b3_1cf8617c","updated":"2017-01-19 06:50:38.000000000","message":"Done","commit_id":"e5df6216b7b893918d2f19b93da5fed5edc6985b"}]}
