)]}'
{"id":"openstack%2Fswift~890336","triplet_id":"openstack%2Fswift~master~If4b9746319c563184a17d49a1242a3f40bcd5c31","project":"openstack/swift","branch":"master","topic":"p-multipart-get-disconnect","hashtags":[],"change_id":"If4b9746319c563184a17d49a1242a3f40bcd5c31","subject":"proxy-server: handle multipart GET disconnect before read","status":"NEW","created":"2023-08-02 13:52:54.000000000","updated":"2023-08-02 15:45:35.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":false,"submittable":false,"total_comment_count":1,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"c49cd20e752ba24fff32e7c453b35a30a9240bbb","_number":890336,"virtual_id_number":890336,"owner":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"tag":"autogenerated:zuul:check","value":1,"date":"2023-08-02 15:45:35.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"rejected":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"all":[{"value":-1,"date":"2023-08-02 13:53:44.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2023-08-02 14:40:04.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"CC"},{"updated":"2023-08-02 15:45:35.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"}],"messages":[{"id":"107e66f433141d28f18c0fbb456151a7caa04c1c","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2023-08-02 13:52:54.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"8a4f2f29ebf3bcac29f37fa4d8f384d8a68e403f","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2023-08-02 13:53:44.000000000","message":"Patch Set 1: Workflow-1\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"8aef545e269faa738152b0518cdb2f564ea12dd3","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2023-08-02 14:40:04.000000000","message":"Patch Set 1:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/13b6fb71a32049fda8a8fc7a280bdbab\n\n- swift-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/167afaef25d44c19ba29925040619f56 : SUCCESS in 45m 28s\n- swift-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/0529fac53a314867873d3e41c5dc3f62 : SUCCESS in 43m 24s\n- swift-tox-func-encryption-py38-arm64 https://zuul.opendev.org/t/openstack/build/b8cd8c4dae0d4f1da09783456896643f : SUCCESS in 15m 52s\n- swift-tox-func-py38-arm64 https://zuul.opendev.org/t/openstack/build/46683f31f27c43299bf03fde08e8d0ee : SUCCESS in 43m 24s","accounts_in_message":[],"_revision_number":1},{"id":"c49cd20e752ba24fff32e7c453b35a30a9240bbb","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2023-08-02 15:45:35.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/cefc1c308a724a09b34b246281f6cc66\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/01b0797e97ad43f9af8cb992ea3c9474 : SUCCESS in 9m 02s\n- grenade https://zuul.opendev.org/t/openstack/build/6d9c85796b2a4d549680bfb8ab2bd1a1 : SUCCESS in 1h 01m 59s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/fd0be5cbd4134ca19d90f87335433d68 : SUCCESS in 44m 37s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/218287ea3258474d9989a9e9bfe30419 : SUCCESS in 1h 13m 15s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/f06045b599b1440298bf79da2c58e4eb : SUCCESS in 17m 57s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/6cac87630ad349089ee3a3d9d696963d : SUCCESS in 17m 34s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/bb6e3f981df249a0aeb17142f9170deb : SUCCESS in 20m 49s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/584ac0db8e034192b5f4ec3d4832522c : SUCCESS in 9m 32s (non-voting)\n- swift-build-image-py3 https://zuul.opendev.org/t/openstack/build/af58dc1485454910bb5197a9307da6fb : SUCCESS in 5m 33s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/e568db785457408aacfc51c1d89f17e2 : SUCCESS in 26m 40s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/342aa688620f4ee989682dd8b7f6b79b : SUCCESS in 26m 41s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/5a8c6e4ea1484fb29e15e262bf894153 : SUCCESS in 16m 17s\n- swift-tox-py310 https://zuul.opendev.org/t/openstack/build/7eaa59f4471f4564a4c30d1afea64aad : SUCCESS in 17m 17s\n- swift-tox-py311 https://zuul.opendev.org/t/openstack/build/eb8e9a830be240dba6b437275429d80f : SUCCESS in 17m 06s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/8cf04400bb4f49a389b3edce957ed527 : SUCCESS in 16m 58s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/4e6ee81d2e524426aeb4eba864e8356c : SUCCESS in 18m 56s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/2a5018aabc914e6a97a6b2d4af49071b : SUCCESS in 18m 21s\n- swift-tox-func-py38 https://zuul.opendev.org/t/openstack/build/b2931bbbddef4b0eae728ebdd37ecc52 : SUCCESS in 15m 52s\n- swift-tox-func-encryption-py38 https://zuul.opendev.org/t/openstack/build/01470f26b8674ab3b448dbd46bbd53a9 : SUCCESS in 15m 12s\n- swift-tox-func-ec-py38 https://zuul.opendev.org/t/openstack/build/1097d9755d8d4e2eabdf011cd176d126 : SUCCESS in 16m 06s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/3697c590a20f44dab4a9688ffb16eaa7 : SUCCESS in 8m 12s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/fb0fd90071ad41e798a82673e5c73a5b : SUCCESS in 17m 00s (non-voting)\n- swift-tox-func-s3api-tests-tempauth https://zuul.opendev.org/t/openstack/build/d919ac9130794526a2dca51a99ae7d74 : SUCCESS in 8m 03s\n- swift-probetests-centos-7 https://zuul.opendev.org/t/openstack/build/5cbbade4acf24d089458b331847151b9 : SUCCESS in 1h 08m 24s\n- swift-probetests-centos-8-stream https://zuul.opendev.org/t/openstack/build/e7f97c89437043c4bec765c436223625 : SUCCESS in 1h 05m 52s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/2bcb1be7ce204b979d81fc8f91c250e5 : SUCCESS in 41m 01s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/751fc1a7ea5e4721ad3d62a62d206f41 : SUCCESS in 52m 50s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/2ef2a4b1140346c2ac9b251c0827404c : SUCCESS in 17m 16s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/2cf9df15a6ad4acba606a7ad063a5236 : SUCCESS in 5m 17s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/eb959fd87ac948cb83c2f7f5222813c6 : SUCCESS in 23m 40s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/83687a74c5b84528aa82208dc83706b6 : SUCCESS in 1h 12m 26s","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"16ba2adb76c469c74cb5d6285b9a137311812b54","revisions":{"16ba2adb76c469c74cb5d6285b9a137311812b54":{"kind":"REWORK","_number":1,"created":"2023-08-02 13:52:54.000000000","uploader":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"ref":"refs/changes/36/890336/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/36/890336/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/36/890336/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/36/890336/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/36/890336/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/36/890336/1"}}},"commit":{"parents":[{"commit":"167aff4b84b3f52b9c7148392e27b0d4e79767f0","subject":"Merge \"versioning: Only list versions container if it seems to exist\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/167aff4b84b3f52b9c7148392e27b0d4e79767f0"}]}],"author":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2023-08-02 13:20:20.000000000","tz":60},"committer":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2023-08-02 13:52:33.000000000","tz":60},"subject":"proxy-server: handle multipart GET disconnect before read","message":"proxy-server: handle multipart GET disconnect before read\n\nClient disconnects during a replicated policy GET request are handled\nin the GetOrHeadHandler._get_response_parts_iter() generator. When the\n_get_response_parts_iter() generator is closed, its finally clause in\nturn tries to close the backend connection, and it also has a\nGeneratorExit handler that logs the client disconnect.\n\nThe _get_response_parts_iter() generator must have started in order\nfor it to be closed. For a regular response, the generator is started\nby a next() in document_iters_to_http_response_body(). However, for a\nmultipart response the generator is not started until the response\nbody is read. If the body is not read then the client disconnect is\nnot logged and the backend connection is not closed.\n\nIn practice, a middleware such as proxy_logging might read the first\nchunk of a response and thus always trigger the\n_get_response_parts_iter() to be entered, regardless of whether the\nclient reads any bytes. However, it is safer not to rely on this and\nto have the proxy-server app itself ensure that the disconnect is\ndetected. This patch therefore reiterates the\n_get_response_parts_iter() in the case of a multipart response.\n\nChange-Id: If4b9746319c563184a17d49a1242a3f40bcd5c31\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/16ba2adb76c469c74cb5d6285b9a137311812b54"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/16ba2adb76c469c74cb5d6285b9a137311812b54"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY"},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"}}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":["label:Workflow\u003dMIN"],"failing_atoms":["label:Workflow\u003dMAX"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
