Repository navigation
Fix multibuildpack integration test timeouts (builds #19-22 failures) - #1178
Merged
Merged
Conversation
Fixes consistent failures observed in builds #19-22 of the create-cf-infrastructure-and-execute-integration-test-for-ruby job, where the nodejs multibuildpack test timed out after ~920 seconds across all 5 retry attempts. ## Problem The test `MultiBuildpack/when_supplied_with_nodejs` was using the default 20-second Eventually timeout, which is insufficient for: 1. **Heavy multi-buildpack staging**: The Rails 7.2 + Webpacker app with nodejs-buildpack + ruby-buildpack takes 4-5 minutes to stage - Node.js buildpack downloads Node 22.23.3, Yarn 1.22.22, Python - Yarn install takes ~53 seconds for node_modules - Ruby buildpack downloads Ruby 3.2.11, Bundler 2.7.2, RubyGems - Bundle install processes 78 gems including Rails 7.2.3 - Webpacker/asset compilation 2. **Slow app boot time**: Rails apps with Webpacker can take 60-120 seconds to start and bind their port 3. **Parallel execution resource contention**: Tests run with GINKGO_NODES=3, causing multiple heavy applications to compete for limited CF Diego cell resources ## Solution Extended Eventually timeout to 90 seconds with 2-second poll intervals for all multibuildpack tests: - `when_supplied_with_nodejs` (PRIMARY FIX) - `when_ruby_is_a_supply_for_the_binary_buildpack` - `when_supplied_with_go` - `when_supplied_with_.NET_Core` This matches the precedent established for other slow-booting fixtures: - PR #1140: JRuby test timeouts - Commit d5294b6: Docker backend timeout fixes for 3 flaky tests ## Testing The fix follows the exact pattern proven successful in d5294b6, which stated: "The default 20s Eventually timeout has been observed to intermittently race with the Docker platform backend under parallel CI load: the container reports as started before the app process inside has actually finished booting and bound its port." The same issue affects these multi-buildpack tests, particularly the nodejs test with its heavy Rails + Webpacker fixture.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes consistent failures in builds #19-22 where the nodejs multibuildpack integration test timed out after ~920 seconds across all 5 retry attempts.
Problem
The
MultiBuildpack/when_supplied_with_nodejstest has been consistently failing since build #19 (Oct 3). Investigation revealed the test was using the default 20-secondEventuallytimeout, which is insufficient for this heavy Rails 7.2 + Webpacker multi-buildpack scenario.Why the test fails
Heavy multi-buildpack staging (~4-5 minutes):
Slow app boot time (60-120 seconds):
node -vandruby -vcommands on each requestParallel execution resource contention:
GINKGO_NODES=3Build history
bbe2a4be78d409c582c4944b,90ca34cd7640eb2aThe GINKGO_NODES changes (commits 78d409c → 82c4944 → 7640eb2) were unrelated to this timeout issue.
Solution
Extended
Eventuallytimeout to 90 seconds with 2-second poll intervals for all multibuildpack tests:when_supplied_with_nodejs(PRIMARY FIX)when_ruby_is_a_supply_for_the_binary_buildpackwhen_supplied_with_gowhen_supplied_with_.NET_CoreChanges made
Precedent
This fix follows the exact same pattern proven successful in:
Commit d5294b6 (Oct 2, 2026): "Increase Eventually timeout for 3 flaky Docker-backend integration tests"
PR Increase JRuby test polling timeout for cflinuxfs5 stability #1140: JRuby test timeout fixes
Both commits explicitly state that the default 20s timeout races with slow app boot times under parallel CI load.
Testing
The fix is conservative and low-risk:
Expected outcome
Investigation
Full investigation details available in the commit message and local documentation:
flyCLIChecklist
Related
create-cf-infrastructure-and-execute-integration-test-for-ruby