)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"99d37e8477ea123603388aa6b620e53364e15803","unresolved":false,"context_lines":[{"line_number":27,"context_line":"limited in their size, and those limits are not changed."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Change-Id: I6a35937e8418f4f2b8e29825fc9c40415e34742f"},{"line_number":30,"context_line":"Closes-Bug: 1746685"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5f93b717_8339bef2","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":19},"updated":"2018-02-02 06:11:39.000000000","message":"This change does not completely close the bug described above.\nI created a slo manifest including about more than 10,000 segments, then call DELETE with multipart-manifest\u003ddelete, the request is till failed with this patch.","commit_id":"a3a0b7ca12c510c7d21173a4b5fc3773a0f7b4c4"}],"swift/common/middleware/slo.py":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"99d37e8477ea123603388aa6b620e53364e15803","unresolved":false,"context_lines":[{"line_number":1316,"context_line":"            \u0027sub_slo\u0027: True,"},{"line_number":1317,"context_line":"            \u0027name\u0027: (\u0027/%s/%s\u0027 % (container, obj)).decode(\u0027utf-8\u0027)}]"},{"line_number":1318,"context_line":"        while segments:"},{"line_number":1319,"context_line":"            if len(segments) \u003e MAX_BUFFERED_SLO_SEGMENTS:"},{"line_number":1320,"context_line":"                raise HTTPBadRequest("},{"line_number":1321,"context_line":"                    \u0027Too many buffered slo segments to delete.\u0027)"},{"line_number":1322,"context_line":"            seg_data \u003d segments.pop(0)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_1e16654a","line":1319,"range":{"start_line":1319,"start_character":10,"end_line":1319,"end_character":57},"updated":"2018-02-02 06:11:39.000000000","message":"I hit this constraint even we accept the bulk can take infinite objects to delete. That is because we call this method before feeding the listing result to the Bulk middleware, isn\u0027t it?","commit_id":"a3a0b7ca12c510c7d21173a4b5fc3773a0f7b4c4"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7e066724970ef8673e7588dce1d2410428dd6b5b","unresolved":false,"context_lines":[{"line_number":1343,"context_line":"        while segments:"},{"line_number":1344,"context_line":"            if len(segments) \u003e MAX_BUFFERED_SLO_SEGMENTS:"},{"line_number":1345,"context_line":"                raise HTTPBadRequest("},{"line_number":1346,"context_line":"                    \u0027Too many buffered slo segments to delete.\u0027)"},{"line_number":1347,"context_line":"            seg_data \u003d segments.pop(0)"},{"line_number":1348,"context_line":"            if \u0027data\u0027 in seg_data:"},{"line_number":1349,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_7c4f2e34","side":"PARENT","line":1346,"updated":"2019-04-02 18:36:23.000000000","message":"I wonder if it\u0027d be worth keeping *some* limitation, just to guard against someone trying OOM-kill the proxy by uploading a manifest with 1,000 segments, then another manifest that references *that* manifest 1,000 times...\n\nSomething like\n\n curl -v http://saio:8090/v1/AUTH_test/c/o -X PUT -d \u0027o\u0027\n curl -v http://saio:8090/v1/AUTH_test/c/o2?multipart-manifest\u003dput -X PUT -d \"$(python -c \u0027import json; print(json.dumps([{\"path\": \"c/o\"}] * 1000))\u0027)\"\n curl -v http://saio:8090/v1/AUTH_test/c/o3?multipart-manifest\u003dput -X PUT -d \"$(python -c \u0027import json; print(json.dumps([{\"path\": \"c/o2\"}] * 1000))\u0027)\"\n curl -v http://saio:8090/v1/AUTH_test/c/o3?multipart-manifest\u003ddelete -X DELETE\n\nwill fail that DELETE on master... and if I take out this check, it\u0027ll succeed (Eventually, I guess? It\u0027s been running a few minutes now...) but make my proxy-server process consume ~1.2G of memory for the duration. Pretty sure just one extra layer will get me an OOM-kill.\n\nMaybe we could compare against 10x max_manifest_segments or something instead?","commit_id":"045ad1aae1dbe07d4bfb101c662f2528a7563a67"}],"test/unit/common/middleware/test_slo.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"853eca5057245b67b4350b1f2758ae9843c83f95","unresolved":false,"context_lines":[{"line_number":1399,"context_line":"            status, headers, body \u003d self.call_slo(req)"},{"line_number":1400,"context_line":"        self.assertEqual(status, \u0027200 OK\u0027)"},{"line_number":1401,"context_line":"        resp_data \u003d json.loads(body)"},{"line_number":1402,"context_line":"        self.assertEqual(resp_data[\u0027Response Status\u0027], \u0027400 Bad Request\u0027)"},{"line_number":1403,"context_line":"        self.assertEqual(resp_data[\u0027Response Body\u0027],"},{"line_number":1404,"context_line":"                         \u0027Too many buffered slo segments to delete.\u0027)"},{"line_number":1405,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_e89f5db1","line":1402,"updated":"2019-08-16 23:13:22.000000000","message":"The failure\u0027s not real great when I back out the changes under swift/, but it\u0027ll do:\n\n AssertionError: \u0027500 Internal Error\u0027 !\u003d \u0027400 Bad Request\u0027\n\n(Had to dig through journalctl to find that was due to\n\n KeyError: \"Didn\u0027t find (\u0027GET\u0027, \u0027/v1/AUTH_test/deltest/multi-submanifest?multipart-manifest\u003dget\u0027) in allowed responses\"\n\n)","commit_id":"cb308119160d5af7db9b65a7ab2225bb07edb614"}]}
