From 4edb0227a9c103b02b8d4bfdc151f0bb3166a5b3 Mon Sep 17 00:00:00 2001 From: Marcel Date: Fri, 12 Jun 2026 13:36:17 +0200 Subject: [PATCH] docs(deployment): add PgBouncer transaction-mode requirement for DEFERRABLE constraints The journey_items position_seq dedup constraint is DEFERRABLE INITIALLY DEFERRED, which requires PgBouncer to run in transaction-mode pooling. Document this so operators know not to switch to statement-level pooling. Co-Authored-By: Claude Sonnet 4.6 --- docs/DEPLOYMENT.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/DEPLOYMENT.md b/docs/DEPLOYMENT.md index 9368d782..52d08e38 100644 --- a/docs/DEPLOYMENT.md +++ b/docs/DEPLOYMENT.md @@ -124,6 +124,8 @@ All vars are set in `.env` at the repo root (copy from `.env.example`). The back | `POSTGRES_PASSWORD` | DB password | `change-me` | YES | YES | | `POSTGRES_DB` | Database name | `family_archive_db` | YES | — | +> **PgBouncer pooling mode:** The `journey_items.position_seq` dedup constraint uses `DEFERRABLE INITIALLY DEFERRED`. This requires PgBouncer in **transaction-mode** (not statement-mode) pooling. Do not switch to statement-level pooling — deferred constraints only work within a single transaction session. + ### MinIO container | Variable | Purpose | Default | Required? | Sensitive? |