Open mukulmantosh opened 1 month ago
go.mod
github.com/testcontainers/testcontainers-go v0.33.0
github.com/testcontainers/testcontainers-go/modules/nats v0.33.0
github.com/testcontainers/testcontainers-go/modules/postgres v0.32.0
There are know race conditions in the reaper which should be fixed once we've merged https://github.com/testcontainers/testcontainers-go/pull/2728 and updated to use the new reaper image container the work which was merged today https://github.com/testcontainers/moby-ryuk/pull/141
@mukulmantosh did you find any workaround for this issue?
If you use the branch from https://github.com/testcontainers/testcontainers-go/pull/2728 does it fix your issue?
On the merged commit, we now instead get
Error: Received unexpected error:
generic container: create container: reaper: from container "1aabe62f": wait for reaper 1aabe62f: external check: check target: retries: 571 address: 172.19.0.1:58322: get state: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.46/containers/1aabe62f3a5988e7bf88dbae63aa756f9700f3c6697eb41fa6b5f56933bb080c/json": context deadline exceeded
Can you confirm you're using v0.34.0 and the exact test case you're using?
I've tried with the following and all works as expected, so suspecting it could be something setup releated
package testcontainers_test
import (
"context"
"testing"
"time"
"github.com/stretchr/testify/require"
"github.com/testcontainers/testcontainers-go"
"github.com/testcontainers/testcontainers-go/modules/postgres"
"github.com/testcontainers/testcontainers-go/wait"
)
func TestReaper(t *testing.T) {
ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second)
defer cancel()
dbName, dbUsername, dbPassword := "test_db", "test_user", "test_password"
pgContainer, err := postgres.Run(ctx, "docker.io/postgres:16-alpine",
postgres.WithDatabase(dbName),
postgres.WithUsername(dbUsername),
postgres.WithPassword(dbPassword),
testcontainers.WithWaitStrategy(
wait.ForLog("database system is ready to accept connections").
WithOccurrence(2).WithStartupTimeout(10*time.Second),
),
)
testcontainers.CleanupContainer(t, pgContainer)
require.NoError(t, err)
dbHost, err := pgContainer.Host(ctx)
require.NoError(t, err)
require.NotEmpty(t, dbHost)
mappedPort, err := pgContainer.MappedPort(ctx, "5432/tcp")
require.NoError(t, err)
require.NotEmpty(t, mappedPort)
}
go.mod:
module github.com/testcontainers/testcontainers-go/test
go 1.23.2
require (
github.com/stretchr/testify v1.9.0
github.com/testcontainers/testcontainers-go v0.34.0
github.com/testcontainers/testcontainers-go/modules/postgres v0.34.0
)
require (
dario.cat/mergo v1.0.0 // indirect
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
github.com/containerd/containerd v1.7.18 // indirect
github.com/containerd/log v0.1.0 // indirect
github.com/containerd/platforms v0.2.1 // indirect
github.com/cpuguy83/dockercfg v0.3.2 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/distribution/reference v0.6.0 // indirect
github.com/docker/docker v27.1.1+incompatible // indirect
github.com/docker/go-connections v0.5.0 // indirect
github.com/docker/go-units v0.5.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/go-logr/logr v1.4.1 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-ole/go-ole v1.2.6 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/klauspost/compress v1.17.4 // indirect
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
github.com/magiconair/properties v1.8.7 // indirect
github.com/moby/docker-image-spec v1.3.1 // indirect
github.com/moby/patternmatcher v0.6.0 // indirect
github.com/moby/sys/sequential v0.5.0 // indirect
github.com/moby/sys/user v0.1.0 // indirect
github.com/moby/term v0.5.0 // indirect
github.com/morikuni/aec v1.0.0 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.0 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
github.com/shirou/gopsutil/v3 v3.23.12 // indirect
github.com/shoenig/go-m1cpu v0.1.6 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
github.com/tklauser/go-sysconf v0.3.12 // indirect
github.com/tklauser/numcpus v0.6.1 // indirect
github.com/yusufpapurcu/wmi v1.2.3 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
go.opentelemetry.io/otel v1.24.0 // indirect
go.opentelemetry.io/otel/metric v1.24.0 // indirect
go.opentelemetry.io/otel/trace v1.24.0 // indirect
golang.org/x/crypto v0.24.0 // indirect
golang.org/x/sys v0.21.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
We later tried v0.34.0
as well - no difference. However, we did figure out that it has something to do with running the test inside a Docker container with /var/run/docker.sock
mounted. Guess that's a separate issue.
We saw recently the same on github actions more and more common for this issues. Running at github codespace those issues are gone. v0.33.0 and v0.34.0 get no difference, always some random testcontainer connection failed.
Testcontainers version
0.33.0
Using the latest Testcontainers version?
Yes
Host OS
Windows
Host arch
x86
Go version
1.23
Docker version
Docker info
What happened?
I attempted to run tests that involve both Postgres and NATS. While they often run smoothly on their own, there are times when they fail unexpectedly.
I am not using the GenericContainer, instead using the official supported ones.
Example: Postgres
NATS
Relevant log output
Additional information
No response