summaryrefslogtreecommitdiff
path: root/f3s/immich
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-16 14:58:30 +0300
committerPaul Buetow <paul@buetow.org>2026-05-16 14:58:30 +0300
commitf633a65a3592805f8d458c8d2cbe979e63484c02 (patch)
tree74998fdf70bf9c625ba494079c254fd7e6c8bd19 /f3s/immich
parent03a18c651d6800fe2f756887482c4a06175782c3 (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.yaml8
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