From 6d797dc0d2fa776d0a3743680791bee075e8fcf3 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 26 Apr 2026 01:16:57 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20root=20cause=20=E2=80=94=20sqlite=5Fpatc?= =?UTF-8?q?h=20not=20applied=20when=20DATABASE=5FURL=20empty?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Root cause: sqlite_patch checked `if "sqlite" in db_url` but db_url was empty string when DATABASE_URL env var not set. Patch was skipped, then models used PostgreSQL types (JSONB/Vector) with SQLite compiler causing crash: "can't render element of type JSONB". Fix: `if not db_url or "sqlite" in db_url` — apply patch when URL is empty (defaults to SQLite anyway in database.py). Also: - Dockerfile: add libxml2/libxslt1.1 for lxml runtime - Dockerfile: increase healthcheck start-period to 120s - start.sh: log DATABASE_URL prefix for debugging https://claude.ai/code/session_01W1rJthWDkasijTdXCfxVHs --- salesflow-saas/backend/Dockerfile | 4 ++-- salesflow-saas/backend/app/sqlite_patch.py | 2 +- salesflow-saas/backend/start.sh | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/salesflow-saas/backend/Dockerfile b/salesflow-saas/backend/Dockerfile index 751b3c20..c3d700e3 100644 --- a/salesflow-saas/backend/Dockerfile +++ b/salesflow-saas/backend/Dockerfile @@ -19,7 +19,7 @@ RUN pip install --no-cache-dir --upgrade pip setuptools wheel \ FROM python:3.12-slim AS runtime RUN apt-get update && apt-get install -y --no-install-recommends \ - libpq5 curl tini \ + libpq5 curl tini libxml2 libxslt1.1 \ && rm -rf /var/lib/apt/lists/* RUN groupadd --gid 1000 app \ @@ -38,7 +38,7 @@ USER app EXPOSE 8000 -HEALTHCHECK --interval=30s --timeout=10s --start-period=90s --retries=5 \ +HEALTHCHECK --interval=20s --timeout=15s --start-period=120s --retries=5 \ CMD curl -f http://localhost:${PORT:-8000}/health || exit 1 ENTRYPOINT ["tini", "--"] diff --git a/salesflow-saas/backend/app/sqlite_patch.py b/salesflow-saas/backend/app/sqlite_patch.py index 1c7bff59..4c55b1a8 100644 --- a/salesflow-saas/backend/app/sqlite_patch.py +++ b/salesflow-saas/backend/app/sqlite_patch.py @@ -139,7 +139,7 @@ def apply_patch(): import sys import types db_url = _get_db_url() - if "sqlite" in db_url.lower(): + if not db_url or "sqlite" in db_url.lower(): # Patch PostgreSQL dialect sys.modules["sqlalchemy.dialects.postgresql"] = _FakePGModule() # type: ignore diff --git a/salesflow-saas/backend/start.sh b/salesflow-saas/backend/start.sh index c53de262..cf5a3973 100755 --- a/salesflow-saas/backend/start.sh +++ b/salesflow-saas/backend/start.sh @@ -1,6 +1,7 @@ #!/bin/sh set -e echo "[dealix] PORT=$PORT" +echo "[dealix] DATABASE_URL prefix: $(echo ${DATABASE_URL:-NOT_SET} | cut -d: -f1)" echo "[dealix] Testing imports..." python3 -c " try: