thanos-io/thanos · error

meta fetcher

Error message

meta fetcher

What it means

block.NewMetaFetcher failed to assemble the metadata fetch pipeline (concurrency, bucket, lister, filters). Usually caused by invalid arguments such as non-positive concurrency or a nil bucket/lister.

Solutions

  1. Check block meta fetch concurrency flag is >0
  2. Verify bucket and block lister were created successfully
  3. Review filter setup order
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at cmd/thanos/store.go:408 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of thanos-io/thanos@35b8b99117 (2026-09-07). Data as JSON: /api/errors/2b01258d97304772. Report an issue: GitHub.

Appendix: source

Thrown at cmd/thanos/store.go:408

	default:
		return errors.Errorf("unknown sync strategy %s", conf.blockListStrategy)
	}
	ignoreDeletionMarkFilter := block.NewIgnoreDeletionMarkFilter(logger, insBkt, time.Duration(conf.ignoreDeletionMarksDelay), conf.blockMetaFetchConcurrency)
	parquetConvertedBlocksFilter, err := block.NewIgnoreParquetConvertedBlocksFilter(logger, parquetBktConfigYaml, conf.blockMetaFetchConcurrency, extprom.WrapRegistererWithPrefix("thanos_", reg))
	if err != nil {
		return errors.Wrap(err, "create parquet converted blocks filter")
	}
	metaFetcher, err := block.NewMetaFetcher(logger, conf.blockMetaFetchConcurrency, insBkt, blockLister, dataDir, extprom.WrapRegistererWithPrefix("thanos_", reg),
		[]block.MetadataFilter{
			parquetConvertedBlocksFilter,
			block.NewTimePartitionMetaFilter(conf.filterConf.MinTime, conf.filterConf.MaxTime),
			block.NewLabelShardedMetaFilter(relabelConfig),
			block.NewConsistencyDelayMetaFilter(logger, time.Duration(conf.consistencyDelay), extprom.WrapRegistererWithPrefix("thanos_", reg)),
			ignoreDeletionMarkFilter,
			block.NewDeduplicateFilter(conf.blockMetaFetchConcurrency),
		})
	if err != nil {
		return errors.Wrap(err, "meta fetcher")
	}

	// Limit the concurrency on queries against the Thanos store.
	if conf.maxConcurrency < 0 {
		return errors.Errorf("max concurrency value cannot be lower than 0 (got %v)", conf.maxConcurrency)
	}

	queriesGate := gate.New(extprom.WrapRegistererWithPrefix("thanos_bucket_store_series_", reg), int(conf.maxConcurrency), gate.Queries)

	chunkPool, err := store.NewDefaultChunkBytesPool(uint64(conf.chunkPoolSize))
	if err != nil {
		return errors.Wrap(err, "create chunk pool")
	}

	options := []store.BucketStoreOption{
		store.WithLogger(logger),
		store.WithRequestLoggerFunc(func(ctx context.Context, logger log.Logger) log.Logger {
			reqID, ok := middleware.RequestIDFromContext(ctx)

View on GitHub (pinned to 35b8b99117)