mirror of
https://github.com/anomalyco/opencode.git
synced 2026-06-01 19:05:38 +00:00
fix(server): log instance disposal failures from HTTP API lifecycle (#26446)
This commit is contained in:
@@ -1,9 +1,12 @@
|
|||||||
import { EffectBridge } from "@/effect/bridge"
|
import { EffectBridge } from "@/effect/bridge"
|
||||||
import type { InstanceContext } from "@/project/instance"
|
import type { InstanceContext } from "@/project/instance"
|
||||||
import { InstanceStore } from "@/project/instance-store"
|
import { InstanceStore } from "@/project/instance-store"
|
||||||
|
import * as Log from "@opencode-ai/core/util/log"
|
||||||
import { Effect } from "effect"
|
import { Effect } from "effect"
|
||||||
import { HttpEffect, HttpMiddleware, HttpServerRequest } from "effect/unstable/http"
|
import { HttpEffect, HttpMiddleware, HttpServerRequest } from "effect/unstable/http"
|
||||||
|
|
||||||
|
const log = Log.create({ service: "server" })
|
||||||
|
|
||||||
type MarkedInstance = {
|
type MarkedInstance = {
|
||||||
ctx: InstanceContext
|
ctx: InstanceContext
|
||||||
store: InstanceStore.Interface
|
store: InstanceStore.Interface
|
||||||
@@ -47,6 +50,8 @@ export const disposeMiddleware: HttpMiddleware.HttpMiddleware = (effect) =>
|
|||||||
const marked = disposeAfterResponse.get(request.source)
|
const marked = disposeAfterResponse.get(request.source)
|
||||||
if (!marked) return response
|
if (!marked) return response
|
||||||
disposeAfterResponse.delete(request.source)
|
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
|
return response
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user