From e742a360ec0691766dc58d74df003b9c4419b69b Mon Sep 17 00:00:00 2001 From: hailin Date: Sat, 27 Dec 2025 09:42:56 -0800 Subject: [PATCH] =?UTF-8?q?fix(identity-service):=20=E9=99=90=E5=88=B6?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E6=AF=8F=E6=AC=A1=E6=9C=80?= =?UTF-8?q?=E5=A4=9A=E8=A7=A6=E5=8F=9110=E4=B8=AA=E9=87=8D=E8=AF=95?= =?UTF-8?q?=EF=BC=8C=E9=98=B2=E6=AD=A2MPC=E8=BF=87=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../src/application/tasks/wallet-retry.task.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/backend/services/identity-service/src/application/tasks/wallet-retry.task.ts b/backend/services/identity-service/src/application/tasks/wallet-retry.task.ts index 53f42819..efb9d278 100644 --- a/backend/services/identity-service/src/application/tasks/wallet-retry.task.ts +++ b/backend/services/identity-service/src/application/tasks/wallet-retry.task.ts @@ -43,6 +43,9 @@ const MAX_BACKOFF_MINUTES = 60; // 最大退避时间:60分钟 // 每次扫描的最大用户数 const MAX_USERS_PER_SCAN = 100; +// 每次任务最多触发的重试数量(防止 MPC 服务过载) +const MAX_RETRIES_PER_RUN = 10; + export interface KeygenStatusData { status: 'pending' | 'generating' | 'deriving' | 'completed' | 'failed'; userId: string; @@ -112,6 +115,14 @@ export class WalletRetryTask { let skippedCount = 0; for (const userId of incompleteUserIds) { + // 限制每次任务最多触发的重试数量,防止 MPC 服务过载 + if (retriedCount >= MAX_RETRIES_PER_RUN) { + this.logger.log( + `[TASK] Reached max retries per run (${MAX_RETRIES_PER_RUN}), stopping`, + ); + break; + } + try { const retried = await this.checkAndRetryUser(userId.value.toString()); if (retried) {