diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-16 14:58:30 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-16 14:58:30 +0300 |
| commit | f633a65a3592805f8d458c8d2cbe979e63484c02 (patch) | |
| tree | 74998fdf70bf9c625ba494079c254fd7e6c8bd19 /f3s/immich | |
| parent | 03a18c651d6800fe2f756887482c4a06175782c3 (diff) | |
f3s: set strategy Recreate on single-replica stateful deployments
Prevents NFS-lock races during rolling updates. The hostPath PVs point at
an NFS-shared directory mounted on every r-node, so RWO is not actually
enforced across nodes — under the default RollingUpdate strategy the new
pod can start on a different node and grab the same data dir while the
old pod still holds file locks, producing errors like postgres'
"could not write to file postmaster.pid: Unknown error 512".
Applied to: immich-postgres, audiobookshelf, anki-sync-server, registry,
pkgrepo, player, wallabag, miniflux-postgres, opodsync, radicale,
kobo-sync-server, keybr, filebrowser, git-server, goprecords, jellyfin.
(syncthing and navidrome already had it.)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Diffstat (limited to 'f3s/immich')
| -rw-r--r-- | f3s/immich/helm-chart/templates/postgres.yaml | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/f3s/immich/helm-chart/templates/postgres.yaml b/f3s/immich/helm-chart/templates/postgres.yaml index f4e32ad..49f4a24 100644 --- a/f3s/immich/helm-chart/templates/postgres.yaml +++ b/f3s/immich/helm-chart/templates/postgres.yaml @@ -7,6 +7,14 @@ metadata: namespace: services spec: replicas: 1 + # Recreate (not RollingUpdate) so the old pod is fully terminated before + # the new one starts. The hostPath PV points at an NFS-backed directory + # mounted on every r-node, so RWO is not actually enforced across nodes: + # under RollingUpdate the new pod can start on a different node and grab + # the same data dir while the old pod still holds postgres' file locks, + # producing "could not write to file postmaster.pid: Unknown error 512". + strategy: + type: Recreate selector: matchLabels: app: immich-postgres |
