Skip to content

Commit 3732bd6

Browse files
Cover retry behavior for inactive reconnect cleanup failures
Co-authored-by: Eric Allam <eric@trigger.dev>
1 parent 0a5d8cf commit 3732bd6

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

packages/ai/src/chatTransport.test.ts

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -582,6 +582,52 @@ describe("TriggerChatTransport", function () {
582582
expect(errors[0]?.error.message).toBe("cleanup delete failed");
583583
});
584584

585+
it("retries inactive reconnect cleanup on subsequent reconnect attempts", async function () {
586+
const errors: TriggerChatTransportError[] = [];
587+
const runStore = new FailingCleanupDeleteRunStore(1);
588+
runStore.set({
589+
chatId: "chat-inactive-delete-retry",
590+
runId: "run_inactive_delete_retry",
591+
publicAccessToken: "pk_inactive_delete_retry",
592+
streamKey: "chat-stream",
593+
lastEventId: "10-0",
594+
isActive: false,
595+
});
596+
597+
const transport = new TriggerChatTransport({
598+
task: "chat-task",
599+
stream: "chat-stream",
600+
accessToken: "pk_trigger",
601+
runStore,
602+
onError: function onError(error) {
603+
errors.push(error);
604+
},
605+
});
606+
607+
const firstReconnect = await transport.reconnectToStream({
608+
chatId: "chat-inactive-delete-retry",
609+
});
610+
611+
expect(firstReconnect).toBeNull();
612+
expect(errors).toHaveLength(1);
613+
expect(errors[0]).toMatchObject({
614+
phase: "reconnect",
615+
chatId: "chat-inactive-delete-retry",
616+
runId: "run_inactive_delete_retry",
617+
});
618+
expect(runStore.get("chat-inactive-delete-retry")).toMatchObject({
619+
isActive: false,
620+
});
621+
622+
const secondReconnect = await transport.reconnectToStream({
623+
chatId: "chat-inactive-delete-retry",
624+
});
625+
626+
expect(secondReconnect).toBeNull();
627+
expect(errors).toHaveLength(1);
628+
expect(runStore.get("chat-inactive-delete-retry")).toBeUndefined();
629+
});
630+
585631
it("returns null when inactive reconnect cleanup delete and onError both fail", async function () {
586632
const runStore = new FailingCleanupDeleteRunStore(1);
587633
runStore.set({

0 commit comments

Comments
 (0)