diff options
Diffstat (limited to 'src/queue')
| -rw-r--r-- | src/queue/index.ts | 6 | ||||
| -rw-r--r-- | src/queue/initialize.ts | 21 |
2 files changed, 20 insertions, 7 deletions
diff --git a/src/queue/index.ts b/src/queue/index.ts index 2facd9c8e1..ff96c0fb15 100644 --- a/src/queue/index.ts +++ b/src/queue/index.ts @@ -73,8 +73,7 @@ export function deliver(user: ThinUser, content: unknown, to: string | null) { attempts: config.deliverJobMaxAttempts || 12, timeout: 1 * 60 * 1000, // 1min backoff: { - type: 'exponential', - delay: 60 * 1000 + type: 'apBackoff' }, removeOnComplete: true, removeOnFail: true @@ -91,8 +90,7 @@ export function inbox(activity: IActivity, signature: httpSignature.IParsedSigna attempts: config.inboxJobMaxAttempts || 8, timeout: 5 * 60 * 1000, // 5min backoff: { - type: 'exponential', - delay: 60 * 1000 + type: 'apBackoff' }, removeOnComplete: true, removeOnFail: true diff --git a/src/queue/initialize.ts b/src/queue/initialize.ts index 5fe5a9f6f3..31102a3ed2 100644 --- a/src/queue/initialize.ts +++ b/src/queue/initialize.ts @@ -11,8 +11,23 @@ export function initialize<T>(name: string, limitPerSec = -1) { }, prefix: config.redis.prefix ? `${config.redis.prefix}:queue` : 'queue', limiter: limitPerSec > 0 ? { - max: limitPerSec * 5, - duration: 5000 - } : undefined + max: limitPerSec, + duration: 1000 + } : undefined, + settings: { + backoffStrategies: { + apBackoff + } + } }); } + +// ref. https://github.com/misskey-dev/misskey/pull/7635#issue-971097019 +function apBackoff(attemptsMade: number, err: Error) { + const baseDelay = 60 * 1000; // 1min + const maxBackoff = 8 * 60 * 60 * 1000; // 8hours + let backoff = (Math.pow(2, attemptsMade) - 1) * baseDelay; + backoff = Math.min(backoff, maxBackoff); + backoff += Math.round(backoff * Math.random() * 0.2); + return backoff; +} |