mirror of
https://github.com/agent-substrate/substrate.git
synced 2026-11-12 10:35:06 +08:00
Part of #1230 When reusing an already-running Ryuk reaper, testcontainers-go v0.43.0 waits only for its Docker port mapping. Docker exposes that port before Ryuk is listening, so a second package can connect too early and lose the handshake with `read ack: EOF`. That is [testcontainers-go#3743](https://github.com/testcontainers/testcontainers-go/issues/3743); v0.44.0 also waits for the reaper's `Started` log line ([#3761](https://github.com/testcontainers/testcontainers-go/pull/3761)). A package whose handshake fails is not counted as a Ryuk client but its containers still carry the shared session label, so another package exiting can delete a database that is still in use — the failure reported in #1230. ## Scope This helps local runs, where the reaper stays on. **It does not fix CI on its own**, so it is deliberately separate from #1235, which disables the reaper for `run-tests`. Measured on a 4-core Linux VM with cold build caches, which staggers package start times the way CI does: ``` v0.43.0, 3 rounds handshake failures in 3/3 rounds; one round cascaded v0.44.0, 3 rounds no handshake failures; database tests still unavailable in 3/3 rounds ``` Under v0.44.0 the failures move to `wait for reaper <id>: context deadline exceeded` — a late package finds a reaper that is already shutting down, and one readiness probe (`defaultStartupTimeout`, 60s) outlives the whole reaper retry budget (`MaxElapsedTime`, 20s), so the retry loop never gets a second attempt. The remaining fail-open behind all of this is [#3827](https://github.com/testcontainers/testcontainers-go/issues/3827), still open upstream. ## Diff size Four lines of `go.mod`. The rest is `go mod vendor` output: v0.44.0 pulls newer `moby/client`, `gopsutil`, and `otelhttp`, and `otelhttp` moves `otel/semconv` from v1.39.0 to v1.41.0. Insertions and deletions nearly cancel because most of it is a directory swap and one generated `httpsnoop` file being merged into another. ``` go.mod, go.sum 62 lines vendor/ 61 files, 17356 +/17490 - ``` `hack/verify/go-modules.sh`, `licenses.sh`, `boilerplate.sh`, and `gofmt.sh` all pass; `go test -race ./cmd/ateapi/...` is green with no silently skipped database tests. --- - [x] Tests pass - [x] Appropriate changes to documentation are included in the PR