fix(opencode): avoid shell cancel race (#30641)

This commit is contained in:
Aiden Cline
2026-06-03 22:44:25 -05:00
committed by GitHub
parent 9251e5d8c4
commit 2a33addd29
2 changed files with 4 additions and 5 deletions
+1 -1
View File
@@ -78,7 +78,7 @@ export const layer = Layer.effect(
yield* cancelBackgroundJobs(background, sessionID)
const data = yield* InstanceState.get(state)
const existing = data.runners.get(sessionID)
if (!existing || !existing.busy) {
if (!existing) {
yield* status.set(sessionID, { type: "idle" })
return
}
@@ -320,10 +320,9 @@ const useServerConfig = Effect.fn("test.useServerConfig")(function* (config: (ur
return { dir, llm }
})
// Wait for a session's runner to enter a busy state. SessionStatus is flipped to
// "busy" inside Runner.startShell's modifyEffect at the same moment the runner
// is registered, so this is a deterministic readiness signal — cancel can't
// no-op once we observe it.
// Wait for a session's runner to enter a busy state. SessionStatus is flipped
// inside Runner.startShell's serialized transition, so cancel can't no-op once
// we observe it.
const waitForBusy = (sessionID: SessionID, duration: Duration.Input = "2 seconds") =>
pollWithTimeout(
Effect.gen(function* () {