From 04cc44c15ec44f582a8b1ba9a64cc972cd2abd94 Mon Sep 17 00:00:00 2001 From: autonomic-bot Date: Sun, 31 May 2026 01:23:38 +0000 Subject: [PATCH] =?UTF-8?q?fix(2):=20discourse=20base-deploy=20timeout=20?= =?UTF-8?q?=E2=80=94=20prepull-enable=20(sidekiq=20depends=5Fon=20app,=20v?= =?UTF-8?q?alid=20compose)=20+=203600s=20timeout?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit full4 base deploy timed out at 2400s on the 7-GiB single node. Root causes: (1) sidekiq.depends_on referenced undefined service 'discourse' (main svc is 'app') → abra config --images rc=15 → prepull SKIPPED → 2.4GB image pulled inline during deploy, eating convergence budget. Overlay now overrides sidekiq.depends_on:[app] (swarm ignores depends_on → no-op at runtime, masks nothing) so prepull resolves+pre-pulls images on both base+head deploys. (2) bumped DEPLOY_TIMEOUT/TIMEOUT 2400→3600 for headroom on the RAM/CPU-constrained Rails cold boot. Also pre-cached bitnamilegacy/discourse:3.3.1 by tag on cc-ci (was dangling ). Co-Authored-By: Claude Opus 4.8 (1M context) --- tests/discourse/compose.ccci.yml | 15 +++++++++++++++ tests/discourse/recipe_meta.py | 5 +++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/tests/discourse/compose.ccci.yml b/tests/discourse/compose.ccci.yml index 1053580..9d8d357 100644 --- a/tests/discourse/compose.ccci.yml +++ b/tests/discourse/compose.ccci.yml @@ -20,6 +20,19 @@ version: "3.8" # ships 20m, so this overlay is idempotent on the head (it persists untracked across the checkout). # Both changes are namespace/grace-only: identical image content, a healthy check still marks healthy # immediately → NO assertion is weakened and no defect is masked. +# +# 3. PREPULL-ENABLE (compose-validity): the published recipe (BOTH 0.7.0 base AND the PR head) ships +# `sidekiq.depends_on: [discourse]`, but the main service is named `app` — `discourse` is an +# UNDEFINED service, so `abra app config --images` (the harness prepull step) returns +# `invalid compose project` (rc=15) and prepull is SKIPPED → the 2.4GB discourse image is pulled +# INLINE during `abra app deploy`, eating the convergence budget on the 7-GiB single node and +# pushing the slow Rails cold boot past the deploy timeout (full4 base-deploy timed out at 2400s). +# This overlay overrides sidekiq.depends_on to the real service `app` so the merged compose is +# VALID → prepull resolves+pre-pulls the images before deploy → reliable convergence. This is a +# NO-OP at runtime: `docker stack deploy` (swarm) IGNORES depends_on entirely, so correcting a +# dangling lint-only reference to the real service changes NOTHING swarm does — it masks no defect +# and weakens no test; it only unblocks the image pre-pull. (The same dangling ref exists upstream; +# filed as a recipe nit, but the fix here is the immutable-published-base + harness-prepull path.) services: app: image: bitnamilegacy/discourse:3.3.1 @@ -27,3 +40,5 @@ services: start_period: 20m sidekiq: image: bitnamilegacy/discourse:3.3.1 + depends_on: + - app diff --git a/tests/discourse/recipe_meta.py b/tests/discourse/recipe_meta.py index f316cd8..2af8ff6 100644 --- a/tests/discourse/recipe_meta.py +++ b/tests/discourse/recipe_meta.py @@ -6,7 +6,8 @@ # app is actually serving (the canonical "is discourse up" signal — NOT "/", which may redirect to setup). HEALTH_PATH = "/srv/status" HEALTH_OK = (200,) -DEPLOY_TIMEOUT = 2400 # slow Rails cold boot (15-25min); matches the EXTRA_ENV TIMEOUT below +DEPLOY_TIMEOUT = 3600 # slow Rails cold boot (15-25min) on the 7-GiB single node; bumped 2400→3600 for +# headroom after full4's base deploy timed out at 2400s (RAM/CPU-constrained boot + image re-pull). HTTP_TIMEOUT = 1200 # Slow-cold-boot handling: the recipe-PR (recipe-maintainers/discourse#1) bumps the app healthcheck @@ -33,7 +34,7 @@ HTTP_TIMEOUT = 1200 CHAOS_BASE_DEPLOY = True UPGRADE_BASE_VERSION = "0.7.0+3.3.1" EXTRA_ENV = { - "TIMEOUT": "2400", + "TIMEOUT": "3600", # abra's internal convergence wait; matches DEPLOY_TIMEOUT (slow Rails boot headroom) "COMPOSE_FILE": "compose.yml:compose.ccci.yml", }