)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"8563cf59e4f343da0d39e7ba502754a5e2e2faa0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7b21038d_7c897fad","updated":"2026-07-08 06:39:43.000000000","message":"recheck\n\nTimeout with mirror.gra1.ovh.opendev.org","commit_id":"260fec51ade0e14c6151a2aeac59925648216e78"},{"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":"b658716741e5710a9b7adf0966a8e1e52c21ce68","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"e2b4ad26_ceb9eb08","updated":"2026-07-14 13:24:01.000000000","message":"This is looking good already. The two hardest code paths (chunked parser, drain detection) are good. The one issue that I found I pointed in a comment about `load_config()` crashing the service on a config typo during SIGHUP reload. But after that should be a +1","commit_id":"48dd6d94e7061f06dd2963955f50035a651daa30"}],"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":"b658716741e5710a9b7adf0966a8e1e52c21ce68","unresolved":true,"context_lines":[{"line_number":599,"context_line":"        # load_default_config() first, resetting bind to its default"},{"line_number":600,"context_line":"        # 127.0.0.1:8000; a no-op here would lose our real bind/workers and"},{"line_number":601,"context_line":"        # reloaded masters would collide trying to rebind 8000."},{"line_number":602,"context_line":"        self.cfg \u003d self.build_cfg()"},{"line_number":603,"context_line":""},{"line_number":604,"context_line":"    def load(self):"},{"line_number":605,"context_line":"        return self.load_app()"}],"source_content_type":"text/x-python","patch_set":5,"id":"c83fbe83_6abb16a0","line":602,"updated":"2026-07-14 13:24:01.000000000","message":"This call here needs to be inside a try/except block to survive a bad SIGHUP reload.\n\n`build_cfg()` calls `appconfig()`, `reload_constraints()`, `reload_storage_policies()` and `int()` conversions. Any of these can rainse. On SIGHUP, gunicorn\u0027s Arbiter.reload() calls `load_config()` unguarded, the exception propagates to the arbiter\u0027s main loop, where the generic except-Exception handler calls `self.stop(False)` then `sys.exit(-1)`. A single config typo during a graceful reload kills the master and all workers.\n\nI reproduced in a SAIO machine:\n\n```bash\n# Start proxy under gunicorn\nsudo env USE_EVENTLET\u003dfalse swift-proxy-server /etc/swift/proxy-server/proxy-server.conf.d \u0026\n\n# Inject bad config into [DEFAULT]\nsudo sed -i \u0027/^\\[DEFAULT\\]/a threads \u003d abc\u0027 /etc/swift/proxy-server/proxy-server.conf.d/00_base.conf\n\n# Send SIGHUP to master\nsudo kill -HUP \u003cmaster_pid\u003e\n```\n\nFrom the log:\n\n```\n2026-07-14T13:02:39.760591+00:00 saio proxy-server: STDERR: Error: invalid literal for int() with base 10: \u0027abc\u0027\n2026-07-14T13:02:40.254834+00:00 saio proxy-server: STDERR: [2026-07-14 13:02:40 +0000] [6630] [INFO] Parent changed, shutting down: \u003cWorker 6630\u003e\n2026-07-14T13:02:40.256194+00:00 saio proxy-server: STDERR: [2026-07-14 13:02:40 +0000] [6630] [INFO] Worker exiting (pid: 6630)\n```\n\nThe master died from the unhandled ValueError; the worker detected \"Parent changed\" (master PID gone) and self-terminated. Service went fully down, healthcheck returns 000 (connection refused).","commit_id":"48dd6d94e7061f06dd2963955f50035a651daa30"}]}
