From f0431e83116e0307f891002690fdbfe75d4cd814 Mon Sep 17 00:00:00 2001 From: Anurag Mittal <1321012+anurag4DSB@users.noreply.github.com> Date: Tue, 8 Sep 2026 13:14:50 +0200 Subject: [PATCH] CLDSRV-992: Capture cloudserver's log on the s3c functional jobs The s3c-ft-tests jobs run cloudserver as a container and upload sproxyd, bucketd, repd and vault logs, but never cloudserver's own. Its output goes to the container's stdout and is discarded, so any failure that originates in cloudserver on these jobs is undiagnosable after the fact. That is not hypothetical. Three CLDSRV-992 rows sit on these jobs and are all stuck for exactly this reason: - F8's ServiceUnavailable on "should get the body of part 8 when ordered MPU". Chasing a fresh occurrence showed nginx with zero 5xx, sproxyd with zero errors, and bucketd with zero 503s and its only connection errors at a single startup instant. The 503 was therefore generated by cloudserver itself, and there is no log to say why. - F4 and F8's 40s timeouts in the uploadPartCopy fixtures. The same fixture builds successfully three or four times per run and then stalls once, so it is an intermittent stall rather than slow work, and again nothing records it. Dump the container's log to the job's artifacts directory before teardown, while the containers still exist. The step is if: always() and ends in `|| true`, so it runs on failure -- which is when it matters -- and can never itself fail a job. A passing run pays one docker compose logs call. Issue: CLDSRV-992 --- .github/workflows/tests.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index dfa897be27..43ec98ebfa 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -666,6 +666,15 @@ jobs: run: |- set -o pipefail; yarn run ft_scripts | tee /tmp/artifacts/${{ matrix.job-name }}/ft_scripts.log + # cloudserver runs as a container on these jobs and its log is never + # captured, so a server-side stall or 503 here cannot be diagnosed after + # the fact. Runs before teardown, while the containers still exist. + - name: Capture cloudserver logs + run: |- + docker compose logs --no-color --timestamps cloudserver-sse-before-migration \ + > /tmp/artifacts/${{ matrix.job-name }}/s3.log 2>&1 || true + working-directory: .github/docker + if: always() - name: Teardown CI services run: docker compose down redis sproxyd metadata-standalone vault cloudserver-sse-before-migration working-directory: .github/docker