Skip to content

Commit adc62dd

Browse files
committed
fix(app): ignore finalized ssh startup failures
1 parent 6641d31 commit adc62dd

2 files changed

Lines changed: 11 additions & 5 deletions

File tree

packages/app/src/web/actions-project-terminal.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -174,15 +174,16 @@ const showPendingTerminalError = (
174174
context: BrowserActionContext,
175175
runtime: ConnectProjectRuntime,
176176
error: string
177-
): void => {
177+
): boolean => {
178178
const wasFinalized = runtime.pendingSessionFinalized
179179
if (wasFinalized) {
180-
return
180+
return false
181181
}
182182
runtime.pendingSessionFinalized = true
183183
runtime.lifecycle.onFailure?.(error)
184184
appendOutputLine(context, `[error] ${error}`)
185185
context.addTerminalSession(renderPendingTerminalSession(context, runtime, error, "error"))
186+
return true
186187
}
187188

188189
const attachCreatedSession = (
@@ -225,8 +226,9 @@ const handleProjectEvent = (
225226
): void => {
226227
const failure = readTerminalStartupFailure(event, requestId)
227228
if (failure !== null) {
228-
showPendingTerminalError(context, runtime, failure)
229-
context.setMessage(failure)
229+
if (showPendingTerminalError(context, runtime, failure)) {
230+
context.setMessage(failure)
231+
}
230232
closeStream(runtime)
231233
return
232234
}

packages/app/tests/docker-git/actions-project-terminal-lifecycle.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,13 +228,17 @@ describe("project terminal connect lifecycle", () => {
228228
const pendingSessionId = "00000000-0000-4000-8000-000000000006"
229229
loadProjectTerminalSessionMock.mockImplementation(() => Effect.succeed({ ...session, id: pendingSessionId }))
230230
const addTerminalSession = vi.fn<(session: ActiveTerminalSession) => void>()
231-
const { context, lifecycle } = prepareAcceptedConnect(pendingSessionId, { addTerminalSession })
231+
const { context, lifecycle, setMessage } = prepareAcceptedConnect(pendingSessionId, { addTerminalSession })
232232

233233
yield* _(connectAndAttachSession(context, lifecycle, pendingSessionId))
234234
emitStartupFailure(pendingSessionId, "Late backend failure.")
235235

236236
expect(lifecycle.onFailure).not.toHaveBeenCalled()
237237
expect(addTerminalSession).toHaveBeenCalledTimes(2)
238+
expect(setMessage).not.toHaveBeenCalledWith("Late backend failure.")
239+
expect(setMessage).toHaveBeenLastCalledWith(
240+
"Project is ready. SSH terminal is connecting for octocat/hello-world."
241+
)
238242
}))
239243

240244
it.effect("reports failure when startup fails", () =>

0 commit comments

Comments
 (0)