Skip to content

Work around node-libcurl stalls on Node.js 26 and make the job required - #16

Merged
dr-dimitru merged 3 commits into
masterfrom
test/node26-stalls
Sep 30, 2026
Merged

dr-dimitru merged 3 commits into
masterfrom
test/node26-stalls

Conversation

@dr-dimitru

@dr-dimitru dr-dimitru commented Sep 30, 2026 •

Copy link
Copy Markdown
Member

Summary

  • 🧪 Set FORBID_REUSE in tests on Node.js 26. On Node.js 26, node-libcurl delivers a finished transfer only when another JS callback runs (Node.js 26: 'end' is not delivered until another JS callback runs JCMais/node-libcurl#454). With in-process test servers and a reused connection, that adds about 1 s per request.
  • 🧪 Skip the fd-zero upload test on Node.js 26. There, fd uploads wait until timeout and then crash inside node-libcurl.
  • 🏗️ Remove continue-on-error from the Node.js 26 CI job.
  • 📔 Rewrite the Node.js 26 section of docs/platform-notes.md with the confirmed cause and the upstream issue link.

Verification

  • Node.js 26.10.0 locally: npm run lint, npm test, npm run build, npm run lint:package, npm run test:package all pass (124 passing, 57 pending).
  • Node.js 24.16.0 locally: npm test passes (125 passing, 56 pending).

On Node.js 26, node-libcurl sometimes fails to wake the event loop, so a
transfer finishes only on libcurl's 1 s fallback timer. The test suite
hits this because its servers run in the same process and connections
are reused. Setting FORBID_REUSE in tests avoids the delay. File
descriptor uploads stall until timeout with no workaround, so that test
is skipped on Node.js 26. With both in place the Node.js 26 CI job is
required again.
@dr-dimitru
dr-dimitru merged commit f702e9c into master Sep 30, 2026
6 of 7 checks passed
@dr-dimitru
dr-dimitru deleted the test/node26-stalls branch September 30, 2026 21:17
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.

1 participant