)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"830644bef2efafff2eabca8293c50ab7fcf201fc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"3e893e5b_193efc31","updated":"2026-03-12 18:54:48.000000000","message":"Does this work with reloads/`SIGUSR1`? Or graceful shutdowns/`SIGHUP`?\n\nIt\u0027s OK if it doesn\u0027t; I just want to level-set expectations.","commit_id":"da3b9505ffb2202b5c7b56d7f0ef27c866fefc43"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"2442d8ef24544a26b29895354b9036da487db54b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d2cc6965_1caf2216","in_reply_to":"3e893e5b_193efc31","updated":"2026-03-13 11:45:19.000000000","message":"Yes it does, though it\u0027s a bit different than with eventlet; also depends on if the main or worker process will receive the signal. We\u0027ll need to document this as well.\n\nA bit more details: https://gunicorn.org/signals/","commit_id":"da3b9505ffb2202b5c7b56d7f0ef27c866fefc43"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"6bf73f707496642b15b9b1ddd26ac4aa1ff69780","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"8e0727c2_a70adbbe","updated":"2026-04-23 06:30:23.000000000","message":"Can we inherit functional test job to enable the tests which can set flag to not use eventlet and let all tests run using Gunicorn?","commit_id":"21c1778f3d855dc42f863c6d842e8478cde525b7"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"6c3a1f8cd324502a7e50bc870aa45fe7322e7c05","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ec80a23a_e2b82ee7","updated":"2026-05-13 11:24:16.000000000","message":"recheck","commit_id":"198b495d3eb647eea841c3d9a04a815628fa1440"}],"swift/common/wsgi_gunicorn.py":[{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy"},"change_message_id":"efaf1ca9f62d02a3fb4283862d4d982df0386370","unresolved":true,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    # Drop privileges before starting."},{"line_number":247,"context_line":"    user \u003d conf.get(\u0027user\u0027, \u0027swift\u0027)"},{"line_number":248,"context_line":"    drop_privileges(user)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    # Redirect stdio to logger and close underlying file descriptors"},{"line_number":251,"context_line":"    capture_stdio(logger)"}],"source_content_type":"text/x-python","patch_set":5,"id":"944ecdda_e0f2f8c7","line":248,"updated":"2026-04-23 13:20:28.000000000","message":"While playing around with the event removal patches today on a SAIO environment, I noticed a weird thing happening that prevents gunicorn from starting when Swift is configured to run as a non-root user. After drop_privileges() is called in run_wsgi(), the process correctly switches to the configured user swift, but the gunicorn Config object still has uid\u003d0 and gid\u003d0 set. When gunicorn attempts to spawn workers, it tries to chown() the worker temp files to root, which fails with \n\nPermissionError: [Errno 1] Operation not permitted\n\nThis caused swift servers to fail to start. The fix that I found was to update the gunicorn config after dropping privileges by adding cfg.set(\u0027user\u0027, os.getuid()) and cfg.set(\u0027group\u0027, os.getgid()) immediately after the drop_privileges(user) call. After applying this fix locally, all Swift services started successfully.\n\nI\u0027m curious if somebody else encountered this problem or if there\u0027s a reason for the current approach","commit_id":"21c1778f3d855dc42f863c6d842e8478cde525b7"}]}
