thanos-io/thanos · error

unknown sync strategy

Error message

unknown sync strategy %s

What it means

A switch-default guard on syncStrategy(conf.blockListStrategy): the value of --store.block-list-strategy is not one of the known strategies (concurrent or recursive). It fires purely from an invalid CLI flag value; no I/O is involved.

Solutions

  1. Use --store.block-list-strategy=concurrent-discovery or recursive-discovery
  2. Check the flag for typos
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at cmd/thanos/store.go:391 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/d46d7df356c1fb77. Report an issue: GitHub.

Appendix: source

Thrown at cmd/thanos/store.go:391

		return errors.Wrap(err, "create index cache")
	}

	var matchersCache = storecache.NoopMatchersCache
	if conf.matcherCacheSize > 0 {
		matchersCache, err = storecache.NewMatchersCache(storecache.WithSize(conf.matcherCacheSize), storecache.WithPromRegistry(reg))
		if err != nil {
			return errors.Wrap(err, "failed to create matchers cache")
		}
	}

	var blockLister block.Lister
	switch syncStrategy(conf.blockListStrategy) {
	case concurrentDiscovery:
		blockLister = block.NewConcurrentLister(logger, insBkt)
	case recursiveDiscovery:
		blockLister = block.NewRecursiveLister(logger, insBkt)
	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")
	}

View on GitHub (pinned to 35b8b99117)