Skip to content

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

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

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

Conversation

@nicohrubec
Copy link
Copy Markdown
Member

@nicohrubec nicohrubec commented Apr 21, 2026

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
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 21, 2026

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.

Path Size % Change Change
@sentry/browser 25.88 kB - -
@sentry/browser - with treeshaking flags 24.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 flags 72.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/react 27.62 kB - -
@sentry/react (incl. Tracing) 46.05 kB - -
@sentry/vue 30.71 kB - -
@sentry/vue (incl. Tracing) 45.62 kB - -
@sentry/svelte 25.89 kB - -
CDN Bundle 28.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 - uncompressed 83.59 kB - -
CDN Bundle (incl. Tracing) - uncompressed 137.62 kB - -
CDN Bundle (incl. Logs, Metrics) - uncompressed 87.73 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 141.03 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 211.31 kB - -
CDN Bundle (incl. Tracing, Replay) - uncompressed 255.06 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 258.46 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 267.97 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 271.36 kB - -
@sentry/nextjs (client) 48.58 kB - -
@sentry/sveltekit (client) 44.22 kB - -
@sentry/node-core 58.08 kB +0.02% +7 B 🔺
@sentry/node 175.39 kB +0.02% +19 B 🔺
@sentry/node - without tracing 98.05 kB +0.02% +10 B 🔺
@sentry/aws-serverless 115.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
Copy link
Copy Markdown
Member

@mydea mydea left a comment

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
Member Author

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

@nicohrubec nicohrubec merged commit 6d2942c into develop Apr 22, 2026
484 of 489 checks passed
@nicohrubec nicohrubec deleted the nh/integration-test-health-checks branch April 22, 2026 09:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants