Skip to content

Conversation

@stevenh
Copy link
Contributor

@stevenh stevenh commented May 8, 2025

Fix a race condition when processing HostPortStrategy.WaitUntilReady which could result in it returning "no port to wait for" when no port is specified as is the case for ForExposedPort.

This could happen if the call happens very quickly after the container is started and the port is not yet available.

We now retry the internal port detection until found or the internal context is cancelled.

Fixes: #2945

@netlify
Copy link

netlify bot commented May 8, 2025

Deploy Preview for testcontainers-go ready!

Name Link
🔨 Latest commit 792c836
🔍 Latest deploy log https://app.netlify.com/sites/testcontainers-go/deploys/681dd036ad0af00008240e39
😎 Deploy Preview https://deploy-preview-3158--testcontainers-go.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@github-actions github-actions bot added the bug An issue with the library label May 8, 2025
@stevenh stevenh changed the title fix(wait): ForExposedPort no port to wait for fix(wait): no port to wait for May 8, 2025
Fix a race condition when processing HostPortStrategy.WaitUntilReady
which could result in it returning "no port to wait for" when no port
is specified as is the case for ForExposedPort.

This could happen if the call happens very quickly after the container
is started and the port is not yet available.

We now retry the internal port detection until found or the internal
context is cancelled.

Fixes: #2945
@stevenh stevenh force-pushed the fix/wait-for-exposed-port branch from 33943ec to 4f3610b Compare May 8, 2025 17:48
@stevenh stevenh marked this pull request as ready for review May 9, 2025 09:51
@stevenh stevenh requested a review from a team as a code owner May 9, 2025 09:51
Copy link
Member

@mdelapenya mdelapenya left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks!

One simple comment regarding for loops 😅

@mdelapenya mdelapenya merged commit f0c529c into main May 10, 2025
203 checks passed
@mdelapenya mdelapenya deleted the fix/wait-for-exposed-port branch May 10, 2025 05:54
mdelapenya added a commit to waroir20/testcontainers-go that referenced this pull request May 15, 2025
* main:
  feat: support adding wait strategies as functional option (testcontainers#3161)
  fix(etcd): expose ports for the etcd nodes (testcontainers#3162)
  fix(wait): no port to wait for (testcontainers#3158)
  feat: add more functional options for customising containers (testcontainers#3156)
  docs(redpanda): update sasl authentication option to use scram sha 256 (testcontainers#3126)
mdelapenya added a commit to mdelapenya/testcontainers-go that referenced this pull request Jun 3, 2025
* main: (236 commits)
  feat(kafka,redpanda): support for waiting for mapped ports without external checks (testcontainers#3165)
  chore: bump ryuk to 0.12.0 (testcontainers#3195)
  feat!: add options when creating RawCommand (testcontainers#3168)
  chore(deps)!: bump github.com/docker/docker from 28.1.1+incompatible to 28.2.2+incompatible (testcontainers#3194)
  feat(couchbase): adding auth to couchbase initCluster functions to support container reuse (testcontainers#3048)
  chore(deps): bump github.com/containerd/containerd/v2 (testcontainers#3167)
  docs(options): refactor options layout in modules (testcontainers#3163)
  fix(ci): do not run sonar for Testcontainers Cloud (testcontainers#3166)
  chore(ci): do not fail fast in the Testcontainers Cloud run (testcontainers#3164)
  feat: support adding wait strategies as functional option (testcontainers#3161)
  fix(etcd): expose ports for the etcd nodes (testcontainers#3162)
  fix(wait): no port to wait for (testcontainers#3158)
  feat: add more functional options for customising containers (testcontainers#3156)
  docs(redpanda): update sasl authentication option to use scram sha 256 (testcontainers#3126)
  chore(deps): bump mkdocs-include-markdown-plugin from 6.2.2 to 7.1.5 (testcontainers#3137)
  chore(deps): bump github.com/shirou/gopsutil/v4 from 4.25.1 to 4.25.4 (testcontainers#3133)
  chore(deps): bump github.com/docker/docker from 28.0.1+incompatible to 28.1.1+incompatible (testcontainers#3152)
  feat(memcached): add memcached module (testcontainers#3132)
  fix(etcd): single node etcd cluster access (testcontainers#3149)
  feat(valkey): add TLS support for Valkey (testcontainers#3131)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug An issue with the library

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: "wait for reaper 0743154e: no port to wait for"

3 participants