fix: a preset disables postgresql-common's WAL archival (keel#201) #4

Merged
navigator merged 1 commit from fix/no-wal-archival-preset into main 2026-10-16 15:21:59 -03:00
Owner

Run 2 of the LNPP 19.0-3 release test (keel 0.23.41): keel diff on the witness said database.server.role: drift (declared standalone, observed primary). pg_receivewal@17-main streamed from the server since the first boot (keel#201).

systemd applies the presets on the first boot of an image (no machine-id). Debian's presets enable every unit they do not name, and postgresql-common's pg_receivewal@ is WantedBy=postgresql@%i.service. So every LNPP node archived its WAL into /var/backups/postgresql, held the slot pg_receivewal_service, and read as a primary in keel diff; on a standby the unit restarted in a loop.

  • overlay/usr/lib/systemd/system-preset/20-keel-lnpp.preset disables pg_receivewal@.service and pg_compresswal@.timer, as keel-overlay-etcd does for etcd.
  • conf.d/zz-check fails the build when the preset does not disable them, or when a link enables them.
  • Changelog 19.0 (4): the "package / changelog" gate needs a new version for a change that ships, so the published LNPP image is 19.0-4 (19.0-3 was built and tested, and is not published).

Tests: tests/image-check.bats (no preset fails the build; an enabled link fails the build). The boot proof is run 3 of the LNPP release test on the image built from this. The appliance gate does not boot this layer (no lnpp layer on the mirror).

Run 2 of the LNPP 19.0-3 release test (keel 0.23.41): `keel diff` on the witness said `database.server.role: drift (declared standalone, observed primary)`. `pg_receivewal@17-main` streamed from the server since the first boot (keel#201). systemd applies the presets on the first boot of an image (no machine-id). Debian's presets enable every unit they do not name, and postgresql-common's `pg_receivewal@` is `WantedBy=postgresql@%i.service`. So every LNPP node archived its WAL into `/var/backups/postgresql`, held the slot `pg_receivewal_service`, and read as a primary in keel diff; on a standby the unit restarted in a loop. - `overlay/usr/lib/systemd/system-preset/20-keel-lnpp.preset` disables `pg_receivewal@.service` and `pg_compresswal@.timer`, as keel-overlay-etcd does for etcd. - `conf.d/zz-check` fails the build when the preset does not disable them, or when a link enables them. - Changelog 19.0 (4): the "package / changelog" gate needs a new version for a change that ships, so the published LNPP image is 19.0-4 (19.0-3 was built and tested, and is not published). Tests: `tests/image-check.bats` (no preset fails the build; an enabled link fails the build). The boot proof is run 3 of the LNPP release test on the image built from this. The `appliance` gate does not boot this layer (no lnpp layer on the mirror).
fix: a preset disables postgresql-common's WAL archival (keel#201)
Some checks failed
tests / package (pull_request) Failing after 5s
tests / appliance (pull_request) Successful in 11s
tests / python (pull_request) Successful in 30s
tests / tests (pull_request) Successful in 49s
security / security (pull_request) Successful in 1m15s
tests / stack (pull_request) Has been cancelled
5afa867361
Run 2 of the LNPP 19.0-3 release test: keel diff on the witness said
"database.server.role: drift (declared standalone, observed primary)".
pg_receivewal@17-main streamed from the server since the first boot.
systemd applies the presets on the first boot of an image (no
machine-id), Debian's presets enable every unit they do not name, and
postgresql-common's pg_receivewal@ is WantedBy postgresql@%i. So every
LNPP node archived its WAL into /var/backups, held the slot
pg_receivewal_service, and read as a primary in keel diff.

20-keel-lnpp.preset disables pg_receivewal@ and pg_compresswal@, as
keel-overlay-etcd does for etcd. conf.d/zz-check fails the build when
the preset does not disable them or a link enables them.
navigator force-pushed fix/no-wal-archival-preset from 5afa867361
Some checks failed
tests / package (pull_request) Failing after 5s
tests / appliance (pull_request) Successful in 11s
tests / python (pull_request) Successful in 30s
tests / tests (pull_request) Successful in 49s
security / security (pull_request) Successful in 1m15s
tests / stack (pull_request) Has been cancelled
to f357df0cda
All checks were successful
tests / appliance (pull_request) Successful in 9s
tests / package (pull_request) Successful in 5s
tests / python (pull_request) Successful in 21s
tests / tests (pull_request) Successful in 40s
security / security (pull_request) Successful in 58s
tests / stack (pull_request) Successful in 1m37s
2026-10-16 15:19:52 -03:00
Compare
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Keel-Linux/keel-lnpp!4
No description provided.