{"record":{"id":"f545e18a6ced285c","repo":"ruvnet/ruflo","slug":"max-retries-exceeded","errorCode":null,"errorMessage":"Max retries exceeded","messagePattern":"Max retries exceeded","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"v3/@claude-flow/embeddings/src/embedding-service.ts","lineNumber":364,"sourceCode":"        if (!response.ok) {\n          const error = await response.text();\n          throw new Error(`OpenAI API error: ${response.status} - ${error}`);\n        }\n\n        return await response.json() as {\n          data: Array<{ embedding: number[] }>;\n          usage?: { prompt_tokens: number; total_tokens: number };\n        };\n      } catch (error) {\n        if (attempt === this.maxRetries - 1) {\n          throw error;\n        }\n        // Exponential backoff\n        await new Promise(resolve => setTimeout(resolve, Math.pow(2, attempt) * 100));\n      }\n    }\n\n    throw new Error('Max retries exceeded');\n  }\n}\n\n// ============================================================================\n// Transformers.js Embedding Service\n// ============================================================================\n\nexport class TransformersEmbeddingService extends BaseEmbeddingService {\n  readonly provider: EmbeddingProvider = 'transformers';\n  private pipeline: any = null;\n  private readonly modelName: string;\n  private initialized = false;\n\n  constructor(config: TransformersEmbeddingConfig) {\n    super(config);\n    this.modelName = config.model ?? 'Xenova/all-MiniLM-L6-v2';\n  }\n","sourceCodeStart":346,"sourceCodeEnd":382,"githubUrl":"https://github.com/ruvnet/ruflo/blob/fa13ee4ad60ac2090b1480656eb233521790d640/v3/@claude-flow/embeddings/src/embedding-service.ts#L346-L382","documentation":"Thrown when the OpenAI embedding request exhausts all retries. Defense: retry only on transient statuses with backoff, cap attempts, and surface the last underlying error so callers can distinguish quota from outage.","triggerScenarios":"Thrown at v3/@claude-flow/embeddings/src/embedding-service.ts:364 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Fix the underlying API error (auth, quota, model name) before retrying; retries do not help deterministic failures.","Increase maxRetries or backoff for transient rate limits, and honor Retry-After headers.","Fall back to another embedding provider (transformers or agentic-flow) when OpenAI stays unavailable."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fa13ee4ad60ac2090b1480656eb233521790d640","analyzedAt":"2026-08-18T21:34:22.708Z","contentChangedAt":"2026-08-18T21:34:22.708Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}