1
0
Эх сурвалжийг харах

fix: skip reload disposal for fresh instances

Previously reload always called disposeInstance + emitted server.instance.disposed
even when no previous entry existed in the cache, sending a phantom dispose
event for an instance that was never loaded.
Kit Langton 3 сар өмнө
parent
commit
74373f85c7

+ 5 - 3
packages/opencode/src/project/instance-store.ts

@@ -123,9 +123,11 @@ export const layer: Layer.Layer<Service, never, Project.Service> = Layer.effect(
           cache.set(directory, entry)
           yield* Effect.gen(function* () {
             yield* Effect.logInfo("reloading instance", { directory })
-            if (previous) yield* Deferred.await(previous.deferred).pipe(Effect.exit, Effect.asVoid)
-            yield* Effect.promise(() => disposeInstance(directory))
-            yield* emitDisposed({ directory, project: input.project?.id })
+            if (previous) {
+              yield* Deferred.await(previous.deferred).pipe(Effect.exit, Effect.asVoid)
+              yield* Effect.promise(() => disposeInstance(directory))
+              yield* emitDisposed({ directory, project: input.project?.id })
+            }
             yield* completeLoad(directory, input, entry)
           }).pipe(Effect.forkIn(scope, { startImmediately: true }))
           return yield* restore(Deferred.await(entry.deferred))