Skip to content

test(node): Use docker-compose healthchecks for service readiness - #20429

Merged
nicohrubec merged 4 commits into
developfrom
nh/integration-test-health-checks
Apr 22, 2026
Merged

test(node): Use docker-compose healthchecks for service readiness#20429
nicohrubec merged 4 commits into
developfrom
nh/integration-test-health-checks

Conversation

@nicohrubec

@nicohrubecnicohrubec commented Apr 21, 2026

Copy link
Copy Markdown
Member

Replace the stdout readyMatches approach in the node-integration-tests runner with Docker native healthchecks + docker compose up -d --wait. The old approach matched log substrings like 'port 5432', which can fire too early when the server is not actually yet accepting connections resulting in flakes. Each docker-compose.yml now defines a proper healthcheck (e.g. pg_isready) and the runner blocks on --wait until every service reports healthy.

Also renames the redis-cache container to avoid collision with redis.

Closes#20418
Closes#20335

Replace the stdout-scraping readyMatches approach in the node-integration-tests
runner with Docker's native healthchecks + `docker compose up -d --wait`. The
old approach matched log substrings like `'port 5432'` or `'port: 3306'`, which
fire when the socket is bound but not when the server is actually accepting
queries — producing intermittent CI flakes (e.g. #20418, #20335) under load.
Each docker-compose.yml now defines a proper healthcheck (pg_isready,
mysqladmin ping, redis-cli ping, rabbitmq-diagnostics, etc.), and the runner
blocks on `--wait` until every service reports healthy. On failure, the runner
surfaces `docker compose logs` for easier debugging.
Also renames the redis-cache container to avoid collision with redis.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions

github-actionsBot commented Apr 21, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

⚠️Warning: Base artifact is not the latest one, because the latest workflow run is not done yet. This may lead to incorrect results. Try to re-run all tests to get up to date results.

PathSize% ChangeChange
@sentry/browser25.88 kB--
@sentry/browser - with treeshaking flags24.35 kB--
@sentry/browser (incl. Tracing)43.81 kB--
@sentry/browser (incl. Tracing + Span Streaming)45.5 kB--
@sentry/browser (incl. Tracing, Profiling)48.73 kB--
@sentry/browser (incl. Tracing, Replay)82.98 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags72.5 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)87.67 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)99.93 kB--
@sentry/browser (incl. Feedback)42.7 kB--
@sentry/browser (incl. sendFeedback)30.55 kB--
@sentry/browser (incl. FeedbackAsync)35.55 kB--
@sentry/browser (incl. Metrics)27.16 kB--
@sentry/browser (incl. Logs)27.29 kB--
@sentry/browser (incl. Metrics & Logs)27.98 kB--
@sentry/react27.62 kB--
@sentry/react (incl. Tracing)46.05 kB--
@sentry/vue30.71 kB--
@sentry/vue (incl. Tracing)45.62 kB--
@sentry/svelte25.89 kB--
CDN Bundle28.57 kB--
CDN Bundle (incl. Tracing)46.08 kB--
CDN Bundle (incl. Logs, Metrics)29.95 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)47.12 kB--
CDN Bundle (incl. Replay, Logs, Metrics)68.92 kB--
CDN Bundle (incl. Tracing, Replay)83.14 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)84.17 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)88.61 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)89.69 kB--
CDN Bundle - uncompressed83.59 kB--
CDN Bundle (incl. Tracing) - uncompressed137.62 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed87.73 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed141.03 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed211.31 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed255.06 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed258.46 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed267.97 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed271.36 kB--
@sentry/nextjs (client)48.58 kB--
@sentry/sveltekit (client)44.22 kB--
@sentry/node-core58.08 kB+0.02%+7 B 🔺
@sentry/node175.39 kB+0.02%+19 B 🔺
@sentry/node - without tracing98.05 kB+0.02%+10 B 🔺
@sentry/aws-serverless115.06 kB+0.02%+12 B 🔺

View base workflow run

@nicohrubec
nicohrubec marked this pull request as ready for review April 22, 2026 08:03

@mydeamydea left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

nice! can we document this somewhere what to do if another docker compose is added somewhere (e.g. that healthcheck is required for this)?

@nicohrubec

Copy link
Copy Markdown
MemberAuthor

@mydea Yes good call. I added a bugbot rule that should flag if the health check is missing somewhere!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants

@nicohrubec@mydea