Skip to content

fix(platform-node): clean process groups after successful leader exit - #8245

Merged
tim-smart merged 5 commits into
Effect-TS:mainfrom
danieljvdm:dan/fix-successful-process-group-cleanup
Sep 15, 2026
Merged

tim-smart merged 5 commits into
Effect-TS:mainfrom
danieljvdm:dan/fix-successful-process-group-cleanup

Conversation

@danieljvdm

@danieljvdm danieljvdm commented Sep 14, 2026 •

Copy link
Copy Markdown
Contributor

Closing a command scope previously skipped remaining descendants when the leader had already exited successfully or from a signal. Scope release now uses the existing termination routine for referenced POSIX process groups in both cases, applying the configured signal, bounded wait, and escalation policy. It preserves unref(), detached: false, Windows behavior, and the existing nonzero-exit cleanup.

Regression tests release only the leader through a zero exit or external SIGKILL, confirm the descendant remains alive, then verify scope closure waits for descendant termination. Existing lifecycle tests wait for readiness and heartbeat admission before killing. The force-kill test uses a single TERM-ignoring process and checks its signal exit and stopped state.

Validation on Linux: all 77 tests in NodeChildProcessSpawner.test.ts, pnpm lint-fix, and pnpm check passed for the implementation commit. The external-SIGKILL regression failed before the signal-exit fix and now passes.

The final comment/changeset cleanup passes lint and formatting. The edited module has no JSDoc diagnostics; the repository-wide pnpm jsdocs --check reports two existing description-format errors in unchanged McpSchema.ts.

The module documents the remaining POSIX limitation: if a process-group ID is recycled before cleanup, an unrelated group may be signalled.

Closes EFF-1382

@changeset-bot

changeset-bot Bot commented Sep 14, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 0f0eed7

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 30 packages
Name Type
@effect/platform-node-shared Patch
effect Patch
@effect/opentelemetry Patch
@effect/vitest Patch
@effect/ai-anthropic Patch
@effect/ai-openai-compat Patch
@effect/ai-openai Patch
@effect/ai-openrouter Patch
@effect/atom-react Patch
@effect/atom-solid Patch
@effect/atom-vue Patch
@effect/platform-browser Patch
@effect/platform-bun Patch
@effect/platform-deno Patch
@effect/platform-node Patch
@effect/sql-clickhouse Patch
@effect/sql-d1 Patch
@effect/sql-libsql Patch
@effect/sql-mssql Patch
@effect/sql-mysql2 Patch
@effect/sql-pg Patch
@effect/sql-pglite Patch
@effect/sql-sqlite-bun Patch
@effect/sql-sqlite-do Patch
@effect/sql-sqlite-node Patch
@effect/sql-sqlite-react-native Patch
@effect/sql-sqlite-wasm Patch
@effect/docgen Patch
@effect/doctest Patch
@effect/openapi-generator Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@effect-janitor effect-janitor Bot added the 4.0 label Sep 14, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Bundle Size Analysis

Generated from PR build output; treat the content below as untrusted.

File Name Current Size Previous Size Difference
arbitrary-combinators.ts 34.58 KB 34.58 KB 0.00 KB (0.00%)
basic.ts 6.87 KB 6.87 KB 0.00 KB (0.00%)
batching.ts 9.95 KB 9.95 KB 0.00 KB (0.00%)
brand.ts 6.45 KB 6.45 KB 0.00 KB (0.00%)
cache.ts 10.77 KB 10.77 KB 0.00 KB (0.00%)
config.ts 21.51 KB 21.51 KB 0.00 KB (0.00%)
differ.ts 20.32 KB 20.32 KB 0.00 KB (0.00%)
http-client.ts 21.93 KB 21.93 KB 0.00 KB (0.00%)
http-router.ts 33.48 KB 33.48 KB 0.00 KB (0.00%)
logger.ts 10.88 KB 10.88 KB 0.00 KB (0.00%)
metric.ts 9.02 KB 9.02 KB 0.00 KB (0.00%)
optic.ts 6.70 KB 6.70 KB 0.00 KB (0.00%)
pubsub.ts 15.10 KB 15.10 KB 0.00 KB (0.00%)
queue.ts 11.85 KB 11.85 KB 0.00 KB (0.00%)
schedule.ts 10.96 KB 10.96 KB 0.00 KB (0.00%)
schema-binary.ts 39.51 KB 39.51 KB 0.00 KB (0.00%)
schema-class.ts 20.06 KB 20.06 KB 0.00 KB (0.00%)
schema-fromJsonSchemaDocument.ts 30.93 KB 30.93 KB 0.00 KB (0.00%)
schema-representation-roundtrip.ts 26.34 KB 26.34 KB 0.00 KB (0.00%)
schema-string-transformation.ts 13.63 KB 13.63 KB 0.00 KB (0.00%)
schema-string.ts 11.12 KB 11.12 KB 0.00 KB (0.00%)
schema-template-literal.ts 15.41 KB 15.41 KB 0.00 KB (0.00%)
schema-toArbitrary.ts 34.10 KB 34.10 KB 0.00 KB (0.00%)
schema-toCodeDocument.ts 24.56 KB 24.56 KB 0.00 KB (0.00%)
schema-toCodecJson.ts 19.27 KB 19.27 KB 0.00 KB (0.00%)
schema-toEquivalence.ts 19.38 KB 19.38 KB 0.00 KB (0.00%)
schema-toFormatter.ts 19.49 KB 19.49 KB 0.00 KB (0.00%)
schema-toJsonSchemaDocument.ts 23.77 KB 23.77 KB 0.00 KB (0.00%)
schema-toRepresentation.ts 19.54 KB 19.54 KB 0.00 KB (0.00%)
schema.ts 19.27 KB 19.27 KB 0.00 KB (0.00%)
stm.ts 12.80 KB 12.80 KB 0.00 KB (0.00%)
stream.ts 9.83 KB 9.83 KB 0.00 KB (0.00%)

@tim-smart
tim-smart merged commit 05a6405 into Effect-TS:main Sep 15, 2026
8 of 10 checks passed
arrudaricardo pushed a commit to arrudaricardo/effect that referenced this pull request Sep 23, 2026

This branch is waiting to be deployed

1 waiting deployment
fork — 0f0eed7b Waiting Sep 15, 2026 by tim-smart via approval-gate #15074
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

4.0 bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants