From d904f37f1c7a0dc4cbb185318aa6b34a6bce2ba0 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 13 Mar 2026 19:17:13 +0000 Subject: [PATCH] refactor: share embedding retry waits --- src/memory/manager-embedding-ops.ts | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/memory/manager-embedding-ops.ts b/src/memory/manager-embedding-ops.ts index 49171d809cb..fe9b27acd32 100644 --- a/src/memory/manager-embedding-ops.ts +++ b/src/memory/manager-embedding-ops.ts @@ -548,12 +548,7 @@ export abstract class MemoryManagerEmbeddingOps extends MemoryManagerSyncOps { if (!this.isRetryableEmbeddingError(message) || attempt >= EMBEDDING_RETRY_MAX_ATTEMPTS) { throw err; } - const waitMs = Math.min( - EMBEDDING_RETRY_MAX_DELAY_MS, - Math.round(delayMs * (1 + Math.random() * 0.2)), - ); - log.warn(`memory embeddings rate limited; retrying in ${waitMs}ms`); - await new Promise((resolve) => setTimeout(resolve, waitMs)); + await this.waitForEmbeddingRetry(delayMs, "retrying"); delayMs *= 2; attempt += 1; } @@ -587,18 +582,22 @@ export abstract class MemoryManagerEmbeddingOps extends MemoryManagerSyncOps { if (!this.isRetryableEmbeddingError(message) || attempt >= EMBEDDING_RETRY_MAX_ATTEMPTS) { throw err; } - const waitMs = Math.min( - EMBEDDING_RETRY_MAX_DELAY_MS, - Math.round(delayMs * (1 + Math.random() * 0.2)), - ); - log.warn(`memory embeddings rate limited; retrying structured batch in ${waitMs}ms`); - await new Promise((resolve) => setTimeout(resolve, waitMs)); + await this.waitForEmbeddingRetry(delayMs, "retrying structured batch"); delayMs *= 2; attempt += 1; } } } + private async waitForEmbeddingRetry(delayMs: number, action: string): Promise { + const waitMs = Math.min( + EMBEDDING_RETRY_MAX_DELAY_MS, + Math.round(delayMs * (1 + Math.random() * 0.2)), + ); + log.warn(`memory embeddings rate limited; ${action} in ${waitMs}ms`); + await new Promise((resolve) => setTimeout(resolve, waitMs)); + } + private isRetryableEmbeddingError(message: string): boolean { return /(rate[_ ]limit|too many requests|429|resource has been exhausted|5\d\d|cloudflare|tokens per day)/i.test( message,