)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"35820fc0e12239ba9de5bf0e2ac8a18e6eb6caf8","unresolved":false,"context_lines":[{"line_number":18,"context_line":"to the storlet. We introduce a new input stream at the storlet side"},{"line_number":19,"context_line":"that exposes to the storlet only the required range from that fd."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Thus without any change to the storlet API,m in case the original"},{"line_number":22,"context_line":"request has a range, the storlet will \u0027see\u0027 only that range"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Bonuses: fixing the disastorous tab/spaces mixed formatting"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1aa78d24_5a6084a5","line":21,"range":{"start_line":21,"start_character":43,"end_line":21,"end_character":44},"updated":"2016-07-06 12:10:06.000000000","message":"Please remove this :-)","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"},{"author":{"_account_id":11317,"name":"Eran Rom","email":"eran@itsonlyme.name","username":"eranr"},"change_message_id":"25c2d27bd605ec7b7a77dca3c100c596b0b71892","unresolved":false,"context_lines":[{"line_number":18,"context_line":"to the storlet. We introduce a new input stream at the storlet side"},{"line_number":19,"context_line":"that exposes to the storlet only the required range from that fd."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Thus without any change to the storlet API,m in case the original"},{"line_number":22,"context_line":"request has a range, the storlet will \u0027see\u0027 only that range"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Bonuses: fixing the disastorous tab/spaces mixed formatting"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1aa78d24_59f7d78a","line":21,"range":{"start_line":21,"start_character":43,"end_line":21,"end_character":44},"in_reply_to":"1aa78d24_5a6084a5","updated":"2016-07-06 14:24:08.000000000","message":"Done","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"}],"Engine/SBus/SBusPythonFacade/SBusDatagram.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"35820fc0e12239ba9de5bf0e2ac8a18e6eb6caf8","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        return json.dumps(self._md)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def __str__(self):"},{"line_number":91,"context_line":"        return \u0027num_fds\u003d%s, md\u003d%s, cmd_params\u003d%s\u0027 % ("},{"line_number":92,"context_line":"            self.num_fds,"},{"line_number":93,"context_line":"            str(self.serialized_md),"},{"line_number":94,"context_line":"            str(self.serialized_cmd_params))"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_fae2102e","line":91,"range":{"start_line":91,"start_character":16,"end_line":91,"end_character":48},"updated":"2016-07-06 12:10:06.000000000","message":"Q. Don\u0027t we need command and task_id?","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"},{"author":{"_account_id":11317,"name":"Eran Rom","email":"eran@itsonlyme.name","username":"eranr"},"change_message_id":"25c2d27bd605ec7b7a77dca3c100c596b0b71892","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        return json.dumps(self._md)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def __str__(self):"},{"line_number":91,"context_line":"        return \u0027num_fds\u003d%s, md\u003d%s, cmd_params\u003d%s\u0027 % ("},{"line_number":92,"context_line":"            self.num_fds,"},{"line_number":93,"context_line":"            str(self.serialized_md),"},{"line_number":94,"context_line":"            str(self.serialized_cmd_params))"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_df060fcd","line":91,"range":{"start_line":91,"start_character":16,"end_line":91,"end_character":48},"in_reply_to":"1aa78d24_fae2102e","updated":"2016-07-06 14:24:08.000000000","message":"The cmd_params \u0027encodes\u0027 all the command related info: the command the task id and the params","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"}],"Engine/SBus/SBusTransportLayer/sbus.c":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"35820fc0e12239ba9de5bf0e2ac8a18e6eb6caf8","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"int sbus_create( const char* str_sbus_path )"},{"line_number":93,"context_line":"{"},{"line_number":94,"context_line":"\tint n_status \u003d 0;"},{"line_number":95,"context_line":"    int n_sbus_handle \u003d socket( PF_UNIX, SOCK_DGRAM, 0 );"},{"line_number":96,"context_line":"    if( n_sbus_handle \u003c 0 )"},{"line_number":97,"context_line":"    {"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"1aa78d24_5ad2445d","line":94,"range":{"start_line":94,"start_character":0,"end_line":94,"end_character":1},"updated":"2016-07-06 12:10:06.000000000","message":"(nit) Can you remove this tab?","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"},{"author":{"_account_id":11317,"name":"Eran Rom","email":"eran@itsonlyme.name","username":"eranr"},"change_message_id":"25c2d27bd605ec7b7a77dca3c100c596b0b71892","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"int sbus_create( const char* str_sbus_path )"},{"line_number":93,"context_line":"{"},{"line_number":94,"context_line":"\tint n_status \u003d 0;"},{"line_number":95,"context_line":"    int n_sbus_handle \u003d socket( PF_UNIX, SOCK_DGRAM, 0 );"},{"line_number":96,"context_line":"    if( n_sbus_handle \u003c 0 )"},{"line_number":97,"context_line":"    {"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"1aa78d24_dfa28fad","line":94,"range":{"start_line":94,"start_character":0,"end_line":94,"end_character":1},"in_reply_to":"1aa78d24_5ad2445d","updated":"2016-07-06 14:24:08.000000000","message":"done","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"35820fc0e12239ba9de5bf0e2ac8a18e6eb6caf8","unresolved":false,"context_lines":[{"line_number":406,"context_line":"    if( 0 !\u003d n_status || SCM_RIGHTS !\u003d cmsg-\u003ecmsg_type ) {"},{"line_number":407,"context_line":"        syslog( LOG_ERR,"},{"line_number":408,"context_line":"                \"sbus_extract_files: cmsg with wrong type. Type is %d\","},{"line_number":409,"context_line":"\t\tcmsg-\u003ecmsg_type );"},{"line_number":410,"context_line":"        n_status \u003d -1;"},{"line_number":411,"context_line":"    }"},{"line_number":412,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"1aa78d24_3a3e588c","line":409,"range":{"start_line":409,"start_character":0,"end_line":409,"end_character":2},"updated":"2016-07-06 12:10:06.000000000","message":"Replace these tabs with spaces","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"},{"author":{"_account_id":11317,"name":"Eran Rom","email":"eran@itsonlyme.name","username":"eranr"},"change_message_id":"25c2d27bd605ec7b7a77dca3c100c596b0b71892","unresolved":false,"context_lines":[{"line_number":406,"context_line":"    if( 0 !\u003d n_status || SCM_RIGHTS !\u003d cmsg-\u003ecmsg_type ) {"},{"line_number":407,"context_line":"        syslog( LOG_ERR,"},{"line_number":408,"context_line":"                \"sbus_extract_files: cmsg with wrong type. Type is %d\","},{"line_number":409,"context_line":"\t\tcmsg-\u003ecmsg_type );"},{"line_number":410,"context_line":"        n_status \u003d -1;"},{"line_number":411,"context_line":"    }"},{"line_number":412,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"1aa78d24_9f9da768","line":409,"range":{"start_line":409,"start_character":0,"end_line":409,"end_character":2},"in_reply_to":"1aa78d24_3a3e588c","updated":"2016-07-06 14:24:08.000000000","message":"Done","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"35820fc0e12239ba9de5bf0e2ac8a18e6eb6caf8","unresolved":false,"context_lines":[{"line_number":439,"context_line":" */"},{"line_number":440,"context_line":"int sbus_recv_msg( int n_sbus_handler,"},{"line_number":441,"context_line":"                   int** pp_files,"},{"line_number":442,"context_line":"                   int*\tpn_files,"},{"line_number":443,"context_line":"                   char** pstr_files_metadata,"},{"line_number":444,"context_line":"                   int* pn_files_metadata_len,"},{"line_number":445,"context_line":"                   char** pstr_msg_data,"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"1aa78d24_ba4a4824","line":442,"range":{"start_line":442,"start_character":23,"end_line":442,"end_character":24},"updated":"2016-07-06 12:10:06.000000000","message":"Please remove this tab","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"},{"author":{"_account_id":11317,"name":"Eran Rom","email":"eran@itsonlyme.name","username":"eranr"},"change_message_id":"25c2d27bd605ec7b7a77dca3c100c596b0b71892","unresolved":false,"context_lines":[{"line_number":439,"context_line":" */"},{"line_number":440,"context_line":"int sbus_recv_msg( int n_sbus_handler,"},{"line_number":441,"context_line":"                   int** pp_files,"},{"line_number":442,"context_line":"                   int*\tpn_files,"},{"line_number":443,"context_line":"                   char** pstr_files_metadata,"},{"line_number":444,"context_line":"                   int* pn_files_metadata_len,"},{"line_number":445,"context_line":"                   char** pstr_msg_data,"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"1aa78d24_7fa8bb77","line":442,"range":{"start_line":442,"start_character":23,"end_line":442,"end_character":24},"in_reply_to":"1aa78d24_ba4a4824","updated":"2016-07-06 14:24:08.000000000","message":"Done","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"}],"Engine/SCommon/src/com/ibm/storlet/common/RangeFileInputStream.java":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"35820fc0e12239ba9de5bf0e2ac8a18e6eb6caf8","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                this.end \u003d end;"},{"line_number":49,"context_line":"                this.available \u003d (int)(end - start) + 1;"},{"line_number":50,"context_line":"                super.skip(start);"},{"line_number":51,"context_line":"        }   "},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        @Override"},{"line_number":54,"context_line":"        public int available() {"}],"source_content_type":"text/x-java","patch_set":5,"id":"1aa78d24_6af657fa","line":51,"range":{"start_line":51,"start_character":9,"end_line":51,"end_character":12},"updated":"2016-07-06 12:10:06.000000000","message":"Can you remove these spaces?","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"},{"author":{"_account_id":11317,"name":"Eran Rom","email":"eran@itsonlyme.name","username":"eranr"},"change_message_id":"25c2d27bd605ec7b7a77dca3c100c596b0b71892","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                this.end \u003d end;"},{"line_number":49,"context_line":"                this.available \u003d (int)(end - start) + 1;"},{"line_number":50,"context_line":"                super.skip(start);"},{"line_number":51,"context_line":"        }   "},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        @Override"},{"line_number":54,"context_line":"        public int available() {"}],"source_content_type":"text/x-java","patch_set":5,"id":"1aa78d24_df13afb6","line":51,"range":{"start_line":51,"start_character":9,"end_line":51,"end_character":12},"in_reply_to":"1aa78d24_6af657fa","updated":"2016-07-06 14:24:08.000000000","message":"Done","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"}],"Engine/SCommon/src/com/ibm/storlet/common/StorletInputStream.java":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"35820fc0e12239ba9de5bf0e2ac8a18e6eb6caf8","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"\tprotected StorletInputStream(HashMap\u003cString, String\u003e md) {"},{"line_number":36,"context_line":"\t\tmetadata \u003d md;"},{"line_number":37,"context_line":"\t}\t"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"\tpublic HashMap\u003cString, String\u003e getMetadata() {"},{"line_number":40,"context_line":"\t\treturn metadata;"}],"source_content_type":"text/x-java","patch_set":5,"id":"1aa78d24_ea5087d6","line":37,"range":{"start_line":37,"start_character":2,"end_line":37,"end_character":3},"updated":"2016-07-06 12:10:06.000000000","message":"Please remove this space","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"},{"author":{"_account_id":11317,"name":"Eran Rom","email":"eran@itsonlyme.name","username":"eranr"},"change_message_id":"25c2d27bd605ec7b7a77dca3c100c596b0b71892","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"\tprotected StorletInputStream(HashMap\u003cString, String\u003e md) {"},{"line_number":36,"context_line":"\t\tmetadata \u003d md;"},{"line_number":37,"context_line":"\t}\t"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"\tpublic HashMap\u003cString, String\u003e getMetadata() {"},{"line_number":40,"context_line":"\t\treturn metadata;"}],"source_content_type":"text/x-java","patch_set":5,"id":"1aa78d24_1f81b7c3","line":37,"range":{"start_line":37,"start_character":2,"end_line":37,"end_character":3},"in_reply_to":"1aa78d24_ea5087d6","updated":"2016-07-06 14:24:08.000000000","message":"Done","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"}],"Engine/SDaemon/src/com/ibm/storlet/daemon/STaskFactory.java":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"35820fc0e12239ba9de5bf0e2ac8a18e6eb6caf8","unresolved":false,"context_lines":[{"line_number":96,"context_line":"\t\t\t} else if (strFDtype.equals(\"SBUS_FD_INPUT_OBJECT\")) {"},{"line_number":97,"context_line":"\t\t\t\tthis.logger_.trace(\"createStorletTask: fd \" + i"},{"line_number":98,"context_line":"\t\t\t\t\t\t+ \" is of type SBUS_FD_INPUT_OBJECT\");"},{"line_number":99,"context_line":"                                String start \u003d storletsMetadata.get(\"start\");"},{"line_number":100,"context_line":"                                String end \u003d storletsMetadata.get(\"end\");"},{"line_number":101,"context_line":"                                if (start !\u003d null \u0026\u0026 end !\u003d null) {"},{"line_number":102,"context_line":"                                        RangeStorletInputStream rangeStream;"}],"source_content_type":"text/x-java","patch_set":5,"id":"1aa78d24_ea67e7b4","line":99,"range":{"start_line":99,"start_character":0,"end_line":99,"end_character":32},"updated":"2016-07-06 12:10:06.000000000","message":"Should we use tab instead of spaces?","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"},{"author":{"_account_id":11317,"name":"Eran Rom","email":"eran@itsonlyme.name","username":"eranr"},"change_message_id":"25c2d27bd605ec7b7a77dca3c100c596b0b71892","unresolved":false,"context_lines":[{"line_number":96,"context_line":"\t\t\t} else if (strFDtype.equals(\"SBUS_FD_INPUT_OBJECT\")) {"},{"line_number":97,"context_line":"\t\t\t\tthis.logger_.trace(\"createStorletTask: fd \" + i"},{"line_number":98,"context_line":"\t\t\t\t\t\t+ \" is of type SBUS_FD_INPUT_OBJECT\");"},{"line_number":99,"context_line":"                                String start \u003d storletsMetadata.get(\"start\");"},{"line_number":100,"context_line":"                                String end \u003d storletsMetadata.get(\"end\");"},{"line_number":101,"context_line":"                                if (start !\u003d null \u0026\u0026 end !\u003d null) {"},{"line_number":102,"context_line":"                                        RangeStorletInputStream rangeStream;"}],"source_content_type":"text/x-java","patch_set":5,"id":"1aa78d24_1f589789","line":99,"range":{"start_line":99,"start_character":0,"end_line":99,"end_character":32},"in_reply_to":"1aa78d24_ea67e7b4","updated":"2016-07-06 14:24:08.000000000","message":"yes. At least until we add a java style checker that wishes otherwise :-)","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"}],"Engine/swift/storlet_gateway/gateways/docker/gateway.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"35820fc0e12239ba9de5bf0e2ac8a18e6eb6caf8","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        # a derived request class for object or have some"},{"line_number":84,"context_line":"        # other field telling us whether to use the range or not."},{"line_number":85,"context_line":"        if srange and data_fd is not None:"},{"line_number":86,"context_line":"            r \u003d Range(srange)"},{"line_number":87,"context_line":"            # We are interested in extracting only a single range"},{"line_number":88,"context_line":"            # if there is more then one range the code path"},{"line_number":89,"context_line":"            # that deals with it is outside of the storlet code"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_4019a578","line":86,"range":{"start_line":86,"start_character":12,"end_line":86,"end_character":29},"updated":"2016-07-06 12:10:06.000000000","message":"Can we use parse Range value outside DockerStorletRequest?\n(maybe we can parse it in _get_storlet_invocation_data and pass it with specific keys in invocation dictionary)\n\nI\u0027ll migrate _build_storlet_request to handler module, because it is a swift specific function, and I think this parsing using swift Range should be also migrated at that time. Using Range outside DockerStorletRequest helps that migration.","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"},{"author":{"_account_id":11317,"name":"Eran Rom","email":"eran@itsonlyme.name","username":"eranr"},"change_message_id":"25c2d27bd605ec7b7a77dca3c100c596b0b71892","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        # a derived request class for object or have some"},{"line_number":84,"context_line":"        # other field telling us whether to use the range or not."},{"line_number":85,"context_line":"        if srange and data_fd is not None:"},{"line_number":86,"context_line":"            r \u003d Range(srange)"},{"line_number":87,"context_line":"            # We are interested in extracting only a single range"},{"line_number":88,"context_line":"            # if there is more then one range the code path"},{"line_number":89,"context_line":"            # that deals with it is outside of the storlet code"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_7915733e","line":86,"range":{"start_line":86,"start_character":12,"end_line":86,"end_character":29},"in_reply_to":"1aa78d24_4019a578","updated":"2016-07-06 14:24:08.000000000","message":"As discussed, we leave this to the movement of the storlet request stuff to the handlers.","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"35820fc0e12239ba9de5bf0e2ac8a18e6eb6caf8","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            # that deals with it is outside of the storlet code"},{"line_number":90,"context_line":"            # e.g. not the case where we execute locally on the"},{"line_number":91,"context_line":"            # object node and need to filter the range ourselves."},{"line_number":92,"context_line":"            self.start \u003d str(r.ranges[0][0])"},{"line_number":93,"context_line":"            self.end \u003d str(r.ranges[0][1])"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    @property"},{"line_number":96,"context_line":"    def generate_log(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_9a24ac60","line":93,"range":{"start_line":92,"start_character":0,"end_line":93,"end_character":42},"updated":"2016-07-06 12:10:06.000000000","message":"This should raise an exception for multiple range, to become more safe.","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"},{"author":{"_account_id":11317,"name":"Eran Rom","email":"eran@itsonlyme.name","username":"eranr"},"change_message_id":"25c2d27bd605ec7b7a77dca3c100c596b0b71892","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            # that deals with it is outside of the storlet code"},{"line_number":90,"context_line":"            # e.g. not the case where we execute locally on the"},{"line_number":91,"context_line":"            # object node and need to filter the range ourselves."},{"line_number":92,"context_line":"            self.start \u003d str(r.ranges[0][0])"},{"line_number":93,"context_line":"            self.end \u003d str(r.ranges[0][1])"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    @property"},{"line_number":96,"context_line":"    def generate_log(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_f927a3b3","line":93,"range":{"start_line":92,"start_character":0,"end_line":93,"end_character":42},"in_reply_to":"1aa78d24_9a24ac60","updated":"2016-07-06 14:24:08.000000000","message":"agree, suggest to do that in the handlers as well.","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"}],"Engine/swift/storlet_middleware/handlers/base.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"35820fc0e12239ba9de5bf0e2ac8a18e6eb6caf8","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    def is_storlet_range_request(self):"},{"line_number":140,"context_line":"        return \u0027X-Storlet-Range\u0027 in self.request.headers"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def _is_storlet_multiple_range_request(self):"},{"line_number":143,"context_line":"        if not self.is_storlet_range_request:"},{"line_number":144,"context_line":"            return False"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_c07f5564","line":142,"range":{"start_line":142,"start_character":4,"end_line":142,"end_character":49},"updated":"2016-07-06 12:10:06.000000000","message":"Let\u0027s make this as property, as we do for other is_foo functions.","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"},{"author":{"_account_id":11317,"name":"Eran Rom","email":"eran@itsonlyme.name","username":"eranr"},"change_message_id":"25c2d27bd605ec7b7a77dca3c100c596b0b71892","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    def is_storlet_range_request(self):"},{"line_number":140,"context_line":"        return \u0027X-Storlet-Range\u0027 in self.request.headers"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def _is_storlet_multiple_range_request(self):"},{"line_number":143,"context_line":"        if not self.is_storlet_range_request:"},{"line_number":144,"context_line":"            return False"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_b9323bf0","line":142,"range":{"start_line":142,"start_character":4,"end_line":142,"end_character":49},"in_reply_to":"1aa78d24_c07f5564","updated":"2016-07-06 14:24:08.000000000","message":"Done","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"35820fc0e12239ba9de5bf0e2ac8a18e6eb6caf8","unresolved":false,"context_lines":[{"line_number":144,"context_line":"            return False"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        r \u003d self.request.headers[\u0027X-Storlet-Range\u0027]"},{"line_number":147,"context_line":"        if len(Range(r).ranges) \u003e 1:"},{"line_number":148,"context_line":"            return True"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        return False"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def _has_run_on_proxy_header(self):"},{"line_number":153,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_e06c11d2","line":150,"range":{"start_line":147,"start_character":0,"end_line":150,"end_character":20},"updated":"2016-07-06 12:10:06.000000000","message":"(nit) How about this?\n\nreturn len(Range(r).ranges) \u003e 1","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"},{"author":{"_account_id":11317,"name":"Eran Rom","email":"eran@itsonlyme.name","username":"eranr"},"change_message_id":"25c2d27bd605ec7b7a77dca3c100c596b0b71892","unresolved":false,"context_lines":[{"line_number":144,"context_line":"            return False"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        r \u003d self.request.headers[\u0027X-Storlet-Range\u0027]"},{"line_number":147,"context_line":"        if len(Range(r).ranges) \u003e 1:"},{"line_number":148,"context_line":"            return True"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        return False"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def _has_run_on_proxy_header(self):"},{"line_number":153,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_992f7f87","line":150,"range":{"start_line":147,"start_character":0,"end_line":150,"end_character":20},"in_reply_to":"1aa78d24_e06c11d2","updated":"2016-07-06 14:24:08.000000000","message":"yep!","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"35820fc0e12239ba9de5bf0e2ac8a18e6eb6caf8","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        # If the range is being processed on the object node"},{"line_number":243,"context_line":"        # then we will get 200 as the response will not have a"},{"line_number":244,"context_line":"        # range iter."},{"line_number":245,"context_line":"        # Kota\u0027s remark: Since we replace the a response content range"},{"line_number":246,"context_line":"        # of the form: \u0027bytes x-y/z\u0027 with a input range of the form"},{"line_number":247,"context_line":"        # \u0027bytes\u003dx-y\u0027, do we want to replace the below with:"},{"line_number":248,"context_line":"        # new_headers[\u0027Storlet-Input-Range\u0027] \u003d req.headers[\u0027X-Storlet-Range\u0027]"},{"line_number":249,"context_line":"        if \u0027Content-Range\u0027 in resp.headers:"},{"line_number":250,"context_line":"            new_headers[\u0027Storlet-Input-Range\u0027] \u003d resp.headers[\u0027Content-Range\u0027]"},{"line_number":251,"context_line":"            new_headers.pop(\u0027Content-Range\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_80654db6","line":248,"range":{"start_line":245,"start_character":0,"end_line":248,"end_character":77},"updated":"2016-07-06 12:10:06.000000000","message":"IMO, Range related Storlet headers should follow the existing semantics of Range headers in swift, and it seems better to me to show range header in response here.","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"},{"author":{"_account_id":11317,"name":"Eran Rom","email":"eran@itsonlyme.name","username":"eranr"},"change_message_id":"25c2d27bd605ec7b7a77dca3c100c596b0b71892","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        # If the range is being processed on the object node"},{"line_number":243,"context_line":"        # then we will get 200 as the response will not have a"},{"line_number":244,"context_line":"        # range iter."},{"line_number":245,"context_line":"        # Kota\u0027s remark: Since we replace the a response content range"},{"line_number":246,"context_line":"        # of the form: \u0027bytes x-y/z\u0027 with a input range of the form"},{"line_number":247,"context_line":"        # \u0027bytes\u003dx-y\u0027, do we want to replace the below with:"},{"line_number":248,"context_line":"        # new_headers[\u0027Storlet-Input-Range\u0027] \u003d req.headers[\u0027X-Storlet-Range\u0027]"},{"line_number":249,"context_line":"        if \u0027Content-Range\u0027 in resp.headers:"},{"line_number":250,"context_line":"            new_headers[\u0027Storlet-Input-Range\u0027] \u003d resp.headers[\u0027Content-Range\u0027]"},{"line_number":251,"context_line":"            new_headers.pop(\u0027Content-Range\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_b9499b62","line":248,"range":{"start_line":245,"start_character":0,"end_line":248,"end_character":77},"in_reply_to":"1aa78d24_80654db6","updated":"2016-07-06 14:24:08.000000000","message":"Sure, deleted the remark lines","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"}],"tests/unit/swift/storlet_middleware/handlers/test_obj.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"35820fc0e12239ba9de5bf0e2ac8a18e6eb6caf8","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        self.assertEqual(\u0027206 Partial Content\u0027,"},{"line_number":135,"context_line":"                         self.got_statuses[-1])"},{"line_number":136,"context_line":"        self.assertTrue((\u0027Content-Range\u0027, \u0027bytes 1-6/8\u0027)"},{"line_number":137,"context_line":"                        in self.got_headers[0])"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def test_GET_slo_manifest_with_storlets(self):"},{"line_number":140,"context_line":"        target \u003d \u0027/sda1/p/AUTH_a/c/o\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_8080adc1","line":137,"updated":"2016-07-06 12:10:06.000000000","message":"Can we also check response body?","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"},{"author":{"_account_id":11317,"name":"Eran Rom","email":"eran@itsonlyme.name","username":"eranr"},"change_message_id":"25c2d27bd605ec7b7a77dca3c100c596b0b71892","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        self.assertEqual(\u0027206 Partial Content\u0027,"},{"line_number":135,"context_line":"                         self.got_statuses[-1])"},{"line_number":136,"context_line":"        self.assertTrue((\u0027Content-Range\u0027, \u0027bytes 1-6/8\u0027)"},{"line_number":137,"context_line":"                        in self.got_headers[0])"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def test_GET_slo_manifest_with_storlets(self):"},{"line_number":140,"context_line":"        target \u003d \u0027/sda1/p/AUTH_a/c/o\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_79973348","line":137,"in_reply_to":"1aa78d24_8080adc1","updated":"2016-07-06 14:24:08.000000000","message":"Done","commit_id":"0a20121fa4710f801e28f37ba072f1963725f1f3"}]}
