thanos-io/thanos · error
nothing to verify. No verifierRepairers registered
Error message
nothing to verify. No verifierRepairers registered
What it means
VerifyAndRepair refused to run because no VerifierRepairers are registered in the verifier set — an empty tool configuration, not a bucket problem. The guard fires before any bucket access, telling the operator to pass the --repair or verifier flags that register repairable issues.
Solutions
- Register at least one verifier-repairer via the verify/repair CLI flags
- Check the verifier manager construction to ensure the desired repairers are enabled
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at pkg/verifier/verify.go:166 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/85f3a2a10fc2e86e.
Report an issue: GitHub.
Appendix: source
Thrown at pkg/verifier/verify.go:166
}
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 {
return errors.Wrapf(err, "verify %s", vr.IssueID())
}
}
level.Info(logger).Log("msg", "verify task completed")
return nil
}
// VerifyAndRepair verifies and repairs matching blocks using registered list of VerifierRepairer.
// TODO(blotka): Wrap bucket with WrapWithMetrics and print metrics after each issue (e.g how many blocks where touched).
func (m *Manager) VerifyAndRepair(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 verifierRepairers registered")
}
logger := log.With(m.Logger, "verifiers", strings.Join(m.vs.VerifierRepairersIDs(), ","))
level.Warn(logger).Log("msg", "GLOBAL COMPACTOR SHOULD __NOT__ BE RUNNING ON THE SAME BUCKET")
level.Info(logger).Log("msg", "Starting verify and repair task")
for _, vr := range m.vs.VerifierRepairers {
vCtx := m.Context
vCtx.Logger = log.With(logger, "verifier", vr.IssueID())
vCtx.Context = ctx
if err := vr.VerifyRepair(vCtx, idMatcher, true); err != nil {
return errors.Wrapf(err, "verify and repair %s", vr.IssueID())
}
}
level.Info(logger).Log("msg", "verify and repair task completed")
return nil
}View on GitHub (pinned to 35b8b99117)