mirror of
https://github.com/frappe/erpnext.git
synced 2026-08-13 06:31:48 +00:00
ci(postgres): fail setup if pg_ctl stop fails before baking the datadir
The "Stop DB and stage datadir" step swallowed a failed `pg_ctl -m fast -w stop` with `|| true`, then moved and tarred the PGDATA regardless. A stop that times out or errors would bake a still-running, crash-inconsistent cluster into the artifact every test shard consumes — and with full_page_writes off, crash recovery can't repair torn pages. Drop the `|| true` so a failed stop fails the job, mirroring the MariaDB sister's "don't bake a dirty datadir" guard. Also drop the redundant `ALTER SYSTEM SET fsync/synchronous_commit/ full_page_writes = off` block from install.sh. Its comment claimed the postgres workflow "runs a service-container DB and never calls start-db.sh", but it does call start-db.sh, which already applies those flags via `-o` on every postgres start (setup job and each shard). The block was a no-op and its justification was factually wrong. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
6
.github/workflows/server-tests-postgres.yml
vendored
6
.github/workflows/server-tests-postgres.yml
vendored
@@ -108,7 +108,11 @@ jobs:
|
||||
- name: Stop DB and stage datadir
|
||||
run: |
|
||||
PG_BIN=$(ls -d /usr/lib/postgresql/*/bin | sort -V | tail -1)
|
||||
"$PG_BIN/pg_ctl" -D /home/runner/pgdata -m fast -w stop || true
|
||||
# Clean shutdown so the baked datadir is consistent. Do NOT swallow a failed stop with
|
||||
# `|| true`: moving and tarring a still-running cluster ships a torn datadir the shards
|
||||
# cannot crash-recover (full_page_writes is off). Fail the job instead — mirrors the
|
||||
# MariaDB sister's "don't bake a dirty datadir" guard.
|
||||
"$PG_BIN/pg_ctl" -D /home/runner/pgdata -m fast -w stop
|
||||
mv /home/runner/pgdata /home/runner/frappe-bench/pgdata
|
||||
|
||||
- name: Package bench for test shards
|
||||
|
||||
Reference in New Issue
Block a user