)]}'
{"swift/common/middleware/s3api/acl_handlers.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ed3a0cd013d66c241aca3f87ade2fa62b842b0a6","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        # List Multipart Upload"},{"line_number":374,"context_line":"        self._handle_acl(app, \u0027GET\u0027, self.container, \u0027\u0027)"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"    def PUT(self, app):"},{"line_number":377,"context_line":"        if not self.acl_checked:"},{"line_number":378,"context_line":"            resp \u003d self._handle_acl(app, \u0027HEAD\u0027, obj\u003d\u0027\u0027)"},{"line_number":379,"context_line":"            req_acl \u003d ACL.from_headers(self.req.headers,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_a3b20893","side":"PARENT","line":376,"updated":"2019-06-25 18:45:18.000000000","message":"This... makes me a little nervous. But I\u0027ve also always had trouble following the s3_acl behavior...","commit_id":"cb3692f8db4b2e2f94567658a2b9cb1ab8c0834a"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"f91c3c61660866bab0337c0eaaa4bb3577617591","unresolved":false,"context_lines":[{"line_number":374,"context_line":"        self._handle_acl(app, \u0027GET\u0027, self.container, \u0027\u0027)"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"    def HEAD(self, app):"},{"line_number":377,"context_line":"        if self.method \u003d\u003d \u0027POST\u0027 and not self.acl_checked:"},{"line_number":378,"context_line":"            resp \u003d self._handle_acl(app, \u0027HEAD\u0027, obj\u003d\u0027\u0027)"},{"line_number":379,"context_line":"            req_acl \u003d ACL.from_headers(self.req.headers,"},{"line_number":380,"context_line":"                                       resp.bucket_acl.owner,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_f5e4310f","line":377,"updated":"2019-06-25 21:44:22.000000000","message":"please add a comment as to why self.method would not be HEAD here, it\u0027s not immediately obvious","commit_id":"a39a493017fc1e04e544fa84425d80054837ec7b"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"aa053969000d63be2764bf91b1e9a9177f9246c1","unresolved":false,"context_lines":[{"line_number":374,"context_line":"        self._handle_acl(app, \u0027GET\u0027, self.container, \u0027\u0027)"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"    def HEAD(self, app):"},{"line_number":377,"context_line":"        if self.method \u003d\u003d \u0027POST\u0027 and not self.acl_checked:"},{"line_number":378,"context_line":"            resp \u003d self._handle_acl(app, \u0027HEAD\u0027, obj\u003d\u0027\u0027)"},{"line_number":379,"context_line":"            req_acl \u003d ACL.from_headers(self.req.headers,"},{"line_number":380,"context_line":"                                       resp.bucket_acl.owner,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_cb2e1742","line":377,"in_reply_to":"9fb8cfa7_f5e4310f","updated":"2019-06-27 00:03:56.000000000","message":"Dropped. We almost certainly should have been doing the translation in the object PUT anyway, rather than the container HEAD.","commit_id":"a39a493017fc1e04e544fa84425d80054837ec7b"}],"swift/common/middleware/s3api/controllers/multi_upload.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"088fd5e244904739f65c351cb5dc8ab28108e5f7","unresolved":false,"context_lines":[{"line_number":360,"context_line":"        req.headers[\u0027Content-Type\u0027] \u003d \u0027application/directory\u0027"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"        try:"},{"line_number":363,"context_line":"            req.get_response(self.app, \u0027HEAD\u0027, container, \u0027\u0027)"},{"line_number":364,"context_line":"        except NoSuchBucket:"},{"line_number":365,"context_line":"            req.get_response(self.app, \u0027PUT\u0027, container, \u0027\u0027)"},{"line_number":366,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_d786d265","line":363,"updated":"2018-07-24 06:14:37.000000000","message":"Might be preferable to do something with get_container_info...","commit_id":"04fe71ee07922c240fc167874d9398fb819c399c"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"f4cca48c19167a8b02880034f700e59116824591","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        try:"},{"line_number":363,"context_line":"            req.get_response(self.app, \u0027HEAD\u0027, container, \u0027\u0027)"},{"line_number":364,"context_line":"        except NoSuchBucket:"},{"line_number":365,"context_line":"            req.get_response(self.app, \u0027PUT\u0027, container, \u0027\u0027)"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        obj \u003d \u0027%s/%s\u0027 % (req.object_name, upload_id)"},{"line_number":368,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_c2aa1783","line":365,"range":{"start_line":365,"start_character":12,"end_line":365,"end_character":60},"updated":"2018-07-12 08:29:01.000000000","message":"we should still cover BucketAlreadyExists case for the PUT container because multiple initiate multi upload requests can be incomming at once then, one request would make the container during the HEAD check above and here.","commit_id":"04fe71ee07922c240fc167874d9398fb819c399c"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ed3a0cd013d66c241aca3f87ade2fa62b842b0a6","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        try:"},{"line_number":363,"context_line":"            req.get_response(self.app, \u0027HEAD\u0027, container, \u0027\u0027)"},{"line_number":364,"context_line":"        except NoSuchBucket:"},{"line_number":365,"context_line":"            req.get_response(self.app, \u0027PUT\u0027, container, \u0027\u0027)"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        obj \u003d \u0027%s/%s\u0027 % (req.object_name, upload_id)"},{"line_number":368,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_e337a0fd","line":365,"range":{"start_line":365,"start_character":12,"end_line":365,"end_character":60},"in_reply_to":"5f7c97a3_c2aa1783","updated":"2019-06-25 18:45:18.000000000","message":"Done","commit_id":"04fe71ee07922c240fc167874d9398fb819c399c"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"f91c3c61660866bab0337c0eaaa4bb3577617591","unresolved":false,"context_lines":[{"line_number":375,"context_line":"        req.headers[\u0027Content-Type\u0027] \u003d \u0027application/directory\u0027"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"        try:"},{"line_number":378,"context_line":"            req.get_response(self.app, \u0027HEAD\u0027, container, \u0027\u0027)"},{"line_number":379,"context_line":"        except NoSuchBucket:"},{"line_number":380,"context_line":"            try:"},{"line_number":381,"context_line":"                req.get_response(self.app, \u0027PUT\u0027, container, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_4806c4d0","line":378,"updated":"2019-06-25 21:44:22.000000000","message":"curious that you didn\u0027t use cached container info here...","commit_id":"a39a493017fc1e04e544fa84425d80054837ec7b"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"aa053969000d63be2764bf91b1e9a9177f9246c1","unresolved":false,"context_lines":[{"line_number":375,"context_line":"        req.headers[\u0027Content-Type\u0027] \u003d \u0027application/directory\u0027"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"        try:"},{"line_number":378,"context_line":"            req.get_response(self.app, \u0027HEAD\u0027, container, \u0027\u0027)"},{"line_number":379,"context_line":"        except NoSuchBucket:"},{"line_number":380,"context_line":"            try:"},{"line_number":381,"context_line":"                req.get_response(self.app, \u0027PUT\u0027, container, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_eb33dba9","line":378,"in_reply_to":"9fb8cfa7_4806c4d0","updated":"2019-06-27 00:03:56.000000000","message":"Done","commit_id":"a39a493017fc1e04e544fa84425d80054837ec7b"},{"author":{"_account_id":28111,"name":"Yuxin Wang","email":"wang.yuxin@ostorage.com.cn","username":"wangyx"},"change_message_id":"ad73305ed6d1c54961bd3727fc02afa05e03a24f","unresolved":false,"context_lines":[{"line_number":376,"context_line":""},{"line_number":377,"context_line":"        try:"},{"line_number":378,"context_line":"            req.container_name \u003d seg_container"},{"line_number":379,"context_line":"            req.get_container_info(self.app)"},{"line_number":380,"context_line":"        except NoSuchBucket:"},{"line_number":381,"context_line":"            try:"},{"line_number":382,"context_line":"                req.get_response(self.app, \u0027PUT\u0027, seg_container, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_e7ff4cff","line":379,"range":{"start_line":379,"start_character":12,"end_line":379,"end_character":44},"updated":"2019-07-02 02:50:41.000000000","message":"When there is the container info in the cache, we don\u0027t need to do HEAD container request and also bypass the PUT container request, so we can\u0027t do S3 ACL on the POST request to initiate multipart upload.\nCorrect me if I am wrong.","commit_id":"e02b9b798007b9f8c70e33c22fa6189d81a41ca3"}]}
