{"record":{"id":"8e171a811256139e","repo":"thanos-io/thanos","slug":"get-range-part-v","errorCode":null,"errorMessage":"get range part %v","messagePattern":"get range part (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/block/indexheader/parallel_bucket.go","lineNumber":76,"sourceCode":"\t\t\t// Partial partition\n\t\t\tl = length - (int64(partId) * b.partitionSize)\n\t\t}\n\n\t\tpartOff := o\n\t\tpartLength := l\n\t\tpart, err := b.createPart(partFilePrefix, partId, int(partLength))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tparts = append(parts, part)\n\n\t\t// Assign partId to another variable to avoid modifying\n\t\t// `partId` concurrently in multiple goroutines.\n\t\tidx := partId\n\t\tg.Go(func() error {\n\t\t\trc, err := b.BucketReader.GetRange(gctx, name, partOff, partLength)\n\t\t\tif err != nil {\n\t\t\t\treturn errors.Wrap(err, fmt.Sprintf(\"get range part %v\", idx))\n\t\t\t}\n\t\t\tdefer runutil.CloseWithErrCapture(&err, rc, \"close object\")\n\t\t\tif _, err := io.Copy(part, rc); err != nil {\n\t\t\t\treturn errors.Wrap(err, fmt.Sprintf(\"get range part %v\", idx))\n\t\t\t}\n\t\t\treturn part.Flush()\n\t\t})\n\t\tpartId += 1\n\t}\n\n\tif err := g.Wait(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn newPartMerger(parts), nil\n}\n\nfunc (b *parallelBucketReader) createPart(partFilePrefix string, partId int, size int) (Part, error) {\n\tif b.tmpDir == \"\" {","sourceCodeStart":58,"sourceCodeEnd":94,"githubUrl":"https://github.com/thanos-io/thanos/blob/35b8b991177def87ed52dcf10f9b6d87f07282c8/pkg/block/indexheader/parallel_bucket.go#L58-L94","documentation":"Wraps BucketReader.GetRange inside the parallel index-header part download: reading one byte range of the index file from object storage failed while assembling the header's parts concurrently. The failing part index is included to locate which goroutine's fetch failed.","triggerScenarios":"Thrown at pkg/block/indexheader/parallel_bucket.go:76 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry the read; ranged reads can fail transiently","Check object store availability and limits","Reduce parallelism if hitting rate limits"],"exampleFix":null,"handlingStrategy":"retry","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"}