{"record":{"id":"812c237cc7087140","repo":"ruvnet/ruflo","slug":"ipfs-rate-limited-on-gateway-trying-next","errorCode":null,"errorMessage":"[IPFS] Rate limited on ${gateway}, trying next...","messagePattern":"\\[IPFS\\] Rate limited on (.+?), trying next\\.\\.\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"v3/@claude-flow/cli/src/transfer/ipfs/client.ts","lineNumber":168,"sourceCode":"        signal: AbortSignal.timeout(30000),\n        headers: {\n          'Accept': 'application/json',\n          'Cache-Control': 'max-age=3600',\n        },\n      });\n\n      if (response.ok) {\n        const data = await response.json() as T;\n        const latency = Date.now() - startTime;\n        console.log(`[IPFS] Fetched ${cid} from ${gateway} (${latency}ms)`);\n        return data;\n      }\n\n      // Handle specific error codes\n      if (response.status === 504) {\n        console.warn(`[IPFS] Gateway timeout on ${gateway}, trying next...`);\n      } else if (response.status === 429) {\n        console.warn(`[IPFS] Rate limited on ${gateway}, trying next...`);\n      }\n    } catch (error) {\n      const errorMsg = error instanceof Error ? error.message : String(error);\n      console.warn(`[IPFS] Gateway ${gateway} failed: ${errorMsg}`);\n      continue;\n    }\n  }\n\n  console.warn(`[IPFS] Fetch failed for ${cid} on all gateways`);\n  return null;\n}\n\n/**\n * Fetch with full result metadata\n */\nexport async function fetchFromIPFSWithMetadata<T>(\n  cid: string,\n  preferredGateway?: string","sourceCodeStart":150,"sourceCodeEnd":186,"githubUrl":"https://github.com/ruvnet/ruflo/blob/fa13ee4ad60ac2090b1480656eb233521790d640/v3/@claude-flow/cli/src/transfer/ipfs/client.ts#L150-L186","documentation":"Log warning in fetchFromIPFS: the gateway answered HTTP 429 (rate limited); the code moves on to the next gateway in the rotation for this CID.","triggerScenarios":"Thrown at v3/@claude-flow/cli/src/transfer/ipfs/client.ts:168 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["No action needed if a later gateway succeeds; persistent rate limiting means adding an authenticated/paid gateway or reducing request rate."],"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"}