openvibers/openvibe.host Commits

pgBackRest waits five minutes for a backup's last WAL segment (#326)

OP OpenVibers committed 6 days ago · c0856e74eb · 2 files, +4 −0

The 2026-11-07 02:15 diff backup failed with ERROR [082] (WAL segment not archived before the 60000ms timeout)
during the 02:35 load spike; the repository is B2 over the internet. archive-timeout=300 rides out a slow minute.
WAL archiving itself is healthy (no failures); the full backup of 11-08 02:15 restores the backup-age check.

Changes

ddiff --git a/roles/data/provision.sh b/roles/data/provision.sh
iindex 062dad2..ea4de6d 100755
---- a/roles/data/provision.sh
++++ b/roles/data/provision.sh
@@@ -78,6 +78,9 @@ repo1-retention-full=2
repo1-retention-full-type=count
process-max=2
start-fast=y
++# A backup waits for its last WAL segment to reach the repository (B2, over the internet). The default 60 s failed the
++# 2026-11-07 diff during the 02:35 load spike (ERROR [082]); five minutes rides out a slow B2 minute.
++archive-timeout=300
compress-type=zst
log-level-console=warn
log-level-file=info
ddiff --git a/test/data-role.test.js b/test/data-role.test.js
iindex fbe8d56..88b1825 100644
---- a/test/data-role.test.js
++++ b/test/data-role.test.js
@@@ -53,6 +53,7 @@ runTests([
assert.match(p, /pgbackrest --stanza=openvibe archive-push %p/);
assert.match(p, /repo1-cipher-type=aes-256-cbc/);
assert.match(p, /repo1-path=\/openvibe-pgbackrest/, 'beside, never under, the pruned backup prefix');
++ assert.match(p, /^archive-timeout=300$/m, 'a backup waits up to five minutes for its last WAL segment (the 11-07 diff failed at 60 s)');
assert.match(p, /REVOKE CONNECT ON DATABASE postgres FROM PUBLIC;/, 'service roles cannot reach the maintenance database');
const lib = read('lib.sh');
assert.match(lib, /SCRAM-SHA-256\$\{it\}/, 'passwords reach SQL as SCRAM secrets');