upstream(immich): document concurrent app+db restart update_config fix
This commit is contained in:
@@ -24,6 +24,15 @@
|
|||||||
image to `14-vectorchord0.4.3-pgvectors0.3.0@sha256:87c050465fb969a68c7ac23e375e21f4c95cfacd0edce5fa1bc31e63b7891891`
|
image to `14-vectorchord0.4.3-pgvectors0.3.0@sha256:87c050465fb969a68c7ac23e375e21f4c95cfacd0edce5fa1bc31e63b7891891`
|
||||||
(same PG14 + VectorChord 0.4.3, newer pgvectors 0.2.0→0.3.0). Digest verified via
|
(same PG14 + VectorChord 0.4.3, newer pgvectors 0.2.0→0.3.0). Digest verified via
|
||||||
`docker buildx imagetools inspect` on cc-ci (2026-06-12).
|
`docker buildx imagetools inspect` on cc-ci (2026-06-12).
|
||||||
|
- **Concurrent app+database restart needs `update_config: failure_action: continue` on the app service.**
|
||||||
|
When the recipe version label changes (bumping `coop-cloud.${STACK_NAME}.version`) AND the database
|
||||||
|
image changes in the same deploy, both services update simultaneously. The app container starts and
|
||||||
|
immediately tries TypeORM migrations against a still-restarting database → TypeORM connection fails →
|
||||||
|
app process crashes → task FAILED → Docker Swarm sets `UpdateStatus='paused'` (default
|
||||||
|
`failure_action: pause`). Fix: set `update_config: failure_action: continue` on the app service.
|
||||||
|
With `continue`, Docker Swarm records the update as `completed` and Docker's `restart_policy` retries
|
||||||
|
the app container; the database finishes restarting in ~15-20s and the app connects successfully.
|
||||||
|
This is also in the recipe as of PR #2.
|
||||||
- **VectorChord DB backup/restore needs the search_path sed.** A plain `pg_dump` of the
|
- **VectorChord DB backup/restore needs the search_path sed.** A plain `pg_dump` of the
|
||||||
VectorChord/pgvecto.rs DB emits `SELECT pg_catalog.set_config('search_path', '', false);`. Importing
|
VectorChord/pgvecto.rs DB emits `SELECT pg_catalog.set_config('search_path', '', false);`. Importing
|
||||||
that as-is leaves the vector/vchord type + operator references unresolvable, so the first such
|
that as-is leaves the vector/vchord type + operator references unresolvable, so the first such
|
||||||
|
|||||||
Reference in New Issue
Block a user