)]}'
{"/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":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"05aed9c7a44053a6b033cdc511ff2e562c9d1440","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"bf8c953a_842320af","updated":"2026-05-21 09:01:43.000000000","message":"hi, \n\nFailures are mainly\n(1) docs build — circular import between swift.common.utils and swift.common.concurrency for Watchdog; \n(2) one unit test test_s3api_with_s3_token_and_auth_token — expects 403 but gets 500 because keystonemiddleware raises MissingAuthPlugin.","commit_id":"198b495d3eb647eea841c3d9a04a815628fa1440"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"e89199d5a127ff9265738e70f169c3d5efd2df10","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b04155eb_7c792a10","updated":"2026-05-21 06:01:37.000000000","message":"recheck","commit_id":"198b495d3eb647eea841c3d9a04a815628fa1440"},{"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"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"7a87ebf42f93519c28e86596e25f591671e8f216","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"692ed145_eeff9457","in_reply_to":"bf8c953a_842320af","updated":"2026-05-21 16:32:44.000000000","message":"Thanks Abhishek! Yes, working on resolving these.","commit_id":"198b495d3eb647eea841c3d9a04a815628fa1440"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"4346945b53942d7141ff263c360ebcae60c9be46","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"81717aec_d5c63710","updated":"2026-07-21 10:43:43.000000000","message":"Looks good to me but I believe changing from list to tuple could make it even better. I\u0027ll defer it to you.","commit_id":"fcd99f7ce0be57304559724e62a466c72df9a341"}],"swift/common/wsgi_gunicorn.py":[{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"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"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"1ed210f598fcce28b1454ad649e6e7abd9ac239b","unresolved":true,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def swift_set_body_reader(self):"},{"line_number":122,"context_line":"        if any(n \u003d\u003d \"TRANSFER-ENCODING\" for n, v in self.headers):"},{"line_number":123,"context_line":"            self.headers \u003d ["},{"line_number":124,"context_line":"                (n, v) for n, v in self.headers if n !\u003d \"CONTENT-LENGTH\"]"},{"line_number":125,"context_line":"        orig_set_body_reader(self)"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"7a2bf194_1e583d65","line":123,"updated":"2026-07-09 10:33:03.000000000","message":"Suggestion: I believe the usage of a list might introduce race condition. It\u0027s unlikely, but if we change the list to a tuple it might help since tuples are immutable.","commit_id":"830fd65e885a66608e83653368265daccf08ab4e"}]}
