From 7931227977ca3e6f3354a63467caa634ab79796f Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Mon, 14 Sep 2026 16:01:36 -0700 Subject: [PATCH] fix(server): stop refreshing providers on every config subscription (#11811) Co-authored-by: Bil0000 Co-authored-by: Claude Fable 5 --- apps/server/src/server.test.ts | 52 ++++++++++------------------------ apps/server/src/ws.ts | 4 --- 2 files changed, 15 insertions(+), 41 deletions(-) diff --git a/apps/server/src/server.test.ts b/apps/server/src/server.test.ts index 7402e908fcf881de5c676373a091d9d777a1cb18..0411a08269655321d12aee8d2ac5052d8977bd19 100644 --- a/apps/server/src/server.test.ts +++ b/apps/server/src/server.test.ts @@ -6327,48 +6327,26 @@ it.layer(NodeServices.layer)("server router seam", (it) => { }).pipe(Effect.provide(NodeHttpServer.layerTest)), ); - it.effect("refreshes providers for each subscribeServerConfig connection", () => + it.effect("serves config on reconnect without starting provider probes", () => Effect.gen(function* () { - const refreshCalls = yield* Ref.make(0); - const firstRefreshDone = yield* Deferred.make(); - const secondRefreshDone = yield* Deferred.make(); - + const refresh = vi.fn(() => Effect.never); yield* buildAppUnderTest({ - layers: { - providerRegistry: { - refresh: () => - Ref.updateAndGet(refreshCalls, (count) => count + 1).pipe( - Effect.tap((count) => - Deferred.succeed( - count === 1 ? firstRefreshDone : secondRefreshDone, - undefined, - ).pipe(Effect.ignore), - ), - Effect.as([]), - ), - }, - }, + layers: { providerRegistry: { refresh } }, }); const wsUrl = yield* getWsServerUrl("/ws"); - yield* Effect.scoped( - withWsRpcClient(wsUrl, (client) => - Effect.gen(function* () { - yield* client[WS_METHODS.subscribeServerConfig]({}).pipe(Stream.runHead); - yield* Deferred.await(firstRefreshDone); - }), - ), - ); - yield* Effect.scoped( - withWsRpcClient(wsUrl, (client) => - Effect.gen(function* () { - yield* client[WS_METHODS.subscribeServerConfig]({}).pipe(Stream.runHead); - yield* Deferred.await(secondRefreshDone); - }), - ), - ); - - assert.equal(yield* Ref.get(refreshCalls), 2); + for (let connection = 0; connection < 2; connection += 1) { + const event = yield* Effect.scoped( + withWsRpcClient(wsUrl, (client) => + client[WS_METHODS.subscribeServerConfig]({}).pipe( + Stream.runHead, + Effect.map(Option.getOrThrow), + ), + ), + ); + assert.equal(event.type, "snapshot"); + } + assert.equal(refresh.mock.calls.length, 0); }).pipe(Effect.provide(NodeHttpServer.layerTest)), ); diff --git a/apps/server/src/ws.ts b/apps/server/src/ws.ts index 6e5d9c02db394083bf11cda61e159e2738691c9a..cec94e3588717eb766f2039c4694b7a06f817fe3 100644 --- a/apps/server/src/ws.ts +++ b/apps/server/src/ws.ts @@ -3371,10 +3371,6 @@ const makeWsRpcLayer = ( })), ); - yield* providerRegistry - .refresh() - .pipe(Effect.ignoreCause({ log: true }), Effect.forkScoped); - const liveUpdates = Stream.merge( keybindingsUpdates, Stream.merge( -- 2.54.0