Skip to content

test(hmr): fix infinite loop in dev server test retry logic#8576

Merged
hyf0 merged 3 commits intorolldown:mainfrom
hyf0-agent:fix/dev-server-test-retry-loop
Mar 7, 2026
Merged

test(hmr): fix infinite loop in dev server test retry logic#8576
hyf0 merged 3 commits intorolldown:mainfrom
hyf0-agent:fix/dev-server-test-retry-loop

Conversation

@hyf0-agent
Copy link
Copy Markdown
Contributor

Summary

Fix an infinite loop bug in the dev server fixture test retry mechanism.

The retry directory naming used a fixed -retry suffix:

while (await isDirectoryExists(tmpProjectPath)) {
  tmpProjectPath = nodePath.join(tmpFixturesPath, fixtureName + '-retry');
}

When both the original directory and -retry directory existed (after 2 failed attempts), the while loop would repeatedly resolve to the same existing path → infinite loop → test times out at 90s.

This made vitest's retry: 3 config effectively useless beyond the first retry attempt.

Fix

Use an incrementing counter: ${fixtureName}-retry-${retryIndex}

The retry directory naming used a fixed '-retry' suffix instead of an
incrementing counter. When both the original directory and '-retry'
directory existed (after 2 failed attempts), the while loop would
repeatedly set the path to the same existing '-retry' directory,
causing an infinite loop that only terminated when the test timed out.

This made vitest's retry mechanism (retry: 3) effectively useless
beyond the first retry attempt.
Copy link
Copy Markdown
Member

@hyf0 hyf0 left a comment

Choose a reason for hiding this comment

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

Small change, gonna just merge it.

@hyf0 hyf0 enabled auto-merge (squash) March 7, 2026 06:39
@hyf0 hyf0 changed the title fix(test): fix infinite loop in dev server test retry logic test: fix infinite loop in dev server test retry logic Mar 7, 2026
@netlify
Copy link
Copy Markdown

netlify bot commented Mar 7, 2026

Deploy Preview for rolldown-rs ready!

Name Link
🔨 Latest commit 90463d7
🔍 Latest deploy log https://app.netlify.com/projects/rolldown-rs/deploys/69abcee53ce980000870e67d
😎 Deploy Preview https://deploy-preview-8576--rolldown-rs.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 project configuration.

@hyf0 hyf0 changed the title test: fix infinite loop in dev server test retry logic test(hmr): fix infinite loop in dev server test retry logic Mar 7, 2026
@hyf0 hyf0 disabled auto-merge March 7, 2026 06:39
@hyf0 hyf0 enabled auto-merge (squash) March 7, 2026 06:40
@hyf0 hyf0 merged commit cb29a71 into rolldown:main Mar 7, 2026
35 checks passed
@github-actions github-actions bot mentioned this pull request Mar 9, 2026
shulaoda added a commit that referenced this pull request Mar 9, 2026
## [1.0.0-rc.8] - 2026-03-09

### 🚀 Features

- watch: enable full functional fs watcher in wasm (#8575) by @hyf0
- watch: expose debounce related options (#8572) by @hyf0

### 🐛 Bug Fixes

- detect new URL(…, import.meta.url) with no-sub template literal (#8565) by @char
- devtools: trace dynamic imports in devtools (#8581) by @cal-gooo
- watch: rebuild when a previously missing file is created (#8562) by @hyf0-agent
- watch: filter out Access events to prevent infinite rebuild loop on Linux (#8557) by @hyf0-agent

### 🚜 Refactor

- watch: remove auto watch for fail imports (#8585) by @hyf0
- fs_watcher: unify the way of constructing watcher (#8571) by @hyf0
- cli: migrate CLI to CAC (#8551) by @h-a-n-a
- switch asset module support from hard-code to builtin plugin (#8546) by @hyf0

### 📚 Documentation

- fix subject-verb agreement in why-bundlers.md (#8591) by @brandonzylstra
- maintenance: align release and canary workflow guide (#8538) by @minsoo-web
- add `format` option to directives example config (#8590) by @shulaoda
- fix: change twitter to x logo in team (#8552) by @mdong1909
- correct composable filter support explanation (#8550) by @sapphi-red

### ⚡ Performance

- testing: share tokio runtime across fixture tests (#8567) by @Boshen

### 🧪 Testing

- hmr: fix infinite loop in dev server test retry logic (#8576) by @hyf0-agent
- cli: add more cli-e2e test cases (#8548) by @h-a-n-a

### ⚙️ Miscellaneous Tasks

- docs: update in-depth/directives for `output.strict` option (#8535) by @minsoo-web
- add PNPM_HOME Dev Drive mapping to Windows CI workflows (#8589) by @Boshen
- deps: update github-actions (#8588) by @renovate[bot]
- move Windows cargo target dir to Dev Drive (#8586) by @Boshen
- optimize cache keys to fix race conditions and reduce usage (#8578) by @Boshen
- remove WASI build & test pipeline (#8580) by @Boshen
- remove unnecessary submodule checkouts (#8577) by @Boshen
- use Dev Drive for Windows CI jobs (#8574) by @Boshen
- skip redundant native binding build for browser and remove standalone job (#8573) by @Boshen
- parallelize Node tests on ubuntu, single Node 24 on macOS/windows (#8570) by @Boshen
- docs: bump @voidzero-dev/vitepress-theme to 4.8.0 (#8558) by @crusty-voidzero
- dedupe type-check from dev server workflow (#8554) by @Boshen

### ❤️ New Contributors

* @brandonzylstra made their first contribution in [#8591](#8591)
* @char made their first contribution in [#8565](#8565)
* @cal-gooo made their first contribution in [#8581](#8581)
* @hyf0-agent made their first contribution in [#8562](#8562)
* @h-a-n-a made their first contribution in [#8551](#8551)

Co-authored-by: shulaoda <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants