)]}'
{"id":"openstack%2Fswift~1002147","triplet_id":"openstack%2Fswift~feature%2Fthreaded~Ib2d56bcd8fa5446e0178db6b6f47f840dfe5c251","project":"openstack/swift","branch":"feature/threaded","attention_set":{"6968":{"account":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"last_update":"2026-08-24 17:20:06.000000000","reason":"A robot voted negatively on a label"}},"removed_from_attention_set":{},"hashtags":[],"change_id":"Ib2d56bcd8fa5446e0178db6b6f47f840dfe5c251","subject":"obj: restore zero-copy send under gunicorn","status":"NEW","created":"2026-08-24 15:41:34.000000000","updated":"2026-08-24 20:27:31.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":5,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"478529af0b79f7f3fb4d39d06375ed6106e5974b","_number":1002147,"virtual_id_number":1002147,"owner":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":-1,"date":"2026-08-24 17:20:06.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":-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":{"all":[{"_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":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-08-24 17:20:06.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":"969ed9b4067123672e2fb0ad3c9965ba42d28f9f","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"date":"2026-08-24 15:41:34.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"9d129043638050cdff6998e59a293092124d35a7","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-24 17:20:06.000000000","message":"Patch Set 1: Verified-1\n\n(5 comments)\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/5313bf067cef4fa9b152783352d9def6\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/60b395a6c07c4a4db268a835fce39132 : SUCCESS in 6m 01s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/5b1ccc14b9254f378fbf6ac7e192aa4d : SUCCESS in 6m 33s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/f3cb44b0e0ce445797e47cedcd36b2c0 : SUCCESS in 21m 00s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/5fe53aae68ea4294af414258902b9a12 : SUCCESS in 13m 19s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/ef9852f9cc034fbd9b1c8df586a54bff : SUCCESS in 23m 03s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/325adcdd7d434aa783e965c15398d4fe : SUCCESS in 8m 28s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/398463961eb34595853fe6c01f2822bc : SUCCESS in 25m 50s\n- swift-tox-py310 https://zuul.opendev.org/t/openstack/build/2fd31765e80c44fb9c4e82d0e4c8d4b9 : SUCCESS in 18m 14s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/1eca8f0ed65d45dc8d89faa2987bed0c : SUCCESS in 35m 57s\n- swift-tox-py314 https://zuul.opendev.org/t/openstack/build/87379affa1a54b2f843609c0d0cfbc6a : SUCCESS in 11m 08s\n- swift-tox-py3-no-eventlet https://zuul.opendev.org/t/openstack/build/2b82597c721b400fb43306424825be29 : SUCCESS in 20m 37s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/e956320912d445858232866d324a6d6b : SUCCESS in 10m 56s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/fb32b4d448c940e38f656677f5d28704 : SUCCESS in 9m 58s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/b1ccecb314b448c68227818c515cf7c1 : SUCCESS in 13m 49s\n- swift-tox-func-no-eventlet-py312 https://zuul.opendev.org/t/openstack/build/fcccf9c2c38346768ac640e8b46271fe : SUCCESS in 16m 49s\n- swift-tox-func-py39-centos-9-stream https://zuul.opendev.org/t/openstack/build/28ed0505f1ab405fa2a0b06793468bc9 : SUCCESS in 19m 52s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/601a54b1541a4c678f7c565978d75a24 : SUCCESS in 7m 44s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/3005cc12608a489e99d21d93b65461b7 : FAILURE in 9m 30s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/de4fecb63cfb4e7898f6a5e049a3f784 : SUCCESS in 10m 08s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/cd32c40200bc4a949c267798096044d7 : SUCCESS in 43m 33s\n- swift-probetests-no-eventlet-centos-9-stream https://zuul.opendev.org/t/openstack/build/804aa4f8ddcb4ae58fa38d821737387f : FAILURE in 1h 02m 47s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/e158e2b3c1c54d54915a6a5a3492e948 : SUCCESS in 12m 57s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/cc3a6e39f87748058c8cb0d4f0933221 : FAILURE in 4m 18s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/9de5cd4d0d7a4c458a84b38e0f6c1b9a : SUCCESS in 22m 53s\n\nWarning:\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  Comments left for invalid file swift/common/wsgi_gunicorn.py\n  Comments left for invalid file test/unit/common/test_wsgi_gunicorn.py","accounts_in_message":[],"_revision_number":1},{"id":"478529af0b79f7f3fb4d39d06375ed6106e5974b","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-24 20:27:31.000000000","message":"Patch Set 1:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/3fbf93822b7140e1a7e773e907deb077\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/4560b5f2e34d4181905b905b3e0f1a89 : SUCCESS in 1h 03m 42s","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"b06bce1b547f7b791ee41673e292c02a6bf6f2d7","revisions":{"b06bce1b547f7b791ee41673e292c02a6bf6f2d7":{"kind":"REWORK","_number":1,"created":"2026-08-24 15:41:34.000000000","uploader":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"ref":"refs/changes/47/1002147/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/47/1002147/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/47/1002147/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/47/1002147/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/47/1002147/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/47/1002147/1"}}},"commit":{"parents":[{"commit":"ea8e9169ba127f6af973a416c605ad9ac77317ac","subject":"gunicorn: one arbiter per port for servers_per_port","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/ea8e9169ba127f6af973a416c605ad9ac77317ac"}]}],"author":{"name":"Christian Schwede","email":"cschwede@mailbox.org","date":"2026-08-24 13:42:47.000000000","tz":120},"committer":{"name":"Christian Schwede","email":"cschwede@mailbox.org","date":"2026-08-24 15:41:13.000000000","tz":120},"subject":"obj: restore zero-copy send under gunicorn","message":"obj: restore zero-copy send under gunicorn\n\nThe zero-copy GET path was dead without eventlet, so splice \u003d yes read as\nenabled and did nothing. The server gates it on wsgi.input being the WSGI\nserver\u0027s own stream class, but gunicorn\u0027s input is wrapped before the app\nsees it, so the check never passed.\n\nGate on being able to reach the socket, which both servers satisfy, and\ngive EventletPlungerString a length to report when there is no eventlet\nto ask. Without one it raised AttributeError from inside gunicorn\u0027s\nresponse write and the client saw a truncated body.\n\nChange-Id: Ib2d56bcd8fa5446e0178db6b6f47f840dfe5c251\nSigned-off-by: Christian Schwede \u003ccschwede@mailbox.org\u003e\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/b06bce1b547f7b791ee41673e292c02a6bf6f2d7"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/b06bce1b547f7b791ee41673e292c02a6bf6f2d7"}]},"branch":"refs/heads/feature/threaded"}},"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"}]}],"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":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
