From 77914b3782cd9baa869e14184f6ca01eda098ae8 Mon Sep 17 00:00:00 2001 From: serversidehannes Date: Thu, 16 Jul 2026 14:45:18 +0200 Subject: [PATCH] fix: disable uvloop by default (libuv uv__io_poll abort on Python 3.14) --- s3proxy/main.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/s3proxy/main.py b/s3proxy/main.py index 99c2740..5f3337c 100644 --- a/s3proxy/main.py +++ b/s3proxy/main.py @@ -20,13 +20,18 @@ def main(): """CLI entry point for running S3Proxy server.""" - try: - import uvloop - - uvloop.install() - logger.info("Using uvloop for improved performance") - except ImportError: - pass + # uvloop 0.22.1 on Python 3.14 dies with a libuv abort (uv__io_poll assertion, + # preceded by "OSError: [Errno 9] Bad file descriptor" from TCPTransport) when + # the backend drops connections under load — killed 3 pods on 2026-07-16 with + # every in-flight upload. Off unless explicitly re-enabled. + if os.environ.get("S3PROXY_UVLOOP", "0") == "1": + try: + import uvloop + + uvloop.install() + logger.info("Using uvloop for improved performance") + except ImportError: + pass parser = argparse.ArgumentParser(description="S3Proxy - Transparent S3 encryption") parser.add_argument("--ip", default="0.0.0.0", help="Bind address")