Skip to content

Commit 81d62b5

Browse files
Assert active reconnect delete failures retry via inactive cleanup path
Co-authored-by: Eric Allam <eric@trigger.dev>
1 parent fa195ff commit 81d62b5

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

packages/ai/src/chatTransport.test.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2787,6 +2787,7 @@ describe("TriggerChatTransport", function () {
27872787
it("preserves reconnect failures when cleanup run-store delete throws", async function () {
27882788
const errors: TriggerChatTransportError[] = [];
27892789
const runStore = new FailingCleanupDeleteRunStore(1);
2790+
let fetchCalls = 0;
27902791
runStore.set({
27912792
chatId: "chat-reconnect-cleanup-delete-failure",
27922793
runId: "run_reconnect_cleanup_delete_failure",
@@ -2807,6 +2808,7 @@ describe("TriggerChatTransport", function () {
28072808
});
28082809

28092810
(transport as any).fetchRunStream = async function fetchRunStream() {
2811+
fetchCalls += 1;
28102812
throw new Error("reconnect root cause");
28112813
};
28122814

@@ -2822,6 +2824,20 @@ describe("TriggerChatTransport", function () {
28222824
runId: "run_reconnect_cleanup_delete_failure",
28232825
});
28242826
expect(errors[0]?.error.message).toBe("reconnect root cause");
2827+
expect(fetchCalls).toBe(1);
2828+
expect(runStore.get("chat-reconnect-cleanup-delete-failure")).toMatchObject({
2829+
isActive: false,
2830+
lastEventId: "100-0",
2831+
});
2832+
2833+
const secondReconnect = await transport.reconnectToStream({
2834+
chatId: "chat-reconnect-cleanup-delete-failure",
2835+
});
2836+
2837+
expect(secondReconnect).toBeNull();
2838+
expect(fetchCalls).toBe(1);
2839+
expect(errors).toHaveLength(1);
2840+
expect(runStore.get("chat-reconnect-cleanup-delete-failure")).toBeUndefined();
28252841
});
28262842

28272843
it("attempts both reconnect cleanup steps when set and delete both throw", async function () {

0 commit comments

Comments
 (0)