-
Notifications
You must be signed in to change notification settings - Fork 5.1k
cluster: port Node's cluster and child_process handle-passing suites (+43 upstream tests; cluster 54 → 85) and implement what they expose — round-robin fd handoff, SCHED_NONE shared handles, UDP clustering, IPC handle passing #31829
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
+6,881
−621
Merged
Changes from all commits
Commits
Show all changes
183 commits
Select commit
Hold shift + click to select a range
bb794d5
cluster: implement real round-robin + shared-handle semantics; sync t…
cirospaciari 7afbee6
[autofix.ci] apply automated fixes
autofix-ci[bot] 1f5f6c5
cluster: fix fd handoff protocol, compile errors, and review feedback
cirospaciari 3b68223
cluster: degrade gracefully on Windows where handles cannot cross pro…
cirospaciari 842c9f1
cluster: fix remaining Windows error-code paths; skip two more handof…
cirospaciari fde299e
cluster: address review feedback - TLS via shared handles, error fide…
cirospaciari b717031
cluster: implement cross-process socket handle transfer on Windows
cirospaciari 82e861b
cluster: fix Windows fd tagging in connect and wildcard bind preference
cirospaciari 13726f1
cluster: address review of the Windows handle-transfer code
cirospaciari 0d78455
cluster: don't run the libuv pipe sniffer on raw Windows SOCKETs
cirospaciari 5f3bd71
cluster: fix Windows transfer regressions found by second CI execution
cirospaciari 0ec4eab
cluster: skip inspect-brk test on Windows (extra stdio pipes unsuppor…
cirospaciari daf8761
cluster: fix fdIsRawSocket flag being treated as set when false
cirospaciari 5c42a71
cluster: address handle-transfer review round and clippy lints
cirospaciari 181458e
cluster: reclaim the in-flight connection when a newconn send fails o…
cirospaciari 28ff117
cluster: handle export failure on the shared-handle reply and return …
cirospaciari 27f0ed1
cluster: emit internalMessage on process for worker control messages
cirospaciari 448a3c8
ipc: make the handle retransmission budget per-message
cirospaciari fd2b2d1
dgram: restore healthCheck on closed sockets; skip cluster-dgram-1 on…
cirospaciari 049135f
ipc: rename unused serialize() options param to _options to satisfy lint
cirospaciari 08c6344
cluster: reject TLS listens on round-robin keys; drop bogus :-1 in pi…
cirospaciari ea27d22
cluster: unlink shared pipe paths on teardown; bind :: when no host i…
cirospaciari d712218
[autofix.ci] apply automated fixes
autofix-ci[bot] faa3f18
test: share the cluster pipe name with the worker through the fork env
cirospaciari 1128d4c
test: skip cluster-dgram-bind-fd on macOS like its dgram-1 sibling
cirospaciari a9a93fb
Merge branch 'main' into ciro/cluster-tests-v26
robobun ab6d5dc
Merge branch 'main' into ciro/cluster-tests-v26
cirospaciari 1844b17
ipc: node wire format + own the in-flight fd for process.send(message…
cirospaciari 4cdc919
cluster: propagate server socket options to RR accepts; chmod SCHED_N…
cirospaciari 3e230b3
cluster: forward readableAll/writableAll to the primary's listen query
cirospaciari 8f30ea4
Merge branch 'main' into ciro/cluster-tests-v26
cirospaciari 30c4489
ipc: only attach the SCM_RIGHTS fd to a message's first write
cirospaciari 90d9e6c
usockets: document that the UDP recv throttle covers every adopted fd
cirospaciari 505f5ad
net: honor allowHalfOpen for fd-adopted sockets
cirospaciari 54c22e2
ipc: scope insert_message's queue-head assertion to the sender-side c…
cirospaciari 36d1a86
webview: pass the new us_socket_from_fd options argument
cirospaciari 35460f8
http: report node's cluster listening payload for unspecified-host an…
cirospaciari f6022cc
node:tls: sync the test suite to Node v26.3.0 and fix the gaps it sur…
cirospaciari b93229c
Merge branch 'main' into claude/node-tls-26-compat
cirospaciari 100afc9
node:tls: give the exported SecureContext constructor its own SSL_CTX…
cirospaciari cc40e66
node:net: defer abandoned-socket EOF teardown; keep close(hadError) N…
alii 613f6e8
node:tls: constructor authorizationError=null; build _sharedCreds onc…
alii da98a0d
tls: auto-chain regardless of user ca; map invalid_crl to ERR_CRYPTO_…
alii 88610f8
node:tls,node:net: block prototype-pollution of TLS verification; mat…
cirospaciari 8c24159
tls: apply SSL_VERIFY_NONE per socket on a !requestCert server adopt
cirospaciari d694fa7
cluster: address correctness/race findings from PR review
alii 85073ae
cluster: layering, protocol, and coverage follow-ups from PR review
alii 781ffe4
tls: setMaxSendFragment returns false out of OpenSSL's range instead …
cirospaciari 068eb3c
net: only decrement a server's connection count for sockets it counted
cirospaciari 1445535
ci: re-point the tls SSL_CTX LSan suppression at its post-#29932 symbols
cirospaciari 12282c5
Merge branch 'main' into ciro/cluster-tests-v26
alii b35afb0
cluster: route child send() through process.send so a monkey-patched …
alii 2561dc1
[autofix.ci] apply automated fixes
autofix-ci[bot] d9dd85a
ci: rebuild — the darwin-26-aarch64 agent pool recovered, previous bu…
cirospaciari 9d11d99
node:net,node:tls: honor onread's false with the true sentinel; fail …
cirospaciari ee269da
tls: use BoringSSL's handshake-time auto-chain instead of an eager st…
cirospaciari b122868
tls: pin the mirrored BoringSSL group table with a test and an upgrad…
cirospaciari 2316052
node:net: read() on a paused onread socket still redelivers the decli…
cirospaciari 3d1e593
node:tls: surface a natively-rejected key from the STARTTLS wrap on t…
cirospaciari b82443b
cluster: make queued RR handle fd live and self-evicting; dup on send
alii 3be0485
cluster: address second-pass review findings
alii 3f30e8e
[autofix.ci] apply automated fixes
autofix-ci[bot] 3d3c70f
Merge branch 'main' into claude/node-tls-26-compat
cirospaciari 5cb13c4
tls: a bare secureContext server upgrade keeps the context's verify mode
cirospaciari 7c3ede6
Merge branch 'main' into claude/node-tls-26-compat
cirospaciari 74d2a9e
node:tls: address review — shared symbols, native CA parsing, minimal…
cirospaciari 9c12148
tls: release the listener's SSL_CTX at close() and drop the LSan supp…
cirospaciari 15a4c4f
Merge commit 'refs/tmp/mainnow' into ciro/tls2630-merge
cirospaciari 893d8aa
test(node/tls): reword three upstream comment markers in vendored v26…
robobun 0dbe84c
Revert "test(node/tls): reword three upstream comment markers in vend…
robobun 19fc7ae
tls: guard setDefaultCACertificates empty-result on snapshot.length
robobun ae9a524
test(net): widen mongodb-pattern RSS bound to 16MB on release
robobun 4212da6
strip PR-added code comments per maintainer request
robobun a4dcc15
Merge remote-tracking branch 'origin/main' into claude/node-tls-26-co…
cirospaciari 2166be0
Merge branch 'main' into ciro/cluster-tests-v26
cirospaciari a3ba65e
http: port the InvalidCRL error to the per-crate error enum
cirospaciari 70f2152
ipc: cover net.Socket handle receive now that parseHandle implements it
cirospaciari 894ff3f
[autofix.ci] apply automated fixes
autofix-ci[bot] 25bcd90
ipc: drop the commented-out serialize() reference block
cirospaciari 8d10f4f
test(ipc): stop the unsent-handle test racing the child's ack
cirospaciari 341a92d
Merge branch 'main' into claude/node-tls-26-compat
cirospaciari c45cf40
Merge origin/main into ciro/cluster-tests-v26
cirospaciari b840ff8
Merge origin/main into ciro/cluster-tests-v26
cirospaciari 62f801b
cluster: drop narration comments from the cluster/IPC changes
cirospaciari 0ea0301
cluster: let a second worker listen on a shared handle on Windows
cirospaciari 475e825
src: strip PR-added comments not from Node.js source
robobun f2ef76f
Merge remote-tracking branch 'origin/main' into claude/node-tls-26-co…
robobun 72ccd5c
net: fix ServerHandlers.error TLS detection (this vs data) exposed by…
robobun 1a82a2d
test(node/tls): reword three upstream comment markers in the vendored…
robobun 96081d6
net: ServerHandlers.error TLS branch now destroys instead of no-op de…
robobun 0dfd2dd
Revert "test(node/tls): reword three upstream comment markers in the …
robobun 4c429d6
net: use ErrnoException for the onread zero-length ENOBUFS
robobun ed5be06
Revert "net: use ErrnoException for the onread zero-length ENOBUFS"
robobun 5bf4147
net: drop stale 'delegation above is a no-op' sentence from the Plain…
robobun 1eeea8e
net: SocketEmitEndNT delegates to finishSocketEnd for the EOF body
robobun b65ea59
Merge branch 'main' into claude/node-tls-26-compat
cirospaciari b2d4ae7
Merge origin/main into ciro/cluster-tests-v26
robobun 00b8c5f
Merge branch 'main' into claude/node-tls-26-compat
cirospaciari 97b68a9
cluster: fix auto-merge picking main's incompatible send() wrapping
robobun 0fc6370
test(net): widen handle-leak RSS margin to 24MB on release
robobun ed57828
net: kick 'end' after push(null) and resume cluster-accepted sockets
robobun d7139f8
Merge remote-tracking branch 'origin/main' into claude/node-tls-26-co…
robobun 37e5363
test(tls): bind ssl-ctx-cache servers to 127.0.0.1 explicitly
robobun f7881db
Merge branch 'main' into claude/node-tls-26-compat
cirospaciari f7b30f4
Merge origin/main into ciro/cluster-tests-v26
robobun e4dc6ba
test(net,tls): bind PR-added servers and clients to 127.0.0.1 explicitly
robobun d4b92a1
[autofix.ci] apply automated fixes
autofix-ci[bot] 5856176
test(net): add rationale for the handle-leak RSS margin and fix stale…
robobun 1b23722
net: map ENOTSOCK/EBADF to EINVAL for listen({fd}) like Node
robobun 0569ecc
[autofix.ci] apply automated fixes
autofix-ci[bot] 44134b9
test(net): widen connect({path}) reused-handle page-count threshold t…
robobun a298ec3
Merge branch 'main' into ciro/cluster-tests-v26
cirospaciari 28c2df1
ci: retrigger
robobun 42be7fc
Merge branch 'main' into ciro/cluster-tests-v26
cirospaciari ad826fa
Merge branch 'main' into claude/node-tls-26-compat
cirospaciari a810ee1
test(http): socket-end-drain: don't reject the close wait on an expec…
robobun b0f5a0b
Merge remote-tracking branch 'origin/main' into claude/node-tls-26-co…
robobun 37263b0
Merge origin/main into ciro/cluster-tests-v26
robobun 24d75dd
windows: carry the raw UV errno through ListenPipeError::Sys
robobun 3b440fe
test: assert named-pipe errno resolves to EADDRINUSE, not a literal -98
robobun faa769d
Merge branch 'main' into ciro/cluster-tests-v26
dylan-conway a27604f
net,tls: address Jarred's four blocking review items
robobun bbda763
Merge origin/main into ciro/cluster-tests-v26
robobun 47d53b6
socket: give accepted sockets their own KeepAlive so unref() works
robobun 6fade0d
usockets(windows): stop busy-polling on_end for half-open sockets aft…
robobun d05993a
test(net): assert half-open accepted sockets do not busy-poll the loop
robobun d295c21
test(net): await the accepted-socket open event instead of one setImm…
robobun b13343c
ci: retrigger
robobun 1b88b1b
Merge remote-tracking branch 'origin/main' into claude/node-tls-26-co…
robobun 1b71e7c
Merge branch 'main' into claude/node-tls-26-compat
cirospaciari bc921ba
test(common/gc): make onGC honor upstream's one-setImmediate contract…
robobun 305a46d
test(common/gc): replace the onGC WeakRef nextTick poll with a gc()-d…
robobun f4963c7
Merge origin/main into ciro/cluster-tests-v26
robobun 3c1dcdb
child_process: port Node v26.3.0 tests and fix the gaps they surface …
cirospaciari d93f501
Merge origin/main into ciro/cluster-tests-v26; drop 'TODO:' from fd-l…
robobun 875e98d
cluster: hoist this.workers/this.handle to locals in SharedHandle.remove
robobun 199918b
NodeTLS: two-pass parseCACertificates with RAII BoringSSL + shared th…
robobun 7d0ddbd
Stack on #32630; hoist () => handle.close() and annotate Node-matchin…
robobun e048413
cluster: drop SCHED_NONE worker-side chmod to match Node v26.3.0
robobun b76d309
crypto: replace spaces with underscores in ERR_OSSL_* reason like Nod…
robobun 535bfef
NodeTLS: copy ArrayBufferView bytes in parseCACertificates pass 1
robobun f627e76
NodeTLS: keep ArrayBufferView inputs in MarkedArgumentBuffer instead …
robobun dac8523
Merge branch 'claude/node-tls-26-compat' into ciro/cluster-tests-v26
cirospaciari 3876df3
net: emit dns.lookup error directly in listenInCluster like Node
robobun 5dfab9a
Merge branch 'ciro/cluster-tests-v26' of https://github.com/oven-sh/b…
robobun cb057f5
clippy: fold ss_len late-init into an if-expression in wildcard_sockaddr
robobun 1b72786
cluster: pass received fd through the (message, handle) slot like Nod…
robobun 959e41b
Merge origin/main into ciro/cluster-tests-v26
robobun 9aced0f
Merge origin/main into ciro/cluster-tests-v26
robobun d04e4dc
Merge origin/main into ciro/cluster-tests-v26
robobun af8da54
Merge branch 'main' into ciro/cluster-tests-v26
cirospaciari deec145
windows: listen in the primary's bsd_create_bound_socket before WSADu…
robobun 656da3b
Merge branch 'ciro/cluster-tests-v26' of https://github.com/oven-sh/b…
robobun f22314a
Merge origin/main into ciro/cluster-tests-v26
robobun de24c75
Merge origin/main into ciro/cluster-tests-v26
robobun 39abea9
trim flagged multi-line comments to single-line refs or drop narration
robobun 28ed3eb
BunProcess.cpp: collapse the getDirect note to one line
robobun cd9a5a4
Merge remote-tracking branch 'origin/main' into ciro/cluster-tests-v26
robobun 74a0938
ipc_host: drop dead has_ipc helper
robobun b7a6441
cluster/ipc: parse received dgram.Socket handles instead of closing t…
robobun 7c8fbbc
trim multi-line comments in dgram IPC path to single-line refs
robobun 6f967fb
spawn.ipc.bun-node: dgram.Socket handles are accepted now, test the a…
robobun 1ac1d7b
Merge remote-tracking branch 'origin/main' into ciro/cluster-tests-v26
robobun 2605a67
Merge branch 'main' into ciro/cluster-tests-v26
cirospaciari 1a5fb31
Merge remote-tracking branch 'origin/main' into ciro/cluster-tests-v26
robobun 5cce0ff
Trim comments to node-source/spec references
robobun a1d664b
Merge branch 'main' into ciro/cluster-tests-v26
cirospaciari e0344f4
cluster: survive peer resets on queued round-robin connections; stop …
cirospaciari 67c47c3
dgram: release the shared cluster fd when adopting it fails
robobun b659b1c
cluster: release shared handles on close(), report shared unix paths,…
cirospaciari 21eab98
net: point the shared-handle release comment at the node source
robobun 095c60b
cluster/ipc: drop a departing worker's in-flight connection, tolerate…
cirospaciari 8af059c
collapse two flagged comments to one line
robobun 975c26f
cluster.test: pin the new in-flight semantics for a dying worker
robobun f5468a7
cluster/ipc: follow node for in-flight connections, sent sockets and …
cirospaciari f45e227
collapse four flagged comments to one line
robobun efca99d
Ipc.ts: read handle.server once (no-duplicate-conditional-property-ac…
robobun 147eec5
spawn: give a closed inherited stdio slot /dev/null instead of whatev…
cirospaciari e50529e
ipc/cluster: postpone only user disconnects and report them at once; …
cirospaciari 4f68e28
collapse six flagged comments to one line
robobun 59ef8c0
Merge branch 'main' into ciro/cluster-tests-v26
alii a97ca4d
cluster: mark internal sends and shared dgram fds with private names;…
robobun 478a1a6
cluster/primary: load the handle classes and node:path on first query…
robobun File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -574,4 +574,4 @@ int us_socket_get_error(struct us_socket_t *s) { | |
| return error; | ||
| } | ||
|
|
||
| #endif | ||
| #endif | ||
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
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
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
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
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
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.