{"record":{"id":"e5d65a6e47e1abe6","repo":"thanos-io/thanos","slug":"failed-to-receive-any-data-in-s-from-s","errorCode":null,"errorMessage":"failed to receive any data in %s from %s","messagePattern":"failed to receive any data in (.+?) from (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/store/proxy_merge.go","lineNumber":489,"sourceCode":"\t\t\t}\n\n\t\t\tresp, err := cl.Recv()\n\t\t\tif err != nil {\n\t\t\t\tif err == io.EOF {\n\t\t\t\t\tl.bufferedResponsesMtx.Lock()\n\t\t\t\t\tl.noMoreData = true\n\t\t\t\t\tl.dataOrFinishEvent.Signal()\n\t\t\t\t\tl.bufferedResponsesMtx.Unlock()\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tvar rerr error\n\t\t\t\t// If timer is already stopped\n\t\t\t\tif t != nil && !t.Stop() {\n\t\t\t\t\tif t.C != nil {\n\t\t\t\t\t\t<-t.C // Drain the channel if it was already stopped.\n\t\t\t\t\t}\n\t\t\t\t\trerr = errors.Wrapf(err, \"failed to receive any data in %s from %s\", l.frameTimeout, st)\n\t\t\t\t} else {\n\t\t\t\t\trerr = errors.Wrapf(err, \"receive series from %s\", st)\n\t\t\t\t}\n\t\t\t\tl.bufferedResponsesMtx.Lock()\n\t\t\t\tl.rb.append(storepb.NewWarnSeriesResponse(rerr))\n\t\t\t\tl.noMoreData = true\n\t\t\t\tl.dataOrFinishEvent.Signal()\n\t\t\t\tl.bufferedResponsesMtx.Unlock()\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif t != nil {\n\t\t\t\t// frameTimeout only applies to cl.Recv() gRPC call because the goroutine may be blocked on waiting for an empty buffer slot.\n\t\t\t\t// Set the timeout to the largest possible value to avoid triggering it.\n\t\t\t\tt.Reset(time.Duration(math.MaxInt64))\n\t\t\t}\n\n\t\t\tnumResponses++\n\t\t\tbytesProcessed += resp.Size()","sourceCodeStart":471,"sourceCodeEnd":507,"githubUrl":"https://github.com/thanos-io/thanos/blob/35b8b991177def87ed52dcf10f9b6d87f07282c8/pkg/store/proxy_merge.go#L471-L507","documentation":"The lazy series receiver got a Recv error from a store AND the frame-timeout watchdog timer had already fired, meaning no data frame arrived from that store within frameTimeout. It indicates a stalled or too-slow store stream rather than an immediate RPC failure; the wrapped error is reported as a warning under partial-response mode.","triggerScenarios":"Thrown at pkg/store/proxy_merge.go:489 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Increase the store API client frame timeout on the querier","Check the failing store for CPU/IO saturation or slow object-store reads","Check network latency between query and store components","Rerun the query when the store is less loaded; rely on partial responses meanwhile"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"35b8b991177def87ed52dcf10f9b6d87f07282c8","analyzedAt":"2026-09-07T01:49:59.689Z","contentChangedAt":"2026-09-07T01:49:59.689Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}