From e3d63896bf8103b88dc8b49eef05f7e3f38d1a70 Mon Sep 17 00:00:00 2001 From: fengmk2 Date: Mon, 26 May 2025 02:33:58 +0000 Subject: [PATCH] chore(server): add job backoff strategies (#12499) ## Summary by CodeRabbit - **New Features** - Implemented an exponential backoff retry strategy for job queues, resulting in progressively longer wait times between retry attempts. --- .docker/selfhost/schema.json | 6 +++++- packages/backend/server/src/base/job/queue/config.ts | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.docker/selfhost/schema.json b/.docker/selfhost/schema.json index 396df08cfe..a5f1b19628 100644 --- a/.docker/selfhost/schema.json +++ b/.docker/selfhost/schema.json @@ -31,9 +31,13 @@ "properties": { "queue": { "type": "object", - "description": "The config for job queues\n@default {\"attempts\":5,\"removeOnComplete\":true,\"removeOnFail\":{\"age\":86400,\"count\":500}}\n@link https://api.docs.bullmq.io/interfaces/v5.QueueOptions.html", + "description": "The config for job queues\n@default {\"attempts\":5,\"backoff\":{\"type\":\"exponential\",\"delay\":1000},\"removeOnComplete\":true,\"removeOnFail\":{\"age\":86400,\"count\":500}}\n@link https://api.docs.bullmq.io/interfaces/v5.QueueOptions.html", "default": { "attempts": 5, + "backoff": { + "type": "exponential", + "delay": 1000 + }, "removeOnComplete": true, "removeOnFail": { "age": 86400, diff --git a/packages/backend/server/src/base/job/queue/config.ts b/packages/backend/server/src/base/job/queue/config.ts index 5d294ff011..c5bf83309b 100644 --- a/packages/backend/server/src/base/job/queue/config.ts +++ b/packages/backend/server/src/base/job/queue/config.ts @@ -29,6 +29,8 @@ defineModuleConfig('job', { desc: 'The config for job queues', default: { attempts: 5, + // retry after 2 ^ (attempts - 1) * delay milliseconds + backoff: { type: 'exponential', delay: 1000 }, // should remove job after it's completed, because we will add a new job with the same job id removeOnComplete: true, removeOnFail: {