fix(opencode): avoid shell cancel race (#30641)
This commit is contained in:
parent
9251e5d8c4
commit
2a33addd29
2 changed files with 4 additions and 5 deletions
|
|
@ -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* () {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue