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.
This commit is contained in:
Kit Langton
2026-05-01 22:10:09 -04:00
parent 1b146ad094
commit 74373f85c7

View File

@@ -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))