{"record":{"id":"a65f4bfbf6e9bc94","repo":"thanos-io/thanos","slug":"get-parquet-metadata-file-v","errorCode":null,"errorMessage":"get parquet metadata file: %v","messagePattern":"get parquet metadata file: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/block/fetcher.go","lineNumber":1231,"sourceCode":"\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif _, ok := fullyCoveredDays[day]; !ok {\n\t\t\t\tcanDelete = false\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif canDelete {\n\t\t\tresult[b.id] = struct{}{}\n\t\t}\n\t}\n\treturn result\n}\n\nfunc (f *IgnoreParquetConvertedBlocksFilter) readMigratedBlocksFromParquetMetadata(ctx context.Context, path string) (map[ulid.ULID]struct{}, error) {\n\tmigratedBlocks := make(map[ulid.ULID]struct{})\n\tr, err := f.bkt.Get(ctx, path)\n\tif err != nil {\n\t\treturn nil, errors.Wrapf(err, \"get parquet metadata file: %v\", path)\n\t}\n\tdefer runutil.CloseWithLogOnErr(f.logger, r, \"close bkt get\")\n\n\tcontent, err := io.ReadAll(r)\n\tif err != nil {\n\t\treturn nil, errors.Wrapf(err, \"read parquet metadata file: %v\", path)\n\t}\n\n\tvar fc easyproto.FieldContext\n\tfor len(content) > 0 {\n\t\tcontent, err = fc.NextField(content)\n\t\tif err != nil {\n\t\t\treturn nil, errors.Wrapf(err, \"read next field from parquet metadata file: %v\", path)\n\t\t}\n\t\tswitch fc.FieldNum {\n\t\tcase 6:\n\t\t\tu, ok := fc.String()\n\t\t\tif !ok {","sourceCodeStart":1213,"sourceCodeEnd":1249,"githubUrl":"https://github.com/thanos-io/thanos/blob/35b8b991177def87ed52dcf10f9b6d87f07282c8/pkg/block/fetcher.go#L1213-L1249","documentation":"Error wrapping a failed objstore bucket Get of a parquet metadata file, including the object path. Occurs inside readMigratedBlocksFromParquetMetadata when the reader for the object cannot be obtained.","triggerScenarios":"f.bkt.Get(ctx, path) returns an error — object does not exist (deleted between listing and Get), permission denied, throttling, network failure, or bad bucket configuration.","commonSituations":"Converter deleted the metadata file mid-scan; IAM policy missing GetObject on the prefix; bucket throttling (S3 SlowDown) under concurrent workers.","solutions":["Check the wrapped inner error: NotFound means the file vanished — re-run the scan","Verify GetObject permissions on the parquet metadata prefix","Retry on 429/5xx; reduce worker concurrency if throttled","Confirm bucket endpoint/credentials are correct"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"ids, err := readMigrated(ctx, path)\nif err != nil {\n    if bkt.IsObjNotFoundErr(err) { return nil, nil /* file vanished; skip */ }\n    return retry.WithBackoff(ctx, func() error { _, err = readMigrated(ctx, path); return err }, 3)\n}","preventionTips":["Check IsObjNotFoundErr to skip files deleted mid-scan","Grant GetObject on the whole metadata prefix","Back off on 429/503 instead of failing fast","Validate bucket config at startup"],"tags":["object-storage","get-object","parquet"],"backgroundTag":"resource-not-found","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"}