weaviate/weaviate · error
change-tokenization requires exactly one property
Error message
change-tokenization requires exactly one property
What it means
Raised while rebuilding recovery tasks for an in-flight reindex discovered after a restart. The persisted migration payload has ReindexTypeChangeTokenization but its Properties list does not contain exactly one entry; retokenization is inherently single-property, so the recorded task is malformed and recovery aborts.
Source
Thrown at adapters/repos/db/reindex_recovery.go:250
}
case ReindexTypeEnableRangeable, ReindexTypeRepairRangeable:
raw = []*ShardReindexTaskGeneric{
NewRuntimeFilterableToRangeableTask(logger, schemaManager, payload.Properties, payload.Collection, generation),
}
case ReindexTypeEnableFilterable:
raw = []*ShardReindexTaskGeneric{
NewRuntimeEnableFilterableTask(logger, payload.Properties, payload.Collection, generation),
}
case ReindexTypeEnableSearchable:
if payload.TargetTokenization == "" {
return nil, fmt.Errorf("%s requires targetTokenization", payload.MigrationType)
}
raw = []*ShardReindexTaskGeneric{
NewRuntimeEnableSearchableTask(logger, payload.Properties, payload.Collection, payload.TargetTokenization, generation),
}
case ReindexTypeChangeTokenization:
if len(payload.Properties) != 1 {
return nil, fmt.Errorf("change-tokenization requires exactly one property")
}
if payload.TargetTokenization == "" {
return nil, fmt.Errorf("change-tokenization requires targetTokenization")
}
if payload.BucketStrategy == "" {
return nil, fmt.Errorf("change-tokenization requires bucketStrategy")
}
propName := payload.Properties[0]
raw = []*ShardReindexTaskGeneric{
NewRuntimeSearchableRetokenizeTask(
logger, propName, payload.TargetTokenization,
payload.Collection, payload.BucketStrategy, payload.Collection,
generation,
),
NewRuntimeFilterableRetokenizeTask(
logger,
propName, payload.TargetTokenization,
payload.Collection, payload.Collection,View on GitHub (pinned to 75aa4b6d11)
Solutions
- Re-issue the change-tokenization migration scoped to a single property.
- Discard the malformed recovery record; shard data is unaffected.
- Validate payload cardinality when the record is first persisted.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at adapters/repos/db/reindex_recovery.go:250 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of weaviate/weaviate@75aa4b6d11 (2026-09-04).
Data as JSON: /api/errors/5b76b561558be33c.
Report an issue: GitHub.