Skip to content

Commit 5ff3794

Browse files
authored
fix(queue): preserve retries for throttled background jobs (#1893)
1 parent f594e7a commit 5ff3794

2 files changed

Lines changed: 22 additions & 3 deletions

File tree

src/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ export default {
5252
resetAt,
5353
}),
5454
);
55-
message.retry({ delaySeconds: delayUntil(resetAt) });
55+
await env.JOBS.send(message.body, { delaySeconds: delayUntil(resetAt) });
56+
message.ack();
5657
continue;
5758
}
5859
}

test/unit/index.test.ts

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,12 @@ describe("worker entrypoint", () => {
169169
await recordGitHubRateLimitObservation(env, { repoFullName: "owner/repo", resource: "rest", path: "/x", statusCode: 200, limitValue: 5000, remaining: 120, resetAt: "2026-06-24T12:10:00.000Z", observedAt: "2026-06-24T12:00:00.000Z" });
170170
const acked: string[] = [];
171171
const retries: Array<{ delaySeconds?: number } | undefined> = [];
172+
const requeued: Array<{ message: import("../../src/types").JobMessage; delaySeconds?: number }> = [];
173+
env.JOBS = {
174+
async send(message: import("../../src/types").JobMessage, options?: { delaySeconds?: number }) {
175+
requeued.push({ message, ...(options?.delaySeconds === undefined ? {} : { delaySeconds: options.delaySeconds }) });
176+
},
177+
} as unknown as Queue;
172178
const batch = {
173179
messages: [
174180
{
@@ -182,8 +188,20 @@ describe("worker entrypoint", () => {
182188

183189
await worker.queue(batch, env);
184190

185-
expect(acked).toEqual([]);
186-
expect(retries).toEqual([{ delaySeconds: 615 }]);
191+
expect(acked).toEqual(["background-regate"]);
192+
expect(retries).toEqual([]);
193+
expect(requeued).toEqual([
194+
{
195+
message: {
196+
type: "agent-regate-pr",
197+
deliveryId: "sweep:owner/repo#7",
198+
repoFullName: "owner/repo",
199+
prNumber: 7,
200+
installationId: 123,
201+
},
202+
delaySeconds: 615,
203+
},
204+
]);
187205
vi.useRealTimers();
188206
});
189207

0 commit comments

Comments
 (0)