From b7424ef8d5824a7a850e1ace5f906c4748875912 Mon Sep 17 00:00:00 2001 From: prql-bot <107324867+prql-bot@users.noreply.github.com> Date: Thu, 20 Aug 2026 23:35:44 +0000 Subject: [PATCH 1/2] ci: dump database container logs when the DB wait times out --- .github/workflows/test-rust.yaml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/test-rust.yaml b/.github/workflows/test-rust.yaml index 0336b27ecc80..60120c83269e 100644 --- a/.github/workflows/test-rust.yaml +++ b/.github/workflows/test-rust.yaml @@ -127,11 +127,22 @@ jobs: --no-run --locked --target=${{ inputs.target }} --no-default-features --features=${{ inputs.features }} - name: Wait for database + id: wait-for-db uses: ifaxity/wait-on-action@v1.2.1 with: resource: "tcp:1433 tcp:3306 tcp:5432 tcp:9004" timeout: 60000 if: ${{ contains(inputs.features, 'test-dbs-external') }} + - name: Dump database containers + # The step above only reports which port never opened, which isn't + # enough to tell a container that crashed from one that was merely + # slow. Dump the containers' own state & logs so the next occurrence is + # diagnosable from the failing run rather than needing a re-run. + if: ${{ failure() && steps.wait-for-db.outcome == 'failure' }} + run: | + docker compose ps --all + docker compose logs --no-color --tail=200 + working-directory: ./prqlc/prqlc/tests/integration/dbs - name: 📋 Test uses: clechasseur/rs-cargo@v4 with: From 5302634035cf73969d20ddd5dd13890c0c22192d Mon Sep 17 00:00:00 2001 From: prql-bot <107324867+prql-bot@users.noreply.github.com> Date: Thu, 20 Aug 2026 23:41:46 +0000 Subject: [PATCH 2/2] ci: also dump free disk space when the DB wait times out --- .github/workflows/test-rust.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/test-rust.yaml b/.github/workflows/test-rust.yaml index 60120c83269e..63b7115d57ed 100644 --- a/.github/workflows/test-rust.yaml +++ b/.github/workflows/test-rust.yaml @@ -138,8 +138,14 @@ jobs: # enough to tell a container that crashed from one that was merely # slow. Dump the containers' own state & logs so the next occurrence is # diagnosable from the failing run rather than needing a re-run. + # + # `df -h` covers the disk-exhaustion hypothesis, which the container + # logs alone don't answer: `Free up disk space` above is skipped on a + # cache hit, so on that path nothing prints the free space and mssql — + # the largest of the four images — is the first to fail to initialise. if: ${{ failure() && steps.wait-for-db.outcome == 'failure' }} run: | + df -h docker compose ps --all docker compose logs --no-color --tail=200 working-directory: ./prqlc/prqlc/tests/integration/dbs