Skip to content

ci(e2e-docker): skip 54_reconcile_orphans in Docker harness#289

Merged
pinodeca merged 1 commit into
mainfrom
fix/docker-skip-reconcile-orphans
Jul 4, 2026
Merged

ci(e2e-docker): skip 54_reconcile_orphans in Docker harness#289
pinodeca merged 1 commit into
mainfrom
fix/docker-skip-reconcile-orphans

Conversation

@pinodeca

@pinodeca pinodeca commented Jul 4, 2026

Copy link
Copy Markdown
Contributor

Problem

The nightly Docker E2E run has failed 2 days in a row at 54_reconcile_orphans:

TEST FAILED [orphan_reclaimed]: reconciliation did not reclaim the df-less engine record

Root cause

scripts/test-e2e-docker.sh runs every test against a single container with fixed, production-default configuration. Tests that need non-default startup GUCs are listed in SKIP_TESTS (superuser GUC, connection-limit, HTTP phases).

54_reconcile_orphans (added in #283) needs the reconcile phase GUCs — pg_durable.reconcile_interval = 2 and pg_durable.retention_days = 0 — which the local harness applies by rewriting postgresql.conf and restarting per phase. In the Docker container those GUCs stay at production defaults (reconcile_interval = 3600, retention_days = 30):

  • The BGW arms its reconcile timer once at startup for 3600s, so no pass runs within the test's 30s poll window.
  • Even a pass wouldn't reclaim a seconds-old orphan under a 30-day retention.

The GUCs can't be applied at runtime either (the reconcile cadence is computed once before the worker loop). PR CI passes because ci.yml uses the local harness that honors phases; only the nightly Docker run exercises this path.

PR #283 introduced a phase-specific test but didn't add it to the Docker skip list — matching when the nightly began failing.

Fix

Add 54_reconcile_orphans to SKIP_TESTS in scripts/test-e2e-docker.sh, consistent with the other phase-dependent tests.

The Docker E2E harness runs every test against a single fixed-config
container. 54_reconcile_orphans (added in #283) needs the reconcile
phase GUCs (reconcile_interval=2, retention_days=0) so a reconcile pass
reclaims a fresh orphan within the test's 30s poll window. Under the
container's production defaults (reconcile_interval=3600,
retention_days=30) the BGW's reconcile timer, armed once at startup,
never ticks in time, so the orphan is never reclaimed and the test
fails. Add it to SKIP_TESTS alongside the other phase-dependent tests.
@pinodeca pinodeca merged commit 3813e19 into main Jul 4, 2026
6 checks passed
@pinodeca pinodeca deleted the fix/docker-skip-reconcile-orphans branch July 4, 2026 16:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant