fix: register signal handlers before pool startup
Move SIGTERM/SIGINT handler registration to the top of serve() so signals are never ignored during slow startup phases (cold start health tests, source fetching). Previously, signals sent before pool.start() returned had no handler, causing podman to escalate to SIGKILL after the stop timeout. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -214,6 +214,13 @@ async def _metrics_logger(
|
||||
|
||||
async def serve(config: Config) -> None:
|
||||
"""Start the SOCKS5 proxy server."""
|
||||
# register signal handlers early so SIGTERM is never ignored
|
||||
loop = asyncio.get_running_loop()
|
||||
stop = loop.create_future()
|
||||
|
||||
for sig in (signal.SIGTERM, signal.SIGINT):
|
||||
loop.add_signal_handler(sig, lambda s=sig: stop.set_result(s))
|
||||
|
||||
metrics = Metrics()
|
||||
|
||||
proxy_pool: ProxyPool | None = None
|
||||
@@ -252,12 +259,6 @@ async def serve(config: Config) -> None:
|
||||
)
|
||||
logger.info(" retries: %d", config.retries)
|
||||
|
||||
loop = asyncio.get_running_loop()
|
||||
stop = loop.create_future()
|
||||
|
||||
for sig in (signal.SIGTERM, signal.SIGINT):
|
||||
loop.add_signal_handler(sig, lambda s=sig: stop.set_result(s))
|
||||
|
||||
# SIGHUP: hot-reload config (timeout, retries, log_level, pool settings)
|
||||
async def _reload() -> None:
|
||||
if not config.config_file:
|
||||
|
||||
Reference in New Issue
Block a user