{"record":{"id":"a91d630167bf4550","repo":"thanos-io/thanos","slug":"meta-json-file-exists-v","errorCode":null,"errorMessage":"meta.json file exists: %v","messagePattern":"meta\\.json file exists: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/block/fetcher.go","lineNumber":285,"sourceCode":"\tconst concurrency = 64\n\n\tpartialBlocks = make(map[ulid.ULID]bool)\n\n\tvar (\n\t\tmetaChan = make(chan ulid.ULID, concurrency)\n\t\teg, gCtx = errgroup.WithContext(ctx)\n\t\tmu       sync.Mutex\n\t)\n\tfor range concurrency {\n\t\teg.Go(func() error {\n\t\t\tfor uid := range metaChan {\n\t\t\t\t// TODO(bwplotka): If that causes problems (obj store rate limits), add longer ttl to cached items.\n\t\t\t\t// For 1y and 100 block sources this generates ~1.5-3k HEAD RPM. AWS handles 330k RPM per prefix.\n\t\t\t\t// TODO(bwplotka): Consider filtering by consistency delay here (can't do until compactor healthyOverride work).\n\t\t\t\tmetaFile := path.Join(uid.String(), MetaFilename)\n\t\t\t\tok, err := f.bkt.Exists(gCtx, metaFile)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn errors.Wrapf(err, \"meta.json file exists: %v\", uid)\n\t\t\t\t}\n\t\t\t\tif !ok {\n\t\t\t\t\tmu.Lock()\n\t\t\t\t\tpartialBlocks[uid] = true\n\t\t\t\t\tmu.Unlock()\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tselect {\n\t\t\t\tcase <-gCtx.Done():\n\t\t\t\t\treturn gCtx.Err()\n\t\t\t\tcase activeBlocks <- ActiveBlockFetchData{\n\t\t\t\t\tULID:         uid,\n\t\t\t\t\tlastModified: time.Time{}, // Not used, cache busting is only implemented by the recursive lister because otherwise we would have to call Attributes() (one extra call).\n\t\t\t\t}:\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn nil","sourceCodeStart":267,"sourceCodeEnd":303,"githubUrl":"https://github.com/thanos-io/thanos/blob/35b8b991177def87ed52dcf10f9b6d87f07282c8/pkg/block/fetcher.go#L267-L303","documentation":"In the meta fetcher's partial-upload detection, a candidate meta.json read exceeded the allowed size and is flagged: 'meta.json file exists: %v'. Fires when a block has an oversized or unexpected meta.json, marking it partial/invalid.","triggerScenarios":"Thrown at pkg/block/fetcher.go:285 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inspect the block's meta.json in the bucket","Let partial-block cleanup remove the malformed block","Check for interrupted uploads"],"exampleFix":null,"handlingStrategy":"type-guard","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"}