{"record":{"id":"fcdb1584cc145222","repo":"vercel/next.js","slug":"label-warmup-all-batchsize-requests-faile","errorCode":null,"errorMessage":"[${label}] warmup: all ${batchSize} requests failed — server is not serving this route","messagePattern":"\\[(.+?)\\] warmup: all (.+?) requests failed — server is not serving this route","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"bench/render-pipeline/benchmark.ts","lineNumber":615,"sourceCode":"  batchSize: number,\n  untilStable: boolean,\n  timeoutMs: number,\n  label: string\n): Promise<number> {\n  const maxBatches = 10\n  const stabilityThreshold = 0.05\n  let totalRequests = 0\n  let prevMean = Infinity\n\n  for (let batch = 0; batch < (untilStable ? maxBatches : 1); batch++) {\n    const { samples, errors } = await runSerialRequests(\n      url,\n      batchSize,\n      timeoutMs\n    )\n    totalRequests += batchSize\n    if (samples.length === 0) {\n      throw new Error(\n        `[${label}] warmup: all ${batchSize} requests failed — server is not serving this route`\n      )\n    }\n    if (errors > 0) {\n      console.warn(`[${label}] warmup: ${errors}/${batchSize} requests failed`)\n    }\n    const mean = samples.reduce((s, v) => s + v.totalMs, 0) / samples.length\n\n    if (untilStable && batch > 0) {\n      const delta = Math.abs(mean - prevMean) / prevMean\n      if (delta < stabilityThreshold) {\n        console.log(\n          `[${label}] warmup stabilized after ${totalRequests} requests ` +\n            `(batch ${batch + 1}, delta=${(delta * 100).toFixed(1)}%)`\n        )\n        return totalRequests\n      }\n    }","sourceCodeStart":597,"sourceCodeEnd":633,"githubUrl":"https://github.com/vercel/next.js/blob/0ae8c72462952df163f1b1e0726641bc5b40dc93/bench/render-pipeline/benchmark.ts#L597-L633","documentation":"Thrown during the warmup phase of the render-pipeline benchmark when an entire serial batch of requests produced zero successful samples. Because warmup drives real requests and collects timing samples, a fully-empty result set means every request threw or returned a non-2xx/timeout, so the server is definitively not serving that route. Aborting here is intentional — continuing would benchmark connection errors instead of render performance.","triggerScenarios":"The route URL is wrong or returns 404/500 for every request; the server crashed between routes; a firewall or proxy rejects the loopback connection; the route requires params or auth that were not provided; the server is a stale process serving an older build without that route.","commonSituations":"Switching branches and forgetting to rebuild the fixture so the new route does not exist; pointing at a port running a different app; a dynamic route like /[slug] hit with the bare path; SSL/TLS mismatch on the benchmark URL.","solutions":["curl the exact warmup URL manually and confirm a 200 with App Router HTML.","Rebuild the fixture app (next build) if you changed routes or switched branches.","Check the server process is the one you expect on that port (lsof -i :PORT).","Verify the route path matches an actual app/ route including dynamic segments and params."],"exampleFix":"// before: route missing from current build\n// server built from old branch without /dashboard\n\n// after: rebuild then run\npnpm --filter=next build && pnpm bench:render-pipeline","handlingStrategy":"validation","validationCode":"// Probe the route returns 2xx App Router HTML before warmup\nasync function assertRouteServed(url: string) {\n  const res = await fetch(url, { cache: 'no-store' })\n  if (!res.ok) throw new Error(`${url} returned ${res.status}`)\n  const html = await res.text()\n  if (!html.includes('__next_f')) throw new Error(`${url} is not App Router`)\n}","typeGuard":"null","tryCatchPattern":"null","preventionTips":["Always rebuild the fixture after route/branch changes.","Confirm the server process and port are the intended ones before benchmarking.","Pre-warm with a single curl to catch 404/500 early."],"tags":["benchmark","network","server","warmup"],"analyzedSha":"0ae8c72462952df163f1b1e0726641bc5b40dc93","analyzedAt":"2026-08-06T19:44:29.143Z","schemaVersion":2},"datasetVersion":"2026-08-07T02:17:10.218Z"}