From f73a56c223202a4ccfb56fc0b33d8b5043c4eff2 Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Fri, 8 May 2026 23:40:06 -0400 Subject: [PATCH] fix(server): log instance disposal failures from HTTP API lifecycle (#26446) --- .../src/server/routes/instance/httpapi/lifecycle.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/server/routes/instance/httpapi/lifecycle.ts b/packages/opencode/src/server/routes/instance/httpapi/lifecycle.ts index 53d54e2a81..4edfa80787 100644 --- a/packages/opencode/src/server/routes/instance/httpapi/lifecycle.ts +++ b/packages/opencode/src/server/routes/instance/httpapi/lifecycle.ts @@ -1,9 +1,12 @@ import { EffectBridge } from "@/effect/bridge" import type { InstanceContext } from "@/project/instance" import { InstanceStore } from "@/project/instance-store" +import * as Log from "@opencode-ai/core/util/log" import { Effect } from "effect" import { HttpEffect, HttpMiddleware, HttpServerRequest } from "effect/unstable/http" +const log = Log.create({ service: "server" }) + type MarkedInstance = { ctx: InstanceContext store: InstanceStore.Interface @@ -47,6 +50,8 @@ export const disposeMiddleware: HttpMiddleware.HttpMiddleware = (effect) => const marked = disposeAfterResponse.get(request.source) if (!marked) return response disposeAfterResponse.delete(request.source) - yield* Effect.uninterruptible(marked.bridge.run(marked.store.dispose(marked.ctx))) + yield* Effect.uninterruptible(marked.bridge.run(marked.store.dispose(marked.ctx))).pipe( + Effect.catchCause((cause) => Effect.sync(() => log.warn("instance disposal failed", { cause }))), + ) return response })