From 8bb250220b0963b240c40f4b2fe1c0f1dbfcba26 Mon Sep 17 00:00:00 2001 From: Micha Date: Wed, 10 Jun 2026 12:36:01 +0200 Subject: [PATCH] immich-ml: --no-control-socket gegen gunicorn-25.1.0 Worker-Hang Ersetzt den wirkungslosen LD_PRELOAD-Versuch durch den dokumentierten Root-Cause-Fix. immich_machine_learning blieb dauerhaft unhealthy: der gunicorn-Worker haengt nach "Control socket listening" in futex und erreicht nie "Application startup complete" (/ping -> Timeout). Ursache ist der in gunicorn 25.1.0 neu eingefuehrte, fehlerhafte Control-Socket (bestaetigt: gunicorn#3510, immich#27228, Regression seit Immich 2.6). GUNICORN_CMD_ARGS=--no-control-socket deaktiviert das Feature. immich-ml startet gunicorn als Subprozess (python -m gunicorn), der GUNICORN_CMD_ARGS aus der Env liest und anhaengt; das Flag --no-control-socket (config: control_socket_disable) ist in diesem gunicorn-Build als gueltig verifiziert. Reversibel; bei gefixter Immich-Release wieder entfernen. Co-Authored-By: Claude Opus 4.8 --- apps/immich/docker-compose.yml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/apps/immich/docker-compose.yml b/apps/immich/docker-compose.yml index c39b0f6..bc12a16 100644 --- a/apps/immich/docker-compose.yml +++ b/apps/immich/docker-compose.yml @@ -35,14 +35,16 @@ services: image: ghcr.io/immich-app/immich-machine-learning:release@sha256:a2501141440f10516d329fdfba2c68082e19eb9ba6016c061ac80d23beadf7f3 restart: unless-stopped environment: - # Workaround fuer gunicorn-25.1.0-Fork-Deadlock (Worker haengt in futex - # nach "Control socket listening", erreicht nie "Application startup - # complete"). mimalloc per LD_PRELOAD deaktiviert -> umgeht den Lock im - # geforkten Worker. Reine Allocator-Optimierung, funktional unkritisch. - # Upstream-Regression seit Immich 2.6 (immich#27228, #22317), kein - # offizieller Fix. Re-check: bei Immich-/gunicorn-Update entfernen und - # pruefen, ob der Worker wieder sauber bootet. - LD_PRELOAD: "" + # Workaround fuer gunicorn-25.1.0-Control-Socket-Bug: der Worker haengt + # nach "Control socket listening at /usr/src/gunicorn.ctl" und erreicht + # nie "Application startup complete" -> Container bleibt dauerhaft + # unhealthy, ML (Gesichtserkennung/CLIP/Smart-Search) ist tot. + # --no-control-socket deaktiviert das fehlerhafte Feature. immich-ml + # startet gunicorn als Subprozess, der GUNICORN_CMD_ARGS aus der Env + # liest und anhaengt. Bestaetigte Upstream-Regression seit Immich 2.6 + # (immich#27228, gunicorn#3510). Re-check: bei Immich-Update, das + # gunicorn auf >25.1.0/<25.1.0 mit Fix bringt, wieder entfernen. + GUNICORN_CMD_ARGS: "--no-control-socket" volumes: - model-cache:/cache networks: