thanos-io/thanos · error
nothing to verify. No verifiers and verifierRepairers…
Error message
nothing to verify. No verifiers and verifierRepairers registered
What it means
Manager.Verify requires at least one Verifier or VerifierRepairer to be registered; otherwise it returns this error because there would be nothing to run against the bucket. It is a guard against a misconfigured verify run.
Solutions
- Run verify without --id to use all registered issues, or pass at least one valid issue ID
- Check which issue IDs your build supports and register them in the Registry
- In custom code, ensure the Registry passed to NewManager contains verifiers
Example fix
// before
n.VerifierRepairers = nil // all filtered out
// after
if len(m.vs.Verifiers)+len(m.vs.VerifierRepairers) == 0 {
return errors.New("nothing to verify. No verifiers and verifierRepairers registered")
} Defensive patterns
Strategy: validation
Validate before calling
if len(registry.Verifiers)+len(registry.VerifierRepairers) == 0 {
return errors.New("no verifiers registered; check --id or build support")
} Try / catch
if err := manager.Verify(ctx, matcher); err != nil {
if strings.Contains(err.Error(), "nothing to verify") {
// rerun without --id or with valid issue IDs
}
} Prevention
- Call Verify only with a non-empty registry
- Don't filter --id down to zero valid entries
- Register all supported issues in custom setups
When it happens
Trigger: Calling Manager.Verify (thanos verify command) when the provided verifier registry (built from --id selection or supported issues) contains zero Verifiers and zero VerifierRepairers — e.g. SubstractByIDs removed all, or no issues supported/enabled.
Common situations: Passing only unknown IDs (after fixing the no-such-issue error, the filtered set became empty); running a verify build with all issues unsupported; wiring a Registry with no verifiers in custom code.
Understand the failure class
Background: EmptyResultError / "no results found": when an API or scraper succeeds but returns zero rows — this error's family across 9 libraries.
Related errors
- raw resolution must be higher than the minimum block size…
- 5m resolution retention must be higher than the minimum…
- building gRPC client
- preparing command failed
- --receive.lazy-retrieval-max-buffered-responses must be > 0
AI-assisted analysis of thanos-io/thanos@35b8b99117 (2026-09-07).
Data as JSON: /api/errors/f074ca2ce6599ad5.
Report an issue: GitHub.
Appendix: source
Thrown at pkg/verifier/verify.go:135
return &Manager{
Context: Context{
Logger: logger,
Bkt: bkt,
BackupBkt: backupBkt,
Fetcher: fetcher,
DeleteDelay: deleteDelay,
metrics: newVerifierMetrics(reg),
},
vs: vs,
}
}
// Verify verifies matching blocks using registered list of Verifier and VerifierRepairer.
// TODO(blotka): Wrap bucket with WrapWithMetrics and print metrics after each issue (e.g how many blocks where touched).
func (m *Manager) Verify(ctx context.Context, idMatcher func(ulid.ULID) bool) error {
if len(m.vs.Verifiers)+len(m.vs.VerifierRepairers) == 0 {
return errors.New("nothing to verify. No verifiers and verifierRepairers registered")
}
logger := log.With(m.Logger, "verifiers", strings.Join(append(m.vs.VerifiersIDs(), m.vs.VerifierRepairersIDs()...), ","))
level.Info(logger).Log("msg", "Starting verify task")
for _, v := range m.vs.Verifiers {
vCtx := m.Context
vCtx.Logger = log.With(logger, "verifier", v.IssueID())
vCtx.Context = ctx
if err := v.Verify(vCtx, idMatcher); err != nil {
return errors.Wrapf(err, "verify %s", v.IssueID())
}
}
for _, vr := range m.vs.VerifierRepairers {
vCtx := m.Context
vCtx.Context = ctx
vCtx.Logger = log.With(logger, "verifier", vr.IssueID())
if err := vr.VerifyRepair(vCtx, idMatcher, false); err != nil {View on GitHub (pinned to 35b8b99117)