From 21379e3ef50e9b1a4b49b92399f2e7f28b325ff2 Mon Sep 17 00:00:00 2001 From: Rex Raphael Date: Sun, 6 Sep 2026 18:28:24 -0500 Subject: [PATCH] ci: disable the testcontainers reaper on the conformance job The reaper is the container testcontainers starts to clean up after a test process that dies without terminating its own containers. On 2026-09-06 it failed to come up inside its 60 second deadline and took the postgres halves of the oauth2provider and sso conformance suites down with it, before any authsome code ran: create container: reaper: wait for reaper: context deadline exceeded Both failures were at the container-start line, so the suites reported red for something that has nothing to do with them. What the reaper guards against cannot happen on this job. All 11 container starts in the tree pair 1:1 with an explicit Terminate in t.Cleanup, and the runner is destroyed when the job ends, so a leaked container has nowhere to leak to. The variable is set on the one step that runs -tags integration, which is the only place in CI that starts a container, so a local integration run still gets the reaper. Verified by running the two suites that failed with the reaper off: postgres passes, and the container count on the host is unchanged afterwards, which is the cleanup the reaper would otherwise be insuring. Not a speedup, the reaper costs about half a second per package. --- .github/workflows/ci.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f4ca248d..f8b84798 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -117,9 +117,24 @@ jobs: sleep 2 done + # TESTCONTAINERS_RYUK_DISABLED turns off the reaper, the container + # testcontainers starts to clean up after a test process that dies without + # tidying up after itself. The reaper is a flake source here. On + # 2026-09-06 it failed to come up inside its own 60 second deadline and + # took both postgres conformance suites down with it, before a line of + # authsome code ran: + # + # create container: reaper: wait for reaper: context deadline exceeded + # + # What it guards against cannot happen on this job. Every container start + # in the tree pairs with an explicit Terminate in t.Cleanup, and this + # runner is destroyed when the job ends, so a leaked container has nowhere + # to leak to. Nothing sets this outside CI, so a local run still gets the + # reaper, which is where the guard is worth having. - name: Run store conformance suite env: AUTHSOME_MONGO_URI: mongodb://localhost:27017/authsome_test?replicaSet=rs0&directConnection=true + TESTCONTAINERS_RYUK_DISABLED: "true" run: go test -tags integration -p 1 -run '^TestConformance$|^TestStoreConformance_|^TestMigration_' -count=1 -timeout 15m ./store/... ./plugins/... # ─── Lint ───────────────────────────────────────────────────────────