)]}'
{"swift/common/middleware/s3api/controllers/multi_upload.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4b156a27cdad5dbc9dc86150fe33e325dcba5791","unresolved":true,"context_lines":[{"line_number":502,"context_line":"            \u0027format\u0027: \u0027json\u0027,"},{"line_number":503,"context_line":"            \u0027limit\u0027: self.conf.max_upload_part_num,"},{"line_number":504,"context_line":"            \u0027prefix\u0027: \u0027%s/%s/\u0027 % (req.object_name, upload_id),"},{"line_number":505,"context_line":"            \u0027delimiter\u0027: \u0027/\u0027"},{"line_number":506,"context_line":"        }"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"        container \u003d req.container_name + MULTIUPLOAD_SUFFIX"}],"source_content_type":"text/x-python","patch_set":2,"id":"4f372a48_f01787d9","line":505,"updated":"2021-09-28 04:06:13.000000000","message":"Off-topic: we should probably drop the delimiter -- we don\u0027t expect any subdir entries, and if we happened upon one, it could trip a KeyError when we update marker.","commit_id":"c2d1783e22c61ab645754598b918ba4b538c7527"},{"author":{"_account_id":17363,"name":"Timur Alperovich","email":"timur@timuralp.com","username":"timuralp"},"change_message_id":"2a8885ae3e2706fe5e68c604d519904c96cb32b0","unresolved":false,"context_lines":[{"line_number":502,"context_line":"            \u0027format\u0027: \u0027json\u0027,"},{"line_number":503,"context_line":"            \u0027limit\u0027: self.conf.max_upload_part_num,"},{"line_number":504,"context_line":"            \u0027prefix\u0027: \u0027%s/%s/\u0027 % (req.object_name, upload_id),"},{"line_number":505,"context_line":"            \u0027delimiter\u0027: \u0027/\u0027"},{"line_number":506,"context_line":"        }"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"        container \u003d req.container_name + MULTIUPLOAD_SUFFIX"}],"source_content_type":"text/x-python","patch_set":2,"id":"3af39e22_8b48787c","line":505,"in_reply_to":"4f372a48_f01787d9","updated":"2021-09-28 15:52:22.000000000","message":"Done","commit_id":"c2d1783e22c61ab645754598b918ba4b538c7527"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4b156a27cdad5dbc9dc86150fe33e325dcba5791","unresolved":true,"context_lines":[{"line_number":510,"context_line":"        # number of parts and then apply the marker and limit options."},{"line_number":511,"context_line":"        objects \u003d []"},{"line_number":512,"context_line":"        marker \u003d None"},{"line_number":513,"context_line":"        while len(objects) \u003c self.conf.max_upload_part_num:"},{"line_number":514,"context_line":"            if marker !\u003d None:"},{"line_number":515,"context_line":"                query[\u0027marker\u0027] \u003d marker"},{"line_number":516,"context_line":"            resp \u003d req.get_response(self.app, container\u003dcontainer, obj\u003d\u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"57da8686_15f6bead","line":513,"range":{"start_line":513,"start_character":14,"end_line":513,"end_character":58},"updated":"2021-09-28 04:06:13.000000000","message":"I think we need to just do\n\n while True:\n     ...\n     if not new_objects:\n         break\n\nand skip specifying a limit. Otherwise we can run into trouble if the swift listing limit is lower than the configured max_upload_part_num, or if the max_upload_part_num gets adjusted downward.","commit_id":"c2d1783e22c61ab645754598b918ba4b538c7527"},{"author":{"_account_id":17363,"name":"Timur Alperovich","email":"timur@timuralp.com","username":"timuralp"},"change_message_id":"2a8885ae3e2706fe5e68c604d519904c96cb32b0","unresolved":false,"context_lines":[{"line_number":510,"context_line":"        # number of parts and then apply the marker and limit options."},{"line_number":511,"context_line":"        objects \u003d []"},{"line_number":512,"context_line":"        marker \u003d None"},{"line_number":513,"context_line":"        while len(objects) \u003c self.conf.max_upload_part_num:"},{"line_number":514,"context_line":"            if marker !\u003d None:"},{"line_number":515,"context_line":"                query[\u0027marker\u0027] \u003d marker"},{"line_number":516,"context_line":"            resp \u003d req.get_response(self.app, container\u003dcontainer, obj\u003d\u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff488a64_c4730539","line":513,"range":{"start_line":513,"start_character":14,"end_line":513,"end_character":58},"in_reply_to":"57da8686_15f6bead","updated":"2021-09-28 15:52:22.000000000","message":"That\u0027s true. We do likely need to list all the parts anyway. Done.","commit_id":"c2d1783e22c61ab645754598b918ba4b538c7527"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4b156a27cdad5dbc9dc86150fe33e325dcba5791","unresolved":true,"context_lines":[{"line_number":511,"context_line":"        objects \u003d []"},{"line_number":512,"context_line":"        marker \u003d None"},{"line_number":513,"context_line":"        while len(objects) \u003c self.conf.max_upload_part_num:"},{"line_number":514,"context_line":"            if marker !\u003d None:"},{"line_number":515,"context_line":"                query[\u0027marker\u0027] \u003d marker"},{"line_number":516,"context_line":"            resp \u003d req.get_response(self.app, container\u003dcontainer, obj\u003d\u0027\u0027,"},{"line_number":517,"context_line":"                                    query\u003dquery)"}],"source_content_type":"text/x-python","patch_set":2,"id":"e58b93c7_0345a0da","line":514,"updated":"2021-09-28 04:06:13.000000000","message":"Could probably simplify this a bit by just initializing marker to the empty string above.","commit_id":"c2d1783e22c61ab645754598b918ba4b538c7527"},{"author":{"_account_id":17363,"name":"Timur Alperovich","email":"timur@timuralp.com","username":"timuralp"},"change_message_id":"2a8885ae3e2706fe5e68c604d519904c96cb32b0","unresolved":false,"context_lines":[{"line_number":511,"context_line":"        objects \u003d []"},{"line_number":512,"context_line":"        marker \u003d None"},{"line_number":513,"context_line":"        while len(objects) \u003c self.conf.max_upload_part_num:"},{"line_number":514,"context_line":"            if marker !\u003d None:"},{"line_number":515,"context_line":"                query[\u0027marker\u0027] \u003d marker"},{"line_number":516,"context_line":"            resp \u003d req.get_response(self.app, container\u003dcontainer, obj\u003d\u0027\u0027,"},{"line_number":517,"context_line":"                                    query\u003dquery)"}],"source_content_type":"text/x-python","patch_set":2,"id":"b48c6c2f_c85a56d3","line":514,"in_reply_to":"e58b93c7_0345a0da","updated":"2021-09-28 15:52:22.000000000","message":"Done","commit_id":"c2d1783e22c61ab645754598b918ba4b538c7527"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4b156a27cdad5dbc9dc86150fe33e325dcba5791","unresolved":true,"context_lines":[{"line_number":518,"context_line":"            new_objects \u003d json.loads(resp.body)"},{"line_number":519,"context_line":"            objects.extend(new_objects)"},{"line_number":520,"context_line":"            if len(new_objects) \u003c constraints.EFFECTIVE_CONSTRAINTS["},{"line_number":521,"context_line":"                    \u0027container_listing_limit\u0027]:"},{"line_number":522,"context_line":"                break"},{"line_number":523,"context_line":"            if not new_objects:"},{"line_number":524,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":2,"id":"970fcff0_f34cdd1e","line":521,"updated":"2021-09-28 04:06:13.000000000","message":"This *definitely* needs to go if we\u0027re specifying our own limit.","commit_id":"c2d1783e22c61ab645754598b918ba4b538c7527"},{"author":{"_account_id":17363,"name":"Timur Alperovich","email":"timur@timuralp.com","username":"timuralp"},"change_message_id":"2a8885ae3e2706fe5e68c604d519904c96cb32b0","unresolved":true,"context_lines":[{"line_number":518,"context_line":"            new_objects \u003d json.loads(resp.body)"},{"line_number":519,"context_line":"            objects.extend(new_objects)"},{"line_number":520,"context_line":"            if len(new_objects) \u003c constraints.EFFECTIVE_CONSTRAINTS["},{"line_number":521,"context_line":"                    \u0027container_listing_limit\u0027]:"},{"line_number":522,"context_line":"                break"},{"line_number":523,"context_line":"            if not new_objects:"},{"line_number":524,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":2,"id":"32988104_ebf051a7","line":521,"in_reply_to":"970fcff0_f34cdd1e","updated":"2021-09-28 15:52:22.000000000","message":"Right -- I screwed this up when added the limit, but forgot to remove this check. Agreed that we probably want to remove the limit altogether.","commit_id":"c2d1783e22c61ab645754598b918ba4b538c7527"}],"test/unit/common/middleware/s3api/__init__.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"9749b4f2ef37cc06c2aeb47a8d8e0f5b1efc87fc","unresolved":true,"context_lines":[{"line_number":80,"context_line":"            \u0027s3_acl\u0027: False,"},{"line_number":81,"context_line":"            \u0027storage_domain\u0027: \u0027localhost\u0027,"},{"line_number":82,"context_line":"            \u0027auth_pipeline_check\u0027: True,"},{"line_number":83,"context_line":"            \u0027max_upload_part_num\u0027: 10000,"},{"line_number":84,"context_line":"            \u0027check_bucket_owner\u0027: False,"},{"line_number":85,"context_line":"            \u0027force_swift_request_proxy_log\u0027: False,"},{"line_number":86,"context_line":"            \u0027allow_multipart_uploads\u0027: True,"}],"source_content_type":"text/x-python","patch_set":4,"id":"0d9d17cc_2709f0a8","line":83,"updated":"2021-10-03 22:51:04.000000000","message":"Was there a plan to change the default to match AWS?","commit_id":"47749cd0e53e5178972a699f47bdcedbde45b544"}]}
