)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"7ea27783f78ad343dde4be604d2113e62ac46a51","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix COPY request"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently COPY middleware is created in swift, and"},{"line_number":10,"context_line":"\"COPY\" is allocated to the left of the \"storlets_handler\""},{"line_number":11,"context_line":"in the pipeline of proxy-server."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch fixes so that \"storlets_handler\" will move"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"dada55a8_e1b525ed","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":57},"updated":"2016-07-26 16:28:49.000000000","message":"Please write mode detail about the problem caused by copy middlware placed in the left of storlet_handler","commit_id":"f8ab9069a58078b9cd3c260bed024fbbcdb95ab6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"741562cdae4a01d530bb42ce480fafd83dc3f86b","unresolved":false,"context_lines":[{"line_number":17,"context_line":"2. COPY request handles storlets twice"},{"line_number":18,"context_line":" storlets is processed in the GET request and the PUT request."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"This patch fixes so that \"storlets_handler\" will move"},{"line_number":21,"context_line":"to the left of the \"COPY\" in the pipeline."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I325e28451bf0ee1dead88e0cb6009d3f7265b677"},{"line_number":24,"context_line":"Closes-Bug: #1606446"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bacf61ea_5b750a30","line":21,"range":{"start_line":20,"start_character":0,"end_line":21,"end_character":42},"updated":"2016-07-30 14:03:55.000000000","message":"Please write directly the reason why you put storlet_handler in the left of copy middleware, like the following.\n\nThis patch moves storlet_handler to the left of copy middleware, to process COPY request in storlet_handler, as we did with previous swift.","commit_id":"fcf1ce65ed0efce9aeae1560f2af9a606db489c2"}],"Engine/swift/storlet_middleware/handlers/proxy.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"7ea27783f78ad343dde4be604d2113e62ac46a51","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from six.moves.urllib.parse import quote"},{"line_number":17,"context_line":"# This is required by the COPY middleware."},{"line_number":18,"context_line":"try:"},{"line_number":19,"context_line":"    from swift.common.middleware.copy import \\"},{"line_number":20,"context_line":"        _check_copy_from_header as check_copy_from_header, \\"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_41fa31be","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":42},"updated":"2016-07-26 16:28:49.000000000","message":"This is not required \u0027by\u0027 the COPY middleware, right?","commit_id":"f8ab9069a58078b9cd3c260bed024fbbcdb95ab6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"7ea27783f78ad343dde4be604d2113e62ac46a51","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    from swift.common.middleware.copy import \\"},{"line_number":20,"context_line":"        _check_copy_from_header as check_copy_from_header, \\"},{"line_number":21,"context_line":"        _check_destination_header as check_destination_header"},{"line_number":22,"context_line":"except ImportError:"},{"line_number":23,"context_line":"    from swift.common.constraints import check_copy_from_header, \\"},{"line_number":24,"context_line":"        check_destination_header"},{"line_number":25,"context_line":"from swift.common.swob import HTTPBadRequest, HTTPUnauthorized, \\"},{"line_number":26,"context_line":"    HTTPMethodNotAllowed, HTTPPreconditionFailed"},{"line_number":27,"context_line":"from swift.common.utils import config_true_value, public, FileLikeIter"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_e159a5fe","line":24,"range":{"start_line":22,"start_character":0,"end_line":24,"end_character":32},"updated":"2016-07-26 16:28:49.000000000","message":"Please add a comment about the reason why we should care about ImportError. I\u0027m expecting something like\n\nThis is required to keep compatibility with swift \u003c 2.8.0 which does not have copy middleware","commit_id":"f8ab9069a58078b9cd3c260bed024fbbcdb95ab6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"1fafaabcc794117139161f3b5cc67a20bce92a1d","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from six.moves.urllib.parse import quote"},{"line_number":17,"context_line":"# Fix import destination."},{"line_number":18,"context_line":"# import destination changed by the COPY middleware is created."},{"line_number":19,"context_line":"try:"},{"line_number":20,"context_line":"    from swift.common.middleware.copy import \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_47e1b399","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":25},"updated":"2016-07-30 07:09:30.000000000","message":"I\u0027m afraid somebody mistakes this as a TODO comment.\nCan we remove this?","commit_id":"fcf1ce65ed0efce9aeae1560f2af9a606db489c2"},{"author":{"_account_id":18462,"name":"Rahul U Nair","email":"rahulunair@gmail.com","username":"rahulunair"},"change_message_id":"c47ac24cc129fb78152a3f195848a60c2969d69d","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from six.moves.urllib.parse import quote"},{"line_number":17,"context_line":"# Fix import destination."},{"line_number":18,"context_line":"# import destination changed by the COPY middleware is created."},{"line_number":19,"context_line":"try:"},{"line_number":20,"context_line":"    from swift.common.middleware.copy import \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_f6717377","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":25},"in_reply_to":"bacf61ea_47e1b399","updated":"2016-07-30 15:40:31.000000000","message":"+1","commit_id":"fcf1ce65ed0efce9aeae1560f2af9a606db489c2"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"1fafaabcc794117139161f3b5cc67a20bce92a1d","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from six.moves.urllib.parse import quote"},{"line_number":17,"context_line":"# Fix import destination."},{"line_number":18,"context_line":"# import destination changed by the COPY middleware is created."},{"line_number":19,"context_line":"try:"},{"line_number":20,"context_line":"    from swift.common.middleware.copy import \\"},{"line_number":21,"context_line":"        _check_copy_from_header as check_copy_from_header, \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_a7c98f28","line":18,"range":{"start_line":18,"start_character":2,"end_line":18,"end_character":31},"updated":"2016-07-30 07:09:30.000000000","message":"How about this?\n\nWe need to import copy helper functions from copy middleware since it is introduced to swift.\n\n\nAlso, it seems better to me to place this comment inside try block, as we do for the old import path inside coming except block.","commit_id":"fcf1ce65ed0efce9aeae1560f2af9a606db489c2"},{"author":{"_account_id":18462,"name":"Rahul U Nair","email":"rahulunair@gmail.com","username":"rahulunair"},"change_message_id":"c47ac24cc129fb78152a3f195848a60c2969d69d","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from six.moves.urllib.parse import quote"},{"line_number":17,"context_line":"# Fix import destination."},{"line_number":18,"context_line":"# import destination changed by the COPY middleware is created."},{"line_number":19,"context_line":"try:"},{"line_number":20,"context_line":"    from swift.common.middleware.copy import \\"},{"line_number":21,"context_line":"        _check_copy_from_header as check_copy_from_header, \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_566b1f85","line":18,"range":{"start_line":18,"start_character":2,"end_line":18,"end_character":31},"in_reply_to":"bacf61ea_a7c98f28","updated":"2016-07-30 15:40:31.000000000","message":"+1, makes it clear","commit_id":"fcf1ce65ed0efce9aeae1560f2af9a606db489c2"}],"install/storlets/roles/common_files/swift_config.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"7ea27783f78ad343dde4be604d2113e62ac46a51","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    if storlet_middleware in mds:"},{"line_number":57,"context_line":"        return orig_line"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    # This is required by the COPY middleware."},{"line_number":60,"context_line":"    try:"},{"line_number":61,"context_line":"        copy_index \u003d mds.index(\u0027copy\u0027)"},{"line_number":62,"context_line":"    except Exception:"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_21a1fd94","line":59,"range":{"start_line":59,"start_character":4,"end_line":59,"end_character":46},"updated":"2016-07-26 16:28:49.000000000","message":"ditto","commit_id":"f8ab9069a58078b9cd3c260bed024fbbcdb95ab6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"7ea27783f78ad343dde4be604d2113e62ac46a51","unresolved":false,"context_lines":[{"line_number":74,"context_line":"            mds.insert(slo_index, storlet_middleware)"},{"line_number":75,"context_line":"        else:"},{"line_number":76,"context_line":"            proxy_index \u003d mds.index(\u0027proxy-server\u0027)"},{"line_number":77,"context_line":"            mds.insert(proxy_index, storlet_middleware)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    new_line \u003d \u0027pipeline \u003d\u0027"},{"line_number":80,"context_line":"    for md in mds:"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_01e5d9a2","line":77,"updated":"2016-07-26 16:28:49.000000000","message":"Can you add a little more detailed comment about the policy about the placement of storlet_handler?","commit_id":"f8ab9069a58078b9cd3c260bed024fbbcdb95ab6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"1fafaabcc794117139161f3b5cc67a20bce92a1d","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    if storlet_middleware in mds:"},{"line_number":57,"context_line":"        return orig_line"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    # If there is COPY middleware, storlet_hander is placed"},{"line_number":60,"context_line":"    # in the left of COPY middleware."},{"line_number":61,"context_line":"    try:"},{"line_number":62,"context_line":"        copy_index \u003d mds.index(\u0027copy\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_67fb1748","line":59,"range":{"start_line":59,"start_character":18,"end_line":59,"end_character":22},"updated":"2016-07-30 07:09:30.000000000","message":"(nit) Is it better to use lower case, \u0027copy\u0027 for middleware name, as we do for slo?","commit_id":"fcf1ce65ed0efce9aeae1560f2af9a606db489c2"},{"author":{"_account_id":18462,"name":"Rahul U Nair","email":"rahulunair@gmail.com","username":"rahulunair"},"change_message_id":"c47ac24cc129fb78152a3f195848a60c2969d69d","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    if storlet_middleware in mds:"},{"line_number":57,"context_line":"        return orig_line"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    # If there is COPY middleware, storlet_hander is placed"},{"line_number":60,"context_line":"    # in the left of COPY middleware."},{"line_number":61,"context_line":"    try:"},{"line_number":62,"context_line":"        copy_index \u003d mds.index(\u0027copy\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_b6125b07","line":59,"range":{"start_line":59,"start_character":18,"end_line":59,"end_character":22},"in_reply_to":"bacf61ea_67fb1748","updated":"2016-07-30 15:40:31.000000000","message":"nit: as copy is really generic term, may be `copy` in quotes would be better","commit_id":"fcf1ce65ed0efce9aeae1560f2af9a606db489c2"}]}
