From d393b42e267c59ad3319786a7f7c962d72f4d6e0 Mon Sep 17 00:00:00 2001 From: nubs Date: Thu, 2 Jul 2026 07:37:59 +0000 Subject: [PATCH] =?UTF-8?q?fix(ci):=20move=20bun=20install=20cache=20off?= =?UTF-8?q?=20slow=20/tmp=20to=20local=20$HOME=20=E2=80=94=20the=20real=20?= =?UTF-8?q?deploy-hang=20root=20cause=20(#10839)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The canary->latest pin (#11235) did NOT fix the deploy hang: run 28572046433 hung on install for 17min+ on a released bun too. Root cause is the install cache living under $PWD (= the checkout dir on the box /tmp), whose contended/slow filesystem stalls bun linking past the 900s cap. bun logs "Slow filesystem detected ... consider setting $BUN_INSTALL_CACHE_DIR to a local folder". Point the cache at $HOME (local disk, persistent/warm) on all three deploy jobs. --- .github/workflows/cloud-cf-deploy.yml | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cloud-cf-deploy.yml b/.github/workflows/cloud-cf-deploy.yml index bc955a20c729c..38dd618a13596 100644 --- a/.github/workflows/cloud-cf-deploy.yml +++ b/.github/workflows/cloud-cf-deploy.yml @@ -227,7 +227,14 @@ jobs: # matches CHECKOUT_MATERIALIZE_TIMEOUT_SECONDS; a true hang still aborts. run: | set -euo pipefail - install_cache="$PWD/.bun-install-cache" + # Cache on LOCAL disk ($HOME), not under $PWD — the checkout dir lives + # on the box's /tmp, whose contended/slow filesystem stalls bun's link + # phase past the 900s cap and wedges deploys (bun itself logs "Slow + # filesystem detected ... consider setting $BUN_INSTALL_CACHE_DIR to a + # local folder"). This is the real fix; the earlier canary→latest pin + # (#11235) did not address it — the hang recurs on a released bun too + # (run 28572046433). Persistent across runs so the cache stays warm. + install_cache="${HOME}/.bun-install-cache-deploy" install_timeout="${BUN_INSTALL_TIMEOUT_SECONDS:-900}" for attempt in 1 2 3; do test -f package.json || { echo "::error::package.json missing from $PWD"; ls -la; exit 1; } @@ -535,7 +542,14 @@ jobs: # matches CHECKOUT_MATERIALIZE_TIMEOUT_SECONDS; a true hang still aborts. run: | set -euo pipefail - install_cache="$PWD/.bun-install-cache" + # Cache on LOCAL disk ($HOME), not under $PWD — the checkout dir lives + # on the box's /tmp, whose contended/slow filesystem stalls bun's link + # phase past the 900s cap and wedges deploys (bun itself logs "Slow + # filesystem detected ... consider setting $BUN_INSTALL_CACHE_DIR to a + # local folder"). This is the real fix; the earlier canary→latest pin + # (#11235) did not address it — the hang recurs on a released bun too + # (run 28572046433). Persistent across runs so the cache stays warm. + install_cache="${HOME}/.bun-install-cache-deploy" install_timeout="${BUN_INSTALL_TIMEOUT_SECONDS:-900}" for attempt in 1 2 3; do test -f package.json || { echo "::error::package.json missing from $PWD"; ls -la; exit 1; } @@ -874,7 +888,14 @@ jobs: # matches CHECKOUT_MATERIALIZE_TIMEOUT_SECONDS; a true hang still aborts. run: | set -euo pipefail - install_cache="$PWD/.bun-install-cache" + # Cache on LOCAL disk ($HOME), not under $PWD — the checkout dir lives + # on the box's /tmp, whose contended/slow filesystem stalls bun's link + # phase past the 900s cap and wedges deploys (bun itself logs "Slow + # filesystem detected ... consider setting $BUN_INSTALL_CACHE_DIR to a + # local folder"). This is the real fix; the earlier canary→latest pin + # (#11235) did not address it — the hang recurs on a released bun too + # (run 28572046433). Persistent across runs so the cache stays warm. + install_cache="${HOME}/.bun-install-cache-deploy" install_timeout="${BUN_INSTALL_TIMEOUT_SECONDS:-900}" for attempt in 1 2 3; do test -f package.json || { echo "::error::package.json missing from $PWD"; ls -la; exit 1; }