mirror of https://github.com/openclaw/openclaw.git
refactor: share embedding retry waits
This commit is contained in:
parent
da1ec45505
commit
d904f37f1c
|
|
@ -548,12 +548,7 @@ export abstract class MemoryManagerEmbeddingOps extends MemoryManagerSyncOps {
|
||||||
if (!this.isRetryableEmbeddingError(message) || attempt >= EMBEDDING_RETRY_MAX_ATTEMPTS) {
|
if (!this.isRetryableEmbeddingError(message) || attempt >= EMBEDDING_RETRY_MAX_ATTEMPTS) {
|
||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
const waitMs = Math.min(
|
await this.waitForEmbeddingRetry(delayMs, "retrying");
|
||||||
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));
|
|
||||||
delayMs *= 2;
|
delayMs *= 2;
|
||||||
attempt += 1;
|
attempt += 1;
|
||||||
}
|
}
|
||||||
|
|
@ -587,18 +582,22 @@ export abstract class MemoryManagerEmbeddingOps extends MemoryManagerSyncOps {
|
||||||
if (!this.isRetryableEmbeddingError(message) || attempt >= EMBEDDING_RETRY_MAX_ATTEMPTS) {
|
if (!this.isRetryableEmbeddingError(message) || attempt >= EMBEDDING_RETRY_MAX_ATTEMPTS) {
|
||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
const waitMs = Math.min(
|
await this.waitForEmbeddingRetry(delayMs, "retrying structured batch");
|
||||||
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));
|
|
||||||
delayMs *= 2;
|
delayMs *= 2;
|
||||||
attempt += 1;
|
attempt += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async waitForEmbeddingRetry(delayMs: number, action: string): Promise<void> {
|
||||||
|
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 {
|
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(
|
return /(rate[_ ]limit|too many requests|429|resource has been exhausted|5\d\d|cloudflare|tokens per day)/i.test(
|
||||||
message,
|
message,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue