Repository navigation
Conversation
|
The following comment was made by an LLM, it may be inaccurate: |
There was a problem hiding this comment.
The new regression tests look sound to me. I ran test/location-layer.test.ts: both new cases pass, and the rest of the file is green (24 pass, 2 skip). To check the guard really catches the bug, I temporarily changed Effect's RcMap so it doesn't close a detached entry, idle or borrowed. Both cases then failed on expect(finalized).toContain(1), so the instrumented LocationWatcher finalizer is tied to the location entry scope as intended. The borrowed case passes on current dev because Effect 4.0.1 checks entry identity on release; that is the leak #52635 worked around for rc.112, so the description's claim holds. bun run typecheck in packages/core passes.
The public API is unchanged (test-only).
No blocking concerns.
|
Thanks for updating your PR! It now meets our contributing guidelines. 👍 |
Issue for this PR
Related to #51003 (does not close it — this PR is a regression guard, not the fix).
Type of change
(Test-only change: pins an existing invariant. None of the boxes fit exactly; closest is code improvement of the test suite.)
What does this PR do?
#51003 reports that each
opencode reloadleaks the previous location boot's MCP subprocesses. Before touching the reload path I wrote a probe to check whetherLocationServiceMap.reload()itself orphans the prior entry scope. It does not:Mcp.nodeis a location node owned by the entry scope, and that scope closes eagerly for an idle entry and on last-borrower release for a borrowed one.This PR keeps that probe as a regression test (
reaps the reloaded idle/borrowed graph's scopeintest/location-layer.test.ts), so a future change to reload/invalidation cannot silently break the reaping contract. Details and next repro steps for the actual leak are in my comment on #51003.How did you verify your code works?
bun test test/location-layer.test.ts: 26 pass, 0 fail.bun typecheck(tsgo) clean. I also verified the underlying ownership chain in source:Mcp.node→makeLocationNode→Instance.layer, stdio servers forked from the entry scope root and killed on scope close.Screenshots / recordings
N/A — test-only.
Checklist